From 7462a6be7ae7319ca59933993601f51708c8e6c7 Mon Sep 17 00:00:00 2001 From: yarik Date: Wed, 1 Mar 2017 18:31:47 +0200 Subject: [PATCH] Authority and contractor links --- src/app/app.routes.ts | 2 ++ src/app/data/authority/authority.component.ts | 31 +++++++++++++++++++++++++++---- src/app/data/bus-stop/bus-stop.component.ts | 376 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- src/app/data/contractor/contractor.component.ts | 26 +++++++++++++++++++++++++- src/app/data/data.component.html | 146 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------- src/app/data/map-items/map-items.component.ts | 1 - src/app/data/road/road.component.ts | 2 +- src/components/road-map.component.html | 8 ++++++++ src/components/road-map.component.ts | 4 ++++ 9 files changed, 336 insertions(+), 260 deletions(-) diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index f7db3c8..a8f13c3 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -33,7 +33,9 @@ const routes: Routes = [ {path: 'road-service', component: RoadServiceComponent}, {path: 'road-to-category', component: RoadToCategoryComponent}, {path: 'settlement-address-link', component: SettlementAddressLinkComponent}, + {path: 'authority/:roadId', component: AuthorityComponent}, {path: 'authority', component: AuthorityComponent}, + {path: 'contractor/:roadId', component: ContractorComponent}, {path: 'contractor', component: ContractorComponent}, {path: 'map', component: MapComponent}, ]}, diff --git a/src/app/data/authority/authority.component.ts b/src/app/data/authority/authority.component.ts index 285ae23..a8bc91f 100644 --- a/src/app/data/authority/authority.component.ts +++ b/src/app/data/authority/authority.component.ts @@ -1,4 +1,4 @@ -import {Component, ViewEncapsulation, AfterViewInit, ViewChild} from '@angular/core'; +import {Component, ViewEncapsulation, AfterViewInit, ViewChild, OnDestroy} from '@angular/core'; import {TdLoadingService} from '@covalent/core'; import {StatementBase} from '../../../models/statement.base'; @@ -9,6 +9,7 @@ import {RendererComponent} from '../../../helpers/renderer.component'; import {AuthorityCreateService} from '../../../services/authority-create.service'; import {RoadSelectList} from '../../../models/road-select-list'; import {CrossSectionSelectList} from "../../../models/cross-section-select-list"; +import {ActivatedRoute} from "@angular/router"; @Component({ // tslint:disable-next-line:component-selector @@ -17,13 +18,17 @@ import {CrossSectionSelectList} from "../../../models/cross-section-select-list" styleUrls: ['authority.scss'], encapsulation: ViewEncapsulation.None, }) -export class AuthorityComponent extends StatementBase { +export class AuthorityComponent extends StatementBase implements OnDestroy { public roads: RoadSelectList[]; public crosssections: CrossSectionSelectList[]; + public roadId: string; + protected roadSub: any; constructor(protected service: AuthorityService, protected dataService: AuthorityCreateService, - protected loadingService: TdLoadingService,) { + protected loadingService: TdLoadingService, + protected route: ActivatedRoute + ) { super(); } @@ -107,13 +112,31 @@ export class AuthorityComponent extends StatementBase { }, ]; } - protected initFunction(): void { this.dataService.getModels().then((models: any) => { this.roads = models.roadSelectListDsM as RoadSelectList[]; this.crosssections = models.crossSectionSelectListDsM as CrossSectionSelectList[]; }).then(() => { this.bootstrapGrid(); + this.filterRoad(); + }); + } + public ngOnDestroy() { + this.roadSub.unsubscribe(); + } + protected filterRoad(): void { + this.roadSub = this.route.params.subscribe(params => { + this.roadId = params['roadId']; }); + if (this.roadId) { + setTimeout(() => { + let filter = this.gridOptions.api.getFilterInstance('roadId'); + filter.setModel({ + type: 'equals', + filter: this.roadId + }); + this.gridOptions.api.onFilterChanged(); + }, 0); + } } } diff --git a/src/app/data/bus-stop/bus-stop.component.ts b/src/app/data/bus-stop/bus-stop.component.ts index b9da32e..1108838 100644 --- a/src/app/data/bus-stop/bus-stop.component.ts +++ b/src/app/data/bus-stop/bus-stop.component.ts @@ -1,25 +1,25 @@ -import { Component, ViewEncapsulation, AfterViewInit,ViewChild } from '@angular/core'; -import { TdLoadingService } from '@covalent/core'; -import { GridOptions, IGetRowsParams, IRowModel } from 'ag-grid/main'; +import {Component, ViewEncapsulation, AfterViewInit, ViewChild} from '@angular/core'; +import {TdLoadingService} from '@covalent/core'; +import {GridOptions, IGetRowsParams, IRowModel} from 'ag-grid/main'; -import { StatementBase } from '../../../models/statement.base'; +import {StatementBase} from '../../../models/statement.base'; -import { BusStopService } from '../../../services/bus-stop.service'; -import { BusStop } from '../../../models/bus-stop'; -import { EditorComponent } from '../../../helpers/editor.component'; -import { RendererComponent } from '../../../helpers/renderer.component'; -import { MapEditorComponent } from '../../../helpers/map-editor.component'; -import { MapRendererComponent } from '../../../helpers/map-renderer.component'; -import { BusStopCreateService } from '../../../services/bus-stop-create.service'; -import { BooleanSelectListService } from '../../../services/boolean-select-list.service'; -import { RegionSelectList } from '../../../models/region-select-list'; -import { StateCommonSelectList } from '../../../models/state-common-select-list'; -import { RoadSelectList } from '../../../models/road-select-list'; -import { BooleanSelectList } from '../../../models/boolean-select-list'; -import { SettlementSelectList } from '../../../models/settlement-select-list'; -import { SurfaceTypeSelectList } from '../../../models/surface-type-select-list'; -import { MapItemsComponent } from '../map-items/map-items.component'; -import { routerTransition } from '../../../animations/router.animation'; +import {BusStopService} from '../../../services/bus-stop.service'; +import {BusStop} from '../../../models/bus-stop'; +import {EditorComponent} from '../../../helpers/editor.component'; +import {RendererComponent} from '../../../helpers/renderer.component'; +import {MapEditorComponent} from '../../../helpers/map-editor.component'; +import {MapRendererComponent} from '../../../helpers/map-renderer.component'; +import {BusStopCreateService} from '../../../services/bus-stop-create.service'; +import {BooleanSelectListService} from '../../../services/boolean-select-list.service'; +import {RegionSelectList} from '../../../models/region-select-list'; +import {StateCommonSelectList} from '../../../models/state-common-select-list'; +import {RoadSelectList} from '../../../models/road-select-list'; +import {BooleanSelectList} from '../../../models/boolean-select-list'; +import {SettlementSelectList} from '../../../models/settlement-select-list'; +import {SurfaceTypeSelectList} from '../../../models/surface-type-select-list'; +import {MapItemsComponent} from '../map-items/map-items.component'; +import {routerTransition} from '../../../animations/router.animation'; @Component({ // tslint:disable-next-line:component-selector @@ -37,187 +37,187 @@ export class BusStopComponent extends StatementBase { public roads: RoadSelectList[]; public boolean: BooleanSelectList[]; - constructor( - protected service: BusStopService, - protected dataService: BusStopCreateService, - protected booleanService: BooleanSelectListService, - protected loadingService: TdLoadingService, - ) { + constructor(protected service: BusStopService, + protected dataService: BusStopCreateService, + protected booleanService: BooleanSelectListService, + protected loadingService: TdLoadingService,) { super(); } + public showOnMap(): void { this.mapItems.showMap(); } - protected createColumnDefs(): any[] { - return [ - { - headerName: '#', - width: 30, - checkboxSelection: true, - suppressSorting: true, - suppressMenu: true, - pinned: true, - }, - { - headerName: 'ID', - field: 'id', - }, - { - headerName: 'Назва дороги', - field: 'roadId', - editable: true, - cellEditorFramework: EditorComponent, - cellRendererFramework: RendererComponent, - cellEditorParams: { - data: this.roads, - valueCol: 'roadId', - labelCol: 'name', - }, - }, - { - headerName: 'Область', - field: 'regionId', - editable: true, - cellEditorFramework: EditorComponent, - cellRendererFramework: RendererComponent, - cellEditorParams: { - data: this.regions, - valueCol: 'regionId', - labelCol: 'name', - }, - }, - { - headerName: 'Місцезнаходження, км+ справа', - field: 'locationRight', - editable: true, - }, - { - headerName: 'Місцезнаходження, км+ зліва', - field: 'locationLeft', - editable: true, - }, - { - headerName: 'Тип покриття', - field: 'surfaceTypeId', - editable: true, - cellEditorFramework: EditorComponent, - cellRendererFramework: RendererComponent, - cellEditorParams: { - data: this.surfaceTypes, - valueCol: 'surfaceTypeId', - labelCol: 'name', - }, - }, - { - headerName: 'Технічний стан', - field: 'stateCommonId', - editable: true, - cellEditorFramework: EditorComponent, - cellRendererFramework: RendererComponent, - cellEditorParams: { - data: this.states, - valueCol: 'stateCommonId', - labelCol: 'value', - }, - }, - { - headerName: 'Наявність елементів зупин. майдан', - field: 'areaStopAvailability', - editable: true, - cellEditorFramework: EditorComponent, - cellRendererFramework: RendererComponent, - cellEditorParams: { - data: this.boolean, - valueCol: 'value', - labelCol: 'label', - }, - }, - { - headerName: 'Наявність елементів посад. майдан', - field: 'areaLandAvailability', - editable: true, - cellEditorFramework: EditorComponent, - cellRendererFramework: RendererComponent, - cellEditorParams: { - data: this.boolean, - valueCol: 'value', - labelCol: 'label', - }, - }, - { - headerName: 'Наявність елементів заїзна кишеня', - field: 'pocketAvailability', - editable: true, - cellEditorFramework: EditorComponent, - cellRendererFramework: RendererComponent, - cellEditorParams: { - data: this.boolean, - valueCol: 'value', - labelCol: 'label', - }, - }, - { - headerName: 'Наявність туалету', - field: 'toiletAvailability', - editable: true, - cellEditorFramework: EditorComponent, - cellRendererFramework: RendererComponent, - cellEditorParams: { - data: this.boolean, - valueCol: 'value', - labelCol: 'label', - }, - }, - { - headerName: 'Рік будівництва', - field: 'yearBuild', - editable: true, - }, - { - headerName: 'Рік ремонту', - field: 'yearRepair', - editable: true, - }, - { - headerName: 'position', - field: 'position', - editable: true, - cellEditorFramework: MapEditorComponent, - cellRendererFramework: MapRendererComponent, - cellEditorParams: { - position: 'position' - }, - }, - ]; - } - protected initFunction(): void { - this.booleanService.getModels().then((models: BooleanSelectList[]) => this.boolean = models); - this.dataService.getModels().then((models: any) => { + protected createColumnDefs(): any[] { + return [ + { + headerName: '#', + width: 30, + checkboxSelection: true, + suppressSorting: true, + suppressMenu: true, + pinned: true, + }, + { + headerName: 'ID', + field: 'id', + }, + { + headerName: 'Назва дороги', + field: 'roadId', + editable: true, + cellEditorFramework: EditorComponent, + cellRendererFramework: RendererComponent, + cellEditorParams: { + data: this.roads, + valueCol: 'roadId', + labelCol: 'name', + }, + }, + { + headerName: 'Область', + field: 'regionId', + editable: true, + cellEditorFramework: EditorComponent, + cellRendererFramework: RendererComponent, + cellEditorParams: { + data: this.regions, + valueCol: 'regionId', + labelCol: 'name', + }, + }, + { + headerName: 'Місцезнаходження, км+ справа', + field: 'locationRight', + editable: true, + }, + { + headerName: 'Місцезнаходження, км+ зліва', + field: 'locationLeft', + editable: true, + }, + { + headerName: 'Тип покриття', + field: 'surfaceTypeId', + editable: true, + cellEditorFramework: EditorComponent, + cellRendererFramework: RendererComponent, + cellEditorParams: { + data: this.surfaceTypes, + valueCol: 'surfaceTypeId', + labelCol: 'name', + }, + }, + { + headerName: 'Технічний стан', + field: 'stateCommonId', + editable: true, + cellEditorFramework: EditorComponent, + cellRendererFramework: RendererComponent, + cellEditorParams: { + data: this.states, + valueCol: 'stateCommonId', + labelCol: 'value', + }, + }, + { + headerName: 'Наявність елементів зупин. майдан', + field: 'areaStopAvailability', + editable: true, + cellEditorFramework: EditorComponent, + cellRendererFramework: RendererComponent, + cellEditorParams: { + data: this.boolean, + valueCol: 'value', + labelCol: 'label', + }, + }, + { + headerName: 'Наявність елементів посад. майдан', + field: 'areaLandAvailability', + editable: true, + cellEditorFramework: EditorComponent, + cellRendererFramework: RendererComponent, + cellEditorParams: { + data: this.boolean, + valueCol: 'value', + labelCol: 'label', + }, + }, + { + headerName: 'Наявність елементів заїзна кишеня', + field: 'pocketAvailability', + editable: true, + cellEditorFramework: EditorComponent, + cellRendererFramework: RendererComponent, + cellEditorParams: { + data: this.boolean, + valueCol: 'value', + labelCol: 'label', + }, + }, + { + headerName: 'Наявність туалету', + field: 'toiletAvailability', + editable: true, + cellEditorFramework: EditorComponent, + cellRendererFramework: RendererComponent, + cellEditorParams: { + data: this.boolean, + valueCol: 'value', + labelCol: 'label', + }, + }, + { + headerName: 'Рік будівництва', + field: 'yearBuild', + editable: true, + }, + { + headerName: 'Рік ремонту', + field: 'yearRepair', + editable: true, + }, + { + headerName: 'position', + field: 'position', + editable: true, + cellEditorFramework: MapEditorComponent, + cellRendererFramework: MapRendererComponent, + cellEditorParams: { + position: 'position' + }, + }, + ]; + } + + protected initFunction(): void { + this.booleanService.getModels().then((models: BooleanSelectList[]) => this.boolean = models); + this.dataService.getModels().then((models: any) => { this.regions = models.regionSelectListDsM as RegionSelectList[]; this.states = models.stateCommonSelectListDsM as StateCommonSelectList[]; this.surfaceTypes = models.surfaceTypeSelectListDsM as SurfaceTypeSelectList[]; this.settlements = models.settlementSelectListDsM as SettlementSelectList[]; this.roads = models.roadSelectListDsM as RoadSelectList[]; - }).then(() => { + }).then(() => { this.bootstrapGrid(); - }); - } + }); + } - protected onCellFocused($event: any): void { - console.log($event); - // let model = this.gridOptions.api.getModel(); - // let row = model.getRow($event.rowIndex); - // console.log(row); - // this.mapItems.refreshMap(row); - } + protected onCellFocused($event: any): void { + console.log($event); + // let model = this.gridOptions.api.getModel(); + // let row = model.getRow($event.rowIndex); + // console.log(row); + // this.mapItems.refreshMap(row); + } - protected onSelectionChanged() { - console.log('onSelectionChanged'); - super.onSelectionChanged(); - let rows: IRowModel[] = this.gridOptions.api.getSelectedRows(); - console.log(rows); - this.mapItems.refreshMap(rows); - } + protected onSelectionChanged() { + console.log('onSelectionChanged'); + super.onSelectionChanged(); + let rows: IRowModel[] = this.gridOptions.api.getSelectedRows(); + console.log(rows); + this.mapItems.refreshMap(rows); + } } diff --git a/src/app/data/contractor/contractor.component.ts b/src/app/data/contractor/contractor.component.ts index 6516a6a..60aabcb 100644 --- a/src/app/data/contractor/contractor.component.ts +++ b/src/app/data/contractor/contractor.component.ts @@ -9,6 +9,7 @@ import {RendererComponent} from '../../../helpers/renderer.component'; import {ContractorCreateService} from '../../../services/contractor-create.service'; import {RoadSelectList} from '../../../models/road-select-list'; import {CrossSectionSelectList} from "../../../models/cross-section-select-list"; +import {ActivatedRoute} from "@angular/router"; @Component({ // tslint:disable-next-line:component-selector @@ -20,10 +21,14 @@ import {CrossSectionSelectList} from "../../../models/cross-section-select-list" export class ContractorComponent extends StatementBase { public roads: RoadSelectList[]; public crosssections: CrossSectionSelectList[]; + public roadId: string; + protected roadSub: any; constructor(protected service: ContractorService, protected dataService: ContractorCreateService, - protected loadingService: TdLoadingService,) { + protected loadingService: TdLoadingService, + protected route: ActivatedRoute + ) { super(); } @@ -114,6 +119,25 @@ export class ContractorComponent extends StatementBase { this.crosssections = models.crossSectionSelectListDsM as CrossSectionSelectList[]; }).then(() => { this.bootstrapGrid(); + this.filterRoad(); }); } + public ngOnDestroy() { + this.roadSub.unsubscribe(); + } + protected filterRoad(): void { + this.roadSub = this.route.params.subscribe(params => { + this.roadId = params['roadId']; + }); + if (this.roadId) { + setTimeout(() => { + let filter = this.gridOptions.api.getFilterInstance('roadId'); + filter.setModel({ + type: 'equals', + filter: this.roadId + }); + this.gridOptions.api.onFilterChanged(); + }, 0); + } + } } diff --git a/src/app/data/data.component.html b/src/app/data/data.component.html index ca125e6..b28f2ba 100644 --- a/src/app/data/data.component.html +++ b/src/app/data/data.component.html @@ -1,68 +1,84 @@ -
- Quickstart - - - chrome_reader_mode - - - - +
+ Quickstart + + + chrome_reader_mode + + + + +
+ + + Відомості + + + + dashboard + Автомобільні дороги + + + dashboard + Органи управління + + + dashboard + Підрядники з експлуатаційного утримання + + + insert_chart + Обслуговування + + + star + Прив'язки населених пунктів + + + dashboard + Інтенсивності + + + dashboard + Категорія доріг + + + dashboard + З'їзди + + + dashboard + Ширина проїзних частин + + + dashboard + Покриття доріг + + + dashboard + Об'єкти сервісу + + + dashboard + Автобусні зупинки + + +
+ {{title}} + + + + +
- - - Відомості - - - - dashboard - Автомобільні дороги - - - insert_chart - Обслуговування - - - star - Прив'язки населених пунктів - - - dashboard - Інтенсивності - - - dashboard - Категорія доріг - - - dashboard - З'їзди - - - dashboard - Ширина проїзних частин - - - dashboard - Покриття доріг - - - dashboard - Об'єкти сервісу - - - dashboard - Автобусні зупинки - - -
- {{title}} - - - - - -
- -
+ +
\ No newline at end of file diff --git a/src/app/data/map-items/map-items.component.ts b/src/app/data/map-items/map-items.component.ts index 0994bff..c0efeef 100644 --- a/src/app/data/map-items/map-items.component.ts +++ b/src/app/data/map-items/map-items.component.ts @@ -16,7 +16,6 @@ export class MapItemsComponent implements OnInit{ public markersGroup: L.FeatureGroup; public show = false; ngOnInit(){ - // if(this.position != null){ // let options = { // draggable:true, diff --git a/src/app/data/road/road.component.ts b/src/app/data/road/road.component.ts index 1b58fa4..c7890de 100644 --- a/src/app/data/road/road.component.ts +++ b/src/app/data/road/road.component.ts @@ -1,6 +1,6 @@ import { Component, ViewEncapsulation, AfterViewInit, ViewChild } from '@angular/core'; import { TdLoadingService } from '@covalent/core'; -import { GridOptions, IGetRowsParams, IRowModel } from 'ag-grid/main'; +import {GridOptions, IGetRowsParams, IRowModel, IFilter} from 'ag-grid/main'; import { StatementBase } from '../../../models/statement.base'; import { RoadMapComponent } from '../../../components/road-map.component'; diff --git a/src/components/road-map.component.html b/src/components/road-map.component.html index 0f7657e..0026156 100644 --- a/src/components/road-map.component.html +++ b/src/components/road-map.component.html @@ -17,5 +17,13 @@
+
\ No newline at end of file diff --git a/src/components/road-map.component.ts b/src/components/road-map.component.ts index 4b720c6..ce628ee 100644 --- a/src/components/road-map.component.ts +++ b/src/components/road-map.component.ts @@ -6,6 +6,7 @@ import {NodeMarker} from "../models/node-marker"; import {Node} from "../models/node"; import {RoadService} from "../services/road.service"; import {TdExpansionPanelComponent} from "@covalent/core/expansion-panel/expansion-panel.component"; +import {Road} from "../models/road"; @Component({ // tslint:disable-next-line:component-selector @@ -21,6 +22,7 @@ export class RoadMapComponent implements AfterViewInit { protected ways: Way[] = []; protected legend: string; protected legendSummary: string; + protected selectedRoad: Road; @Input() identificator: string = 'mapID'; constructor( @@ -82,6 +84,7 @@ export class RoadMapComponent implements AfterViewInit { way.polyline.addTo(this.map).on('click', (event) => { console.log(event); this.service.getRoadByWay(event.target.way.id).then(road => { + this.selectedRoad = road; this.setWaySummary(way); this.showLegend(road, 'Дорога'); }); @@ -98,6 +101,7 @@ export class RoadMapComponent implements AfterViewInit { way.nodes.forEach(node => { node.marker.addTo(this.map).on('click', (event) => { this.service.getRoadByNode(event.target.node.id).then(road => { + this.selectedRoad = road; this.setNodeSummary(node); this.showLegend(road, 'Дорога'); }); -- libgit2 0.21.4