import {Component, ViewEncapsulation, AfterViewInit, ViewChild, OnDestroy} from '@angular/core'; import {TdLoadingService} from '@covalent/core'; import {StatementBase} from '../../../models/statement.base'; import {AuthorityService} from '../../../services/authority.service'; import {EditorComponent} from '../../../helpers/editor.component'; 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 selector: 'authority-grid', templateUrl: 'authority.component.html', styleUrls: ['authority.scss'], encapsulation: ViewEncapsulation.None, }) 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 route: ActivatedRoute ) { super(); } 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: 'crossSectionId', editable: true, cellEditorFramework: EditorComponent, cellRendererFramework: RendererComponent, cellEditorParams: { data: this.crosssections, valueCol: 'id', labelCol: 'name', }, }, { headerName: 'Назва органу управління (балансоутримувача)', field: 'authorityName', editable: true, }, { headerName: 'Номер ділянки дороги', field: 'roadSectionNumber', editable: true, }, { headerName: 'Початок (псевдогеодані)', field: 'begin', editable: true, }, { headerName: 'Кінець (псевдогеодані)', field: 'end', editable: true, }, { headerName: 'Довжина (у метрах)', field: 'length', editable: false, }, { headerName: 'Координати вісі правого проїзду', field: 'rightCoords', editable: true, }, { headerName: 'Схема початку/межі збірного об’єкту', field: 'beginScheme', editable: true, }, { headerName: 'Схема кінця/межі збірного об’єкту', field: 'endScheme', editable: true, }, ]; } 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); } } }