service-object.component.ts 5.67 KB
import {Component, ViewEncapsulation} from '@angular/core';
import {GridOptions} from 'ag-grid/main';

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

import { ServiceObjectService } from '../../../services/service-object.service';
import { ServiceObject } from '../../../models/service-object';
import { EditorComponent } from '../../../helpers/editor.component';
import { RendererComponent } from '../../../helpers/renderer.component';
import { ServiceObjectCreateService } from '../../../services/service-object-create.service';
import { BooleanSelectListService } from '../../../services/boolean-select-list.service';
import { RegionSelectList } from '../../../models/region-select-list';
import { ServiceObjectTypeSelectList } from '../../../models/service-object-type-select-list';
import { RoadSelectList } from '../../../models/road-select-list';
import { DepartmentAffiliationSelectList } from '../../../models/department-affiliation-select-list';
import { BooleanSelectList } from '../../../models/boolean-select-list';
import { SettlementSelectList } from '../../../models/settlement-select-list';

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

@Component({
    selector: 'service-object',
    templateUrl: 'service-object.component.html',
    styleUrls: ['service-object.scss'],
    encapsulation: ViewEncapsulation.None,
})
export class ServiceObjectComponent extends StatementBase {

    public regions: RegionSelectList[];
    public serviceObjectType: ServiceObjectTypeSelectList[];
    public departmentAffiliation: DepartmentAffiliationSelectList[];
    public settlements: SettlementSelectList[];
    public roads: RoadSelectList[];
    public boolean: BooleanSelectList[];

    constructor(
        protected service: ServiceObjectService,
        private dataService: ServiceObjectCreateService,
        private booleanService: BooleanSelectListService,
    ) {
        super();
        this.initGrid();
        this.booleanService.getModels().then((models: BooleanSelectList[]) => this.boolean = models);
        this.dataService.getModels().then((models: any) => {
            this.regions = models.regionSelectListDsM as RegionSelectList[];
            this.serviceObjectType = models.serviceObjectTypeSelectListDsM as ServiceObjectTypeSelectList[];
            this.departmentAffiliation = models.departmentAffiliationSelectListDsM as DepartmentAffiliationSelectList[];
            this.settlements = models.settlementSelectListDsM as SettlementSelectList[];
            this.roads = models.roadSelectListDsM as RoadSelectList[];

      }).then(() => {
            this.bootstrapGrid();
      });
    }

    protected createModel(): Object {
        return new ServiceObject();
    }

  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: 'serviceObjectTypeId',
        editable: true,
        cellEditorFramework: EditorComponent,
        cellRendererFramework: RendererComponent,
        cellEditorParams: {
          data: this.serviceObjectType,
          valueCol: 'serviceObjectTypeId',
          labelCol: 'name',
        },
      },
      {
        headerName: 'Назва підприємства та населеного пункту',
        field: 'settlementId',
        editable: true,
        cellEditorFramework: EditorComponent,
        cellRendererFramework: RendererComponent,
        cellEditorParams: {
          data: this.settlements,
          valueCol: 'settlementId',
          labelCol: 'name',
        },
      },
      {
        headerName: 'Відоча приналежність',
        field: 'departmentAffiliationId',
        editable: true,
        cellEditorFramework: EditorComponent,
        cellRendererFramework: RendererComponent,
        cellEditorParams: {
          data: this.departmentAffiliation,
          valueCol: 'departmentAffiliationId',
          labelCol: 'name',
        },
      },
      {
        headerName: 'Місцезнаходження, км+ справа',
        field: 'locationRight',
        editable: true,
      },
      {
        headerName: 'Місцезнаходження, км+ зліва',
        field: 'locationLeft',
        editable: true,
      },
      {
        headerName: 'Місцезнаходження, км+ по осі',
        field: 'locationAxis',
        editable: true,
      },
      {
        headerName: 'Відстань до об\'єкту від вісі дор., м',
        field: 'distance',
        editable: true,
      },
      {
        headerName: 'Потужність',
        field: 'capacity',
        editable: true,
      },
      {
        headerName: 'Елементи облаштування',
        field: 'arrangementElements',
        editable: true,
        cellEditor: 'largeText',
      },
    ];
  }

}