Commit 7462a6be7ae7319ca59933993601f51708c8e6c7
1 parent
229df284
Authority and contractor links
Showing
9 changed files
with
336 additions
and
260 deletions
Show diff stats
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 "../models/node-marker"; | @@ -6,6 +6,7 @@ import {NodeMarker} from "../models/node-marker"; | ||
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 | }); |