authority.component.ts 5.01 KB
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);
        }
    }
}