Commit 7462a6be7ae7319ca59933993601f51708c8e6c7

Authored by Yarik
1 parent 229df284

Authority and contractor links

src/app/app.routes.ts
... ... @@ -33,7 +33,9 @@ const routes: Routes = [
33 33 {path: 'road-service', component: RoadServiceComponent},
34 34 {path: 'road-to-category', component: RoadToCategoryComponent},
35 35 {path: 'settlement-address-link', component: SettlementAddressLinkComponent},
  36 + {path: 'authority/:roadId', component: AuthorityComponent},
36 37 {path: 'authority', component: AuthorityComponent},
  38 + {path: 'contractor/:roadId', component: ContractorComponent},
37 39 {path: 'contractor', component: ContractorComponent},
38 40 {path: 'map', component: MapComponent},
39 41 ]},
... ...
src/app/data/authority/authority.component.ts
1   -import {Component, ViewEncapsulation, AfterViewInit, ViewChild} from '@angular/core';
  1 +import {Component, ViewEncapsulation, AfterViewInit, ViewChild, OnDestroy} from '@angular/core';
2 2 import {TdLoadingService} from '@covalent/core';
3 3  
4 4 import {StatementBase} from '../../../models/statement.base';
... ... @@ -9,6 +9,7 @@ import {RendererComponent} from '../../../helpers/renderer.component';
9 9 import {AuthorityCreateService} from '../../../services/authority-create.service';
10 10 import {RoadSelectList} from '../../../models/road-select-list';
11 11 import {CrossSectionSelectList} from "../../../models/cross-section-select-list";
  12 +import {ActivatedRoute} from "@angular/router";
12 13  
13 14 @Component({
14 15 // tslint:disable-next-line:component-selector
... ... @@ -17,13 +18,17 @@ import {CrossSectionSelectList} from "../../../models/cross-section-select-list"
17 18 styleUrls: ['authority.scss'],
18 19 encapsulation: ViewEncapsulation.None,
19 20 })
20   -export class AuthorityComponent extends StatementBase {
  21 +export class AuthorityComponent extends StatementBase implements OnDestroy {
21 22 public roads: RoadSelectList[];
22 23 public crosssections: CrossSectionSelectList[];
  24 + public roadId: string;
  25 + protected roadSub: any;
23 26  
24 27 constructor(protected service: AuthorityService,
25 28 protected dataService: AuthorityCreateService,
26   - protected loadingService: TdLoadingService,) {
  29 + protected loadingService: TdLoadingService,
  30 + protected route: ActivatedRoute
  31 + ) {
27 32 super();
28 33 }
29 34  
... ... @@ -107,13 +112,31 @@ export class AuthorityComponent extends StatementBase {
107 112 },
108 113 ];
109 114 }
110   -
111 115 protected initFunction(): void {
112 116 this.dataService.getModels().then((models: any) => {
113 117 this.roads = models.roadSelectListDsM as RoadSelectList[];
114 118 this.crosssections = models.crossSectionSelectListDsM as CrossSectionSelectList[];
115 119 }).then(() => {
116 120 this.bootstrapGrid();
  121 + this.filterRoad();
  122 + });
  123 + }
  124 + public ngOnDestroy() {
  125 + this.roadSub.unsubscribe();
  126 + }
  127 + protected filterRoad(): void {
  128 + this.roadSub = this.route.params.subscribe(params => {
  129 + this.roadId = params['roadId'];
117 130 });
  131 + if (this.roadId) {
  132 + setTimeout(() => {
  133 + let filter = this.gridOptions.api.getFilterInstance('roadId');
  134 + filter.setModel({
  135 + type: 'equals',
  136 + filter: this.roadId
  137 + });
  138 + this.gridOptions.api.onFilterChanged();
  139 + }, 0);
  140 + }
118 141 }
119 142 }
... ...
src/app/data/bus-stop/bus-stop.component.ts
1   -import { Component, ViewEncapsulation, AfterViewInit,ViewChild } from '@angular/core';
2   -import { TdLoadingService } from '@covalent/core';
3   -import { GridOptions, IGetRowsParams, IRowModel } from 'ag-grid/main';
  1 +import {Component, ViewEncapsulation, AfterViewInit, ViewChild} from '@angular/core';
  2 +import {TdLoadingService} from '@covalent/core';
  3 +import {GridOptions, IGetRowsParams, IRowModel} from 'ag-grid/main';
4 4  
5   -import { StatementBase } from '../../../models/statement.base';
  5 +import {StatementBase} from '../../../models/statement.base';
6 6  
7   -import { BusStopService } from '../../../services/bus-stop.service';
8   -import { BusStop } from '../../../models/bus-stop';
9   -import { EditorComponent } from '../../../helpers/editor.component';
10   -import { RendererComponent } from '../../../helpers/renderer.component';
11   -import { MapEditorComponent } from '../../../helpers/map-editor.component';
12   -import { MapRendererComponent } from '../../../helpers/map-renderer.component';
13   -import { BusStopCreateService } from '../../../services/bus-stop-create.service';
14   -import { BooleanSelectListService } from '../../../services/boolean-select-list.service';
15   -import { RegionSelectList } from '../../../models/region-select-list';
16   -import { StateCommonSelectList } from '../../../models/state-common-select-list';
17   -import { RoadSelectList } from '../../../models/road-select-list';
18   -import { BooleanSelectList } from '../../../models/boolean-select-list';
19   -import { SettlementSelectList } from '../../../models/settlement-select-list';
20   -import { SurfaceTypeSelectList } from '../../../models/surface-type-select-list';
21   -import { MapItemsComponent } from '../map-items/map-items.component';
22   -import { routerTransition } from '../../../animations/router.animation';
  7 +import {BusStopService} from '../../../services/bus-stop.service';
  8 +import {BusStop} from '../../../models/bus-stop';
  9 +import {EditorComponent} from '../../../helpers/editor.component';
  10 +import {RendererComponent} from '../../../helpers/renderer.component';
  11 +import {MapEditorComponent} from '../../../helpers/map-editor.component';
  12 +import {MapRendererComponent} from '../../../helpers/map-renderer.component';
  13 +import {BusStopCreateService} from '../../../services/bus-stop-create.service';
  14 +import {BooleanSelectListService} from '../../../services/boolean-select-list.service';
  15 +import {RegionSelectList} from '../../../models/region-select-list';
  16 +import {StateCommonSelectList} from '../../../models/state-common-select-list';
  17 +import {RoadSelectList} from '../../../models/road-select-list';
  18 +import {BooleanSelectList} from '../../../models/boolean-select-list';
  19 +import {SettlementSelectList} from '../../../models/settlement-select-list';
  20 +import {SurfaceTypeSelectList} from '../../../models/surface-type-select-list';
  21 +import {MapItemsComponent} from '../map-items/map-items.component';
  22 +import {routerTransition} from '../../../animations/router.animation';
23 23  
24 24 @Component({
25 25 // tslint:disable-next-line:component-selector
... ... @@ -37,187 +37,187 @@ export class BusStopComponent extends StatementBase {
37 37 public roads: RoadSelectList[];
38 38 public boolean: BooleanSelectList[];
39 39  
40   - constructor(
41   - protected service: BusStopService,
42   - protected dataService: BusStopCreateService,
43   - protected booleanService: BooleanSelectListService,
44   - protected loadingService: TdLoadingService,
45   - ) {
  40 + constructor(protected service: BusStopService,
  41 + protected dataService: BusStopCreateService,
  42 + protected booleanService: BooleanSelectListService,
  43 + protected loadingService: TdLoadingService,) {
46 44 super();
47 45 }
  46 +
48 47 public showOnMap(): void {
49 48 this.mapItems.showMap();
50 49 }
51   - protected createColumnDefs(): any[] {
52   - return [
53   - {
54   - headerName: '#',
55   - width: 30,
56   - checkboxSelection: true,
57   - suppressSorting: true,
58   - suppressMenu: true,
59   - pinned: true,
60   - },
61   - {
62   - headerName: 'ID',
63   - field: 'id',
64   - },
65   - {
66   - headerName: 'Назва дороги',
67   - field: 'roadId',
68   - editable: true,
69   - cellEditorFramework: EditorComponent,
70   - cellRendererFramework: RendererComponent,
71   - cellEditorParams: {
72   - data: this.roads,
73   - valueCol: 'roadId',
74   - labelCol: 'name',
75   - },
76   - },
77   - {
78   - headerName: 'Область',
79   - field: 'regionId',
80   - editable: true,
81   - cellEditorFramework: EditorComponent,
82   - cellRendererFramework: RendererComponent,
83   - cellEditorParams: {
84   - data: this.regions,
85   - valueCol: 'regionId',
86   - labelCol: 'name',
87   - },
88   - },
89   - {
90   - headerName: 'Місцезнаходження, км+ справа',
91   - field: 'locationRight',
92   - editable: true,
93   - },
94   - {
95   - headerName: 'Місцезнаходження, км+ зліва',
96   - field: 'locationLeft',
97   - editable: true,
98   - },
99   - {
100   - headerName: 'Тип покриття',
101   - field: 'surfaceTypeId',
102   - editable: true,
103   - cellEditorFramework: EditorComponent,
104   - cellRendererFramework: RendererComponent,
105   - cellEditorParams: {
106   - data: this.surfaceTypes,
107   - valueCol: 'surfaceTypeId',
108   - labelCol: 'name',
109   - },
110   - },
111   - {
112   - headerName: 'Технічний стан',
113   - field: 'stateCommonId',
114   - editable: true,
115   - cellEditorFramework: EditorComponent,
116   - cellRendererFramework: RendererComponent,
117   - cellEditorParams: {
118   - data: this.states,
119   - valueCol: 'stateCommonId',
120   - labelCol: 'value',
121   - },
122   - },
123   - {
124   - headerName: 'Наявність елементів зупин. майдан',
125   - field: 'areaStopAvailability',
126   - editable: true,
127   - cellEditorFramework: EditorComponent,
128   - cellRendererFramework: RendererComponent,
129   - cellEditorParams: {
130   - data: this.boolean,
131   - valueCol: 'value',
132   - labelCol: 'label',
133   - },
134   - },
135   - {
136   - headerName: 'Наявність елементів посад. майдан',
137   - field: 'areaLandAvailability',
138   - editable: true,
139   - cellEditorFramework: EditorComponent,
140   - cellRendererFramework: RendererComponent,
141   - cellEditorParams: {
142   - data: this.boolean,
143   - valueCol: 'value',
144   - labelCol: 'label',
145   - },
146   - },
147   - {
148   - headerName: 'Наявність елементів заїзна кишеня',
149   - field: 'pocketAvailability',
150   - editable: true,
151   - cellEditorFramework: EditorComponent,
152   - cellRendererFramework: RendererComponent,
153   - cellEditorParams: {
154   - data: this.boolean,
155   - valueCol: 'value',
156   - labelCol: 'label',
157   - },
158   - },
159   - {
160   - headerName: 'Наявність туалету',
161   - field: 'toiletAvailability',
162   - editable: true,
163   - cellEditorFramework: EditorComponent,
164   - cellRendererFramework: RendererComponent,
165   - cellEditorParams: {
166   - data: this.boolean,
167   - valueCol: 'value',
168   - labelCol: 'label',
169   - },
170   - },
171   - {
172   - headerName: 'Рік будівництва',
173   - field: 'yearBuild',
174   - editable: true,
175   - },
176   - {
177   - headerName: 'Рік ремонту',
178   - field: 'yearRepair',
179   - editable: true,
180   - },
181   - {
182   - headerName: 'position',
183   - field: 'position',
184   - editable: true,
185   - cellEditorFramework: MapEditorComponent,
186   - cellRendererFramework: MapRendererComponent,
187   - cellEditorParams: {
188   - position: 'position'
189   - },
190   - },
191   - ];
192   - }
193 50  
194   - protected initFunction(): void {
195   - this.booleanService.getModels().then((models: BooleanSelectList[]) => this.boolean = models);
196   - this.dataService.getModels().then((models: any) => {
  51 + protected createColumnDefs(): any[] {
  52 + return [
  53 + {
  54 + headerName: '#',
  55 + width: 30,
  56 + checkboxSelection: true,
  57 + suppressSorting: true,
  58 + suppressMenu: true,
  59 + pinned: true,
  60 + },
  61 + {
  62 + headerName: 'ID',
  63 + field: 'id',
  64 + },
  65 + {
  66 + headerName: 'Назва дороги',
  67 + field: 'roadId',
  68 + editable: true,
  69 + cellEditorFramework: EditorComponent,
  70 + cellRendererFramework: RendererComponent,
  71 + cellEditorParams: {
  72 + data: this.roads,
  73 + valueCol: 'roadId',
  74 + labelCol: 'name',
  75 + },
  76 + },
  77 + {
  78 + headerName: 'Область',
  79 + field: 'regionId',
  80 + editable: true,
  81 + cellEditorFramework: EditorComponent,
  82 + cellRendererFramework: RendererComponent,
  83 + cellEditorParams: {
  84 + data: this.regions,
  85 + valueCol: 'regionId',
  86 + labelCol: 'name',
  87 + },
  88 + },
  89 + {
  90 + headerName: 'Місцезнаходження, км+ справа',
  91 + field: 'locationRight',
  92 + editable: true,
  93 + },
  94 + {
  95 + headerName: 'Місцезнаходження, км+ зліва',
  96 + field: 'locationLeft',
  97 + editable: true,
  98 + },
  99 + {
  100 + headerName: 'Тип покриття',
  101 + field: 'surfaceTypeId',
  102 + editable: true,
  103 + cellEditorFramework: EditorComponent,
  104 + cellRendererFramework: RendererComponent,
  105 + cellEditorParams: {
  106 + data: this.surfaceTypes,
  107 + valueCol: 'surfaceTypeId',
  108 + labelCol: 'name',
  109 + },
  110 + },
  111 + {
  112 + headerName: 'Технічний стан',
  113 + field: 'stateCommonId',
  114 + editable: true,
  115 + cellEditorFramework: EditorComponent,
  116 + cellRendererFramework: RendererComponent,
  117 + cellEditorParams: {
  118 + data: this.states,
  119 + valueCol: 'stateCommonId',
  120 + labelCol: 'value',
  121 + },
  122 + },
  123 + {
  124 + headerName: 'Наявність елементів зупин. майдан',
  125 + field: 'areaStopAvailability',
  126 + editable: true,
  127 + cellEditorFramework: EditorComponent,
  128 + cellRendererFramework: RendererComponent,
  129 + cellEditorParams: {
  130 + data: this.boolean,
  131 + valueCol: 'value',
  132 + labelCol: 'label',
  133 + },
  134 + },
  135 + {
  136 + headerName: 'Наявність елементів посад. майдан',
  137 + field: 'areaLandAvailability',
  138 + editable: true,
  139 + cellEditorFramework: EditorComponent,
  140 + cellRendererFramework: RendererComponent,
  141 + cellEditorParams: {
  142 + data: this.boolean,
  143 + valueCol: 'value',
  144 + labelCol: 'label',
  145 + },
  146 + },
  147 + {
  148 + headerName: 'Наявність елементів заїзна кишеня',
  149 + field: 'pocketAvailability',
  150 + editable: true,
  151 + cellEditorFramework: EditorComponent,
  152 + cellRendererFramework: RendererComponent,
  153 + cellEditorParams: {
  154 + data: this.boolean,
  155 + valueCol: 'value',
  156 + labelCol: 'label',
  157 + },
  158 + },
  159 + {
  160 + headerName: 'Наявність туалету',
  161 + field: 'toiletAvailability',
  162 + editable: true,
  163 + cellEditorFramework: EditorComponent,
  164 + cellRendererFramework: RendererComponent,
  165 + cellEditorParams: {
  166 + data: this.boolean,
  167 + valueCol: 'value',
  168 + labelCol: 'label',
  169 + },
  170 + },
  171 + {
  172 + headerName: 'Рік будівництва',
  173 + field: 'yearBuild',
  174 + editable: true,
  175 + },
  176 + {
  177 + headerName: 'Рік ремонту',
  178 + field: 'yearRepair',
  179 + editable: true,
  180 + },
  181 + {
  182 + headerName: 'position',
  183 + field: 'position',
  184 + editable: true,
  185 + cellEditorFramework: MapEditorComponent,
  186 + cellRendererFramework: MapRendererComponent,
  187 + cellEditorParams: {
  188 + position: 'position'
  189 + },
  190 + },
  191 + ];
  192 + }
  193 +
  194 + protected initFunction(): void {
  195 + this.booleanService.getModels().then((models: BooleanSelectList[]) => this.boolean = models);
  196 + this.dataService.getModels().then((models: any) => {
197 197 this.regions = models.regionSelectListDsM as RegionSelectList[];
198 198 this.states = models.stateCommonSelectListDsM as StateCommonSelectList[];
199 199 this.surfaceTypes = models.surfaceTypeSelectListDsM as SurfaceTypeSelectList[];
200 200 this.settlements = models.settlementSelectListDsM as SettlementSelectList[];
201 201 this.roads = models.roadSelectListDsM as RoadSelectList[];
202   - }).then(() => {
  202 + }).then(() => {
203 203 this.bootstrapGrid();
204   - });
205   - }
  204 + });
  205 + }
206 206  
207   - protected onCellFocused($event: any): void {
208   - console.log($event);
209   - // let model = this.gridOptions.api.getModel();
210   - // let row = model.getRow($event.rowIndex);
211   - // console.log(row);
212   - // this.mapItems.refreshMap(row);
213   - }
  207 + protected onCellFocused($event: any): void {
  208 + console.log($event);
  209 + // let model = this.gridOptions.api.getModel();
  210 + // let row = model.getRow($event.rowIndex);
  211 + // console.log(row);
  212 + // this.mapItems.refreshMap(row);
  213 + }
214 214  
215   - protected onSelectionChanged() {
216   - console.log('onSelectionChanged');
217   - super.onSelectionChanged();
218   - let rows: IRowModel[] = this.gridOptions.api.getSelectedRows();
219   - console.log(rows);
220   - this.mapItems.refreshMap(rows);
221   - }
  215 + protected onSelectionChanged() {
  216 + console.log('onSelectionChanged');
  217 + super.onSelectionChanged();
  218 + let rows: IRowModel[] = this.gridOptions.api.getSelectedRows();
  219 + console.log(rows);
  220 + this.mapItems.refreshMap(rows);
  221 + }
222 222  
223 223 }
... ...
src/app/data/contractor/contractor.component.ts
... ... @@ -9,6 +9,7 @@ import {RendererComponent} from '../../../helpers/renderer.component';
9 9 import {ContractorCreateService} from '../../../services/contractor-create.service';
10 10 import {RoadSelectList} from '../../../models/road-select-list';
11 11 import {CrossSectionSelectList} from "../../../models/cross-section-select-list";
  12 +import {ActivatedRoute} from "@angular/router";
12 13  
13 14 @Component({
14 15 // tslint:disable-next-line:component-selector
... ... @@ -20,10 +21,14 @@ import {CrossSectionSelectList} from "../../../models/cross-section-select-list"
20 21 export class ContractorComponent extends StatementBase {
21 22 public roads: RoadSelectList[];
22 23 public crosssections: CrossSectionSelectList[];
  24 + public roadId: string;
  25 + protected roadSub: any;
23 26  
24 27 constructor(protected service: ContractorService,
25 28 protected dataService: ContractorCreateService,
26   - protected loadingService: TdLoadingService,) {
  29 + protected loadingService: TdLoadingService,
  30 + protected route: ActivatedRoute
  31 + ) {
27 32 super();
28 33 }
29 34  
... ... @@ -114,6 +119,25 @@ export class ContractorComponent extends StatementBase {
114 119 this.crosssections = models.crossSectionSelectListDsM as CrossSectionSelectList[];
115 120 }).then(() => {
116 121 this.bootstrapGrid();
  122 + this.filterRoad();
117 123 });
118 124 }
  125 + public ngOnDestroy() {
  126 + this.roadSub.unsubscribe();
  127 + }
  128 + protected filterRoad(): void {
  129 + this.roadSub = this.route.params.subscribe(params => {
  130 + this.roadId = params['roadId'];
  131 + });
  132 + if (this.roadId) {
  133 + setTimeout(() => {
  134 + let filter = this.gridOptions.api.getFilterInstance('roadId');
  135 + filter.setModel({
  136 + type: 'equals',
  137 + filter: this.roadId
  138 + });
  139 + this.gridOptions.api.onFilterChanged();
  140 + }, 0);
  141 + }
  142 + }
119 143 }
... ...
src/app/data/data.component.html
1 1 <td-layout-nav logo="assets:covalent">
2   - <div td-toolbar-content layout="row" layout-align="center center" flex>
3   - <span>Quickstart</span>
4   - <span flex></span>
5   - <a md-icon-button mdTooltip="Docs" href="https://teradata.github.io/covalent/" target="_blank">
6   - <md-icon>chrome_reader_mode</md-icon>
7   - </a>
8   - <a md-icon-button mdTooltip="Github" href="https://github.com/teradata/covalent" target="_blank">
9   - <md-icon svgIcon="assets:github"></md-icon>
10   - </a>
  2 + <div td-toolbar-content layout="row" layout-align="center center" flex>
  3 + <span>Quickstart</span>
  4 + <span flex></span>
  5 + <a md-icon-button mdTooltip="Docs" href="https://teradata.github.io/covalent/" target="_blank">
  6 + <md-icon>chrome_reader_mode</md-icon>
  7 + </a>
  8 + <a md-icon-button mdTooltip="Github" href="https://github.com/teradata/covalent" target="_blank">
  9 + <md-icon svgIcon="assets:github"></md-icon>
  10 + </a>
  11 + </div>
  12 + <td-layout-manage-list #manageList [opened]="media.registerQuery('gt-sm') | async" [mode]="(media.registerQuery('gt-sm') | async) ? 'side' : 'push'" [sidenavWidth]="(media.registerQuery('gt-xs') | async) ? '257px' : '100%'">
  13 + <md-toolbar td-sidenav-content>
  14 + <span>Відомості</span>
  15 + </md-toolbar>
  16 + <md-nav-list td-sidenav-content>
  17 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['road']">
  18 + <md-icon md-list-icon>dashboard</md-icon>
  19 + Автомобільні дороги
  20 + </a>
  21 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['authority']">
  22 + <md-icon md-list-icon>dashboard</md-icon>
  23 + Органи управління
  24 + </a>
  25 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['contractor']">
  26 + <md-icon md-list-icon>dashboard</md-icon>
  27 + Підрядники з експлуатаційного утримання
  28 + </a>
  29 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['road-service']">
  30 + <md-icon md-list-icon>insert_chart</md-icon>
  31 + Обслуговування
  32 + </a>
  33 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['settlement-address-link']">
  34 + <md-icon md-list-icon>star</md-icon>
  35 + Прив'язки населених пунктів
  36 + </a>
  37 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['flow-intensity']">
  38 + <md-icon md-list-icon>dashboard</md-icon>
  39 + Інтенсивності
  40 + </a>
  41 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['road-to-category']">
  42 + <md-icon md-list-icon>dashboard</md-icon>
  43 + Категорія доріг
  44 + </a>
  45 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['cross-section']">
  46 + <md-icon md-list-icon>dashboard</md-icon>
  47 + З'їзди
  48 + </a>
  49 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['road-width']">
  50 + <md-icon md-list-icon>dashboard</md-icon>
  51 + Ширина проїзних частин
  52 + </a>
  53 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['road-surface']">
  54 + <md-icon md-list-icon>dashboard</md-icon>
  55 + Покриття доріг
  56 + </a>
  57 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['service-object']">
  58 + <md-icon md-list-icon>dashboard</md-icon>
  59 + Об'єкти сервісу
  60 + </a>
  61 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['bus-stop']">
  62 + <md-icon md-list-icon>dashboard</md-icon>
  63 + Автобусні зупинки
  64 + </a>
  65 + </md-nav-list>
  66 + <div td-toolbar-content layout="row" layout-align="start center" flex>
  67 + <span>{{title}}</span>
  68 + <span flex></span>
  69 + <button md-icon-button>
  70 + <md-icon class="md-24">view_module</md-icon>
  71 + </button>
  72 + <button md-icon-button>
  73 + <md-icon class="md-24">sort</md-icon>
  74 + </button>
  75 + <button md-icon-button>
  76 + <md-icon class="md-24">settings</md-icon>
  77 + </button>
  78 + <button md-icon-button>
  79 + <md-icon class="md-24">more_vert</md-icon>
  80 + </button>
11 81 </div>
12   - <td-layout-manage-list #manageList [opened]="media.registerQuery('gt-sm') | async" [mode]="(media.registerQuery('gt-sm') | async) ? 'side' : 'push'" [sidenavWidth]="(media.registerQuery('gt-xs') | async) ? '257px' : '100%'">
13   - <md-toolbar td-sidenav-content>
14   - <span>Відомості</span>
15   - </md-toolbar>
16   - <md-nav-list td-sidenav-content>
17   - <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['road']">
18   - <md-icon md-list-icon>dashboard</md-icon>
19   - Автомобільні дороги
20   - </a>
21   - <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['road-service']">
22   - <md-icon md-list-icon>insert_chart</md-icon>
23   - Обслуговування
24   - </a>
25   - <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['settlement-address-link']">
26   - <md-icon md-list-icon>star</md-icon>
27   - Прив'язки населених пунктів
28   - </a>
29   - <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['flow-intensity']">
30   - <md-icon md-list-icon>dashboard</md-icon>
31   - Інтенсивності
32   - </a>
33   - <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['road-to-category']">
34   - <md-icon md-list-icon>dashboard</md-icon>
35   - Категорія доріг
36   - </a>
37   - <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['cross-section']">
38   - <md-icon md-list-icon>dashboard</md-icon>
39   - З'їзди
40   - </a>
41   - <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['road-width']">
42   - <md-icon md-list-icon>dashboard</md-icon>
43   - Ширина проїзних частин
44   - </a>
45   - <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['road-surface']">
46   - <md-icon md-list-icon>dashboard</md-icon>
47   - Покриття доріг
48   - </a>
49   - <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['service-object']">
50   - <md-icon md-list-icon>dashboard</md-icon>
51   - Об'єкти сервісу
52   - </a>
53   - <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['bus-stop']">
54   - <md-icon md-list-icon>dashboard</md-icon>
55   - Автобусні зупинки
56   - </a>
57   - </md-nav-list>
58   - <div td-toolbar-content layout="row" layout-align="start center" flex>
59   - <span>{{title}}</span>
60   - <span flex></span>
61   - <button md-icon-button><md-icon class="md-24">view_module</md-icon></button>
62   - <button md-icon-button><md-icon class="md-24">sort</md-icon></button>
63   - <button md-icon-button><md-icon class="md-24">settings</md-icon></button>
64   - <button md-icon-button><md-icon class="md-24">more_vert</md-icon></button>
65   - </div>
66   - <router-outlet></router-outlet>
67   - </td-layout-manage-list>
  82 + <router-outlet></router-outlet>
  83 + </td-layout-manage-list>
68 84 </td-layout-nav>
69 85 \ No newline at end of file
... ...
src/app/data/map-items/map-items.component.ts
... ... @@ -16,7 +16,6 @@ export class MapItemsComponent implements OnInit{
16 16 public markersGroup: L.FeatureGroup;
17 17 public show = false;
18 18 ngOnInit(){
19   -
20 19 // if(this.position != null){
21 20 // let options = {
22 21 // draggable:true,
... ...
src/app/data/road/road.component.ts
1 1 import { Component, ViewEncapsulation, AfterViewInit, ViewChild } from '@angular/core';
2 2 import { TdLoadingService } from '@covalent/core';
3   -import { GridOptions, IGetRowsParams, IRowModel } from 'ag-grid/main';
  3 +import {GridOptions, IGetRowsParams, IRowModel, IFilter} from 'ag-grid/main';
4 4  
5 5 import { StatementBase } from '../../../models/statement.base';
6 6 import { RoadMapComponent } from '../../../components/road-map.component';
... ...
src/components/road-map.component.html
... ... @@ -17,5 +17,13 @@
17 17 </td-expansion-panel>
18 18 </div>
19 19 <div class="legend-body" [innerHtml]="legend"></div>
  20 + <div class="legend-footer" *ngIf="selectedRoad">
  21 + <p>
  22 + <a [routerLink]="['/data/authority', selectedRoad.id]">Органи управління</a>
  23 + </p>
  24 + <p>
  25 + <a [routerLink]="['/data/contractor', selectedRoad.id]">Підрядники з експлуатаційного утримання</a>
  26 + </p>
  27 + </div>
20 28 </div>
21 29 <div id="{{identificator}}" [style.height]="getHeight()" ></div>
22 30 \ No newline at end of file
... ...
src/components/road-map.component.ts
... ... @@ -6,6 +6,7 @@ import {NodeMarker} from &quot;../models/node-marker&quot;;
6 6 import {Node} from "../models/node";
7 7 import {RoadService} from "../services/road.service";
8 8 import {TdExpansionPanelComponent} from "@covalent/core/expansion-panel/expansion-panel.component";
  9 +import {Road} from "../models/road";
9 10  
10 11 @Component({
11 12 // tslint:disable-next-line:component-selector
... ... @@ -21,6 +22,7 @@ export class RoadMapComponent implements AfterViewInit {
21 22 protected ways: Way[] = [];
22 23 protected legend: string;
23 24 protected legendSummary: string;
  25 + protected selectedRoad: Road;
24 26 @Input() identificator: string = 'mapID';
25 27  
26 28 constructor(
... ... @@ -82,6 +84,7 @@ export class RoadMapComponent implements AfterViewInit {
82 84 way.polyline.addTo(this.map).on('click', (event) => {
83 85 console.log(event);
84 86 this.service.getRoadByWay(event.target.way.id).then(road => {
  87 + this.selectedRoad = road;
85 88 this.setWaySummary(way);
86 89 this.showLegend(road, 'Дорога');
87 90 });
... ... @@ -98,6 +101,7 @@ export class RoadMapComponent implements AfterViewInit {
98 101 way.nodes.forEach(node => {
99 102 node.marker.addTo(this.map).on('click', (event) => {
100 103 this.service.getRoadByNode(event.target.node.id).then(road => {
  104 + this.selectedRoad = road;
101 105 this.setNodeSummary(node);
102 106 this.showLegend(road, 'Дорога');
103 107 });
... ...