contractor.component.ts 4.24 KB
import {Component, ViewEncapsulation, AfterViewInit, ViewChild} from '@angular/core';
import {TdLoadingService} from '@covalent/core';

import {StatementBase} from '../../../models/statement.base';

import {ContractorService} from '../../../services/contractor.service';
import {EditorComponent} from '../../../helpers/editor.component';
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";

@Component({
    // tslint:disable-next-line:component-selector
    selector: 'contractor-grid',
    templateUrl: 'contractor.component.html',
    styleUrls: ['contractor.scss'],
    encapsulation: ViewEncapsulation.None,
})
export class ContractorComponent extends StatementBase {
    public roads: RoadSelectList[];
    public crosssections: CrossSectionSelectList[];

    constructor(protected service: ContractorService,
                protected dataService: ContractorCreateService,
                protected loadingService: TdLoadingService,) {
        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: 'contractorName',
                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();
        });
    }
}