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,7 +33,9 @@ const routes: Routes = [
33 {path: 'road-service', component: RoadServiceComponent}, 33 {path: 'road-service', component: RoadServiceComponent},
34 {path: 'road-to-category', component: RoadToCategoryComponent}, 34 {path: 'road-to-category', component: RoadToCategoryComponent},
35 {path: 'settlement-address-link', component: SettlementAddressLinkComponent}, 35 {path: 'settlement-address-link', component: SettlementAddressLinkComponent},
  36 + {path: 'authority/:roadId', component: AuthorityComponent},
36 {path: 'authority', component: AuthorityComponent}, 37 {path: 'authority', component: AuthorityComponent},
  38 + {path: 'contractor/:roadId', component: ContractorComponent},
37 {path: 'contractor', component: ContractorComponent}, 39 {path: 'contractor', component: ContractorComponent},
38 {path: 'map', component: MapComponent}, 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 import {TdLoadingService} from '@covalent/core'; 2 import {TdLoadingService} from '@covalent/core';
3 3
4 import {StatementBase} from '../../../models/statement.base'; 4 import {StatementBase} from '../../../models/statement.base';
@@ -9,6 +9,7 @@ import {RendererComponent} from '../../../helpers/renderer.component'; @@ -9,6 +9,7 @@ import {RendererComponent} from '../../../helpers/renderer.component';
9 import {AuthorityCreateService} from '../../../services/authority-create.service'; 9 import {AuthorityCreateService} from '../../../services/authority-create.service';
10 import {RoadSelectList} from '../../../models/road-select-list'; 10 import {RoadSelectList} from '../../../models/road-select-list';
11 import {CrossSectionSelectList} from "../../../models/cross-section-select-list"; 11 import {CrossSectionSelectList} from "../../../models/cross-section-select-list";
  12 +import {ActivatedRoute} from "@angular/router";
12 13
13 @Component({ 14 @Component({
14 // tslint:disable-next-line:component-selector 15 // tslint:disable-next-line:component-selector
@@ -17,13 +18,17 @@ import {CrossSectionSelectList} from "../../../models/cross-section-select-list" @@ -17,13 +18,17 @@ import {CrossSectionSelectList} from "../../../models/cross-section-select-list"
17 styleUrls: ['authority.scss'], 18 styleUrls: ['authority.scss'],
18 encapsulation: ViewEncapsulation.None, 19 encapsulation: ViewEncapsulation.None,
19 }) 20 })
20 -export class AuthorityComponent extends StatementBase { 21 +export class AuthorityComponent extends StatementBase implements OnDestroy {
21 public roads: RoadSelectList[]; 22 public roads: RoadSelectList[];
22 public crosssections: CrossSectionSelectList[]; 23 public crosssections: CrossSectionSelectList[];
  24 + public roadId: string;
  25 + protected roadSub: any;
23 26
24 constructor(protected service: AuthorityService, 27 constructor(protected service: AuthorityService,
25 protected dataService: AuthorityCreateService, 28 protected dataService: AuthorityCreateService,
26 - protected loadingService: TdLoadingService,) { 29 + protected loadingService: TdLoadingService,
  30 + protected route: ActivatedRoute
  31 + ) {
27 super(); 32 super();
28 } 33 }
29 34
@@ -107,13 +112,31 @@ export class AuthorityComponent extends StatementBase { @@ -107,13 +112,31 @@ export class AuthorityComponent extends StatementBase {
107 }, 112 },
108 ]; 113 ];
109 } 114 }
110 -  
111 protected initFunction(): void { 115 protected initFunction(): void {
112 this.dataService.getModels().then((models: any) => { 116 this.dataService.getModels().then((models: any) => {
113 this.roads = models.roadSelectListDsM as RoadSelectList[]; 117 this.roads = models.roadSelectListDsM as RoadSelectList[];
114 this.crosssections = models.crossSectionSelectListDsM as CrossSectionSelectList[]; 118 this.crosssections = models.crossSectionSelectListDsM as CrossSectionSelectList[];
115 }).then(() => { 119 }).then(() => {
116 this.bootstrapGrid(); 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 @Component({ 24 @Component({
25 // tslint:disable-next-line:component-selector 25 // tslint:disable-next-line:component-selector
@@ -37,187 +37,187 @@ export class BusStopComponent extends StatementBase { @@ -37,187 +37,187 @@ export class BusStopComponent extends StatementBase {
37 public roads: RoadSelectList[]; 37 public roads: RoadSelectList[];
38 public boolean: BooleanSelectList[]; 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 super(); 44 super();
47 } 45 }
  46 +
48 public showOnMap(): void { 47 public showOnMap(): void {
49 this.mapItems.showMap(); 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 this.regions = models.regionSelectListDsM as RegionSelectList[]; 197 this.regions = models.regionSelectListDsM as RegionSelectList[];
198 this.states = models.stateCommonSelectListDsM as StateCommonSelectList[]; 198 this.states = models.stateCommonSelectListDsM as StateCommonSelectList[];
199 this.surfaceTypes = models.surfaceTypeSelectListDsM as SurfaceTypeSelectList[]; 199 this.surfaceTypes = models.surfaceTypeSelectListDsM as SurfaceTypeSelectList[];
200 this.settlements = models.settlementSelectListDsM as SettlementSelectList[]; 200 this.settlements = models.settlementSelectListDsM as SettlementSelectList[];
201 this.roads = models.roadSelectListDsM as RoadSelectList[]; 201 this.roads = models.roadSelectListDsM as RoadSelectList[];
202 - }).then(() => { 202 + }).then(() => {
203 this.bootstrapGrid(); 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,6 +9,7 @@ import {RendererComponent} from '../../../helpers/renderer.component';
9 import {ContractorCreateService} from '../../../services/contractor-create.service'; 9 import {ContractorCreateService} from '../../../services/contractor-create.service';
10 import {RoadSelectList} from '../../../models/road-select-list'; 10 import {RoadSelectList} from '../../../models/road-select-list';
11 import {CrossSectionSelectList} from "../../../models/cross-section-select-list"; 11 import {CrossSectionSelectList} from "../../../models/cross-section-select-list";
  12 +import {ActivatedRoute} from "@angular/router";
12 13
13 @Component({ 14 @Component({
14 // tslint:disable-next-line:component-selector 15 // tslint:disable-next-line:component-selector
@@ -20,10 +21,14 @@ import {CrossSectionSelectList} from "../../../models/cross-section-select-list" @@ -20,10 +21,14 @@ import {CrossSectionSelectList} from "../../../models/cross-section-select-list"
20 export class ContractorComponent extends StatementBase { 21 export class ContractorComponent extends StatementBase {
21 public roads: RoadSelectList[]; 22 public roads: RoadSelectList[];
22 public crosssections: CrossSectionSelectList[]; 23 public crosssections: CrossSectionSelectList[];
  24 + public roadId: string;
  25 + protected roadSub: any;
23 26
24 constructor(protected service: ContractorService, 27 constructor(protected service: ContractorService,
25 protected dataService: ContractorCreateService, 28 protected dataService: ContractorCreateService,
26 - protected loadingService: TdLoadingService,) { 29 + protected loadingService: TdLoadingService,
  30 + protected route: ActivatedRoute
  31 + ) {
27 super(); 32 super();
28 } 33 }
29 34
@@ -114,6 +119,25 @@ export class ContractorComponent extends StatementBase { @@ -114,6 +119,25 @@ export class ContractorComponent extends StatementBase {
114 this.crosssections = models.crossSectionSelectListDsM as CrossSectionSelectList[]; 119 this.crosssections = models.crossSectionSelectListDsM as CrossSectionSelectList[];
115 }).then(() => { 120 }).then(() => {
116 this.bootstrapGrid(); 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 <td-layout-nav logo="assets:covalent"> 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 </div> 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 </td-layout-nav> 84 </td-layout-nav>
69 \ No newline at end of file 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,7 +16,6 @@ export class MapItemsComponent implements OnInit{
16 public markersGroup: L.FeatureGroup; 16 public markersGroup: L.FeatureGroup;
17 public show = false; 17 public show = false;
18 ngOnInit(){ 18 ngOnInit(){
19 -  
20 // if(this.position != null){ 19 // if(this.position != null){
21 // let options = { 20 // let options = {
22 // draggable:true, 21 // draggable:true,
src/app/data/road/road.component.ts
1 import { Component, ViewEncapsulation, AfterViewInit, ViewChild } from '@angular/core'; 1 import { Component, ViewEncapsulation, AfterViewInit, ViewChild } from '@angular/core';
2 import { TdLoadingService } from '@covalent/core'; 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 import { StatementBase } from '../../../models/statement.base'; 5 import { StatementBase } from '../../../models/statement.base';
6 import { RoadMapComponent } from '../../../components/road-map.component'; 6 import { RoadMapComponent } from '../../../components/road-map.component';
src/components/road-map.component.html
@@ -17,5 +17,13 @@ @@ -17,5 +17,13 @@
17 </td-expansion-panel> 17 </td-expansion-panel>
18 </div> 18 </div>
19 <div class="legend-body" [innerHtml]="legend"></div> 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 </div> 28 </div>
21 <div id="{{identificator}}" [style.height]="getHeight()" ></div> 29 <div id="{{identificator}}" [style.height]="getHeight()" ></div>
22 \ No newline at end of file 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 +6,7 @@ import {NodeMarker} from &quot;../models/node-marker&quot;;
6 import {Node} from "../models/node"; 6 import {Node} from "../models/node";
7 import {RoadService} from "../services/road.service"; 7 import {RoadService} from "../services/road.service";
8 import {TdExpansionPanelComponent} from "@covalent/core/expansion-panel/expansion-panel.component"; 8 import {TdExpansionPanelComponent} from "@covalent/core/expansion-panel/expansion-panel.component";
  9 +import {Road} from "../models/road";
9 10
10 @Component({ 11 @Component({
11 // tslint:disable-next-line:component-selector 12 // tslint:disable-next-line:component-selector
@@ -21,6 +22,7 @@ export class RoadMapComponent implements AfterViewInit { @@ -21,6 +22,7 @@ export class RoadMapComponent implements AfterViewInit {
21 protected ways: Way[] = []; 22 protected ways: Way[] = [];
22 protected legend: string; 23 protected legend: string;
23 protected legendSummary: string; 24 protected legendSummary: string;
  25 + protected selectedRoad: Road;
24 @Input() identificator: string = 'mapID'; 26 @Input() identificator: string = 'mapID';
25 27
26 constructor( 28 constructor(
@@ -82,6 +84,7 @@ export class RoadMapComponent implements AfterViewInit { @@ -82,6 +84,7 @@ export class RoadMapComponent implements AfterViewInit {
82 way.polyline.addTo(this.map).on('click', (event) => { 84 way.polyline.addTo(this.map).on('click', (event) => {
83 console.log(event); 85 console.log(event);
84 this.service.getRoadByWay(event.target.way.id).then(road => { 86 this.service.getRoadByWay(event.target.way.id).then(road => {
  87 + this.selectedRoad = road;
85 this.setWaySummary(way); 88 this.setWaySummary(way);
86 this.showLegend(road, 'Дорога'); 89 this.showLegend(road, 'Дорога');
87 }); 90 });
@@ -98,6 +101,7 @@ export class RoadMapComponent implements AfterViewInit { @@ -98,6 +101,7 @@ export class RoadMapComponent implements AfterViewInit {
98 way.nodes.forEach(node => { 101 way.nodes.forEach(node => {
99 node.marker.addTo(this.map).on('click', (event) => { 102 node.marker.addTo(this.map).on('click', (event) => {
100 this.service.getRoadByNode(event.target.node.id).then(road => { 103 this.service.getRoadByNode(event.target.node.id).then(road => {
  104 + this.selectedRoad = road;
101 this.setNodeSummary(node); 105 this.setNodeSummary(node);
102 this.showLegend(road, 'Дорога'); 106 this.showLegend(road, 'Дорога');
103 }); 107 });