flow-intensity.component.ts 8.29 KB
import { Component, ViewEncapsulation, AfterViewInit } from '@angular/core';
import { TdLoadingService } from '@covalent/core';
import { GridOptions, IGetRowsParams, IRowModel } from 'ag-grid/main';

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

import { FlowIntensityService } from '../../../services/flow-intensity.service';
import { FlowIntensity } from '../../../models/flow-intensity';
import { EditorComponent } from '../../../helpers/editor.component';
import { RendererComponent } from '../../../helpers/renderer.component';
import { FlowIntensityCreateService } from '../../../services/flow-intensity-create.service';
import { RegionSelectList } from '../../../models/region-select-list';
import { RoadDirectionSelectList } from '../../../models/road-direction-select-list';
import { RoadSelectList } from '../../../models/road-select-list';
import { SettlementSelectList } from '../../../models/settlement-select-list';

import { routerTransition } from '../../../animations/router.animation';

@Component({
    // tslint:disable-next-line:component-selector
    selector: 'flow-grid',
    templateUrl: 'flow-intensity.component.html',
    styleUrls: ['flow-intensity.scss'],
    encapsulation: ViewEncapsulation.None,
})
export class FlowIntensityComponent extends StatementBase {

    public regions: RegionSelectList[];
    public settlements: SettlementSelectList[];
    public roads: RoadSelectList[];
    public roadDirections: RoadDirectionSelectList[];

    constructor(
        protected service: FlowIntensityService,
        protected dataService: FlowIntensityCreateService,
        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: 'regionId',
        editable: true,
        cellEditorFramework: EditorComponent,
        cellRendererFramework: RendererComponent,
        cellEditorParams: {
          data: this.regions,
          valueCol: 'regionId',
          labelCol: 'name',
        },
      },
      {
        headerName: 'Місцезнаходження, км+',
        field: 'location',
        editable: true,
      },
      {
        headerName: 'Місцезнаходження ділянки з однорідною інтенсивністю руху, км+, початок',
        field: 'begin',
        editable: true,
      },
      {
        headerName: 'Місцезнаходження ділянки з однорідною інтенсивністю руху, км+, кінець',
        field: 'end',
        editable: true,
      },
      {
        headerName: 'Напрямок смуги руху',
        field: 'roadDirectionId',
        editable: true,
        cellEditorFramework: EditorComponent,
        cellRendererFramework: RendererComponent,
        cellEditorParams: {
          data: this.roadDirections,
          valueCol: 'roadDirectionId',
          labelCol: 'name',
        },
      },
      {
        headerName: 'Найближчий населений пункт',
        field: 'settlementId',
        editable: true,
        cellEditorFramework: EditorComponent,
        cellRendererFramework: RendererComponent,
        cellEditorParams: {
          data: this.settlements,
          valueCol: 'settlementId',
          labelCol: 'name',
        },
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, всього',
        field: 'intensityTotal',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, приріст',
        field: 'intensityIncrease',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, мотоцикл без коляски та мопед',
        field: 'intensityMoto',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, мотоцикл з коляскою',
        field: 'intensityMotoSidecar',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, легковий автомобіль',
        field: 'intensityCar',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, вантажний автомобіль вантажопідйомністю: до 2 т.',
        field: 'intensityTruckTwo',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, вантажний автомобіль вантажопідйомністю: від 2 т. до 6 т.',
        field: 'intensityTruckTwoSix',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, вантажний автомобіль вантажопідйомністю: від 6 т. до 8 т.',
        field: 'intensityTruckSixEight',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, вантажний автомобіль вантажопідйомністю: від 8 т. до 14 т.',
        field: 'intensityTruckEightFourteen',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, вантажний автомобіль вантажопідйомністю: понад 14 т.',
        field: 'intensityTruckFourteen',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, автопоїзд вантажопідйомністю: до 12 т.',
        field: 'intensityLorryTwelve',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, автопоїзд вантажопідйомністю: від 12 т. до 20 т.',
        field: 'intensityLorryTwelveTwenty',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, автопоїзд вантажопідйомністю: від 20 т. до 30 т.',
        field: 'intensityLorryTwentyThirty',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, автопоїзд вантажопідйомністю: понад 30 т.',
        field: 'intensityLorryThirty',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, колісний трактор з причепами до 10 т.',
        field: 'intensityTractorUnderTen',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, колісний трактор з причепами понад 10 т.',
        field: 'intensityTractorOverTen',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, автобус, тролейбус',
        field: 'intensityBus',
        editable: true,
      },
      {
        headerName: 'Інтенсивність руху, авт/добу, автобус зчеплений (здвоєний)',
        field: 'intensityBusCoupled',
        editable: true,
      },
    ];
  }

  protected initFunction(): void {
    this.dataService.getModels().then((models: any) => {
            this.regions = models.regionSelectListDsM as RegionSelectList[];
            this.settlements = models.settlementSelectListDsM as SettlementSelectList[];
            this.roads = models.roadSelectListDsM as RoadSelectList[];
            this.roadDirections = models.roadDirectionSelectListDsM as RoadDirectionSelectList[];
      }).then(() => {
            this.bootstrapGrid();
      });
  }
}