bus-stop.component.ts 8.48 KB
import {Component, ViewEncapsulation, AfterViewInit, ViewChild} from '@angular/core';
import {TdLoadingService} from '@covalent/core';
import {GridOptions, IGetRowsParams, IRowModel} from 'ag-grid/main';

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

import {BusStopService} from '../../../services/bus-stop.service';
import {BusStop} from '../../../models/bus-stop';
import {EditorComponent} from '../../../helpers/editor.component';
import {RendererComponent} from '../../../helpers/renderer.component';
import {MapEditorComponent} from '../../../helpers/map-editor.component';
import {MapRendererComponent} from '../../../helpers/map-renderer.component';
import {BusStopCreateService} from '../../../services/bus-stop-create.service';
import {BooleanSelectListService} from '../../../services/boolean-select-list.service';
import {RegionSelectList} from '../../../models/region-select-list';
import {StateCommonSelectList} from '../../../models/state-common-select-list';
import {RoadSelectList} from '../../../models/road-select-list';
import {BooleanSelectList} from '../../../models/boolean-select-list';
import {SettlementSelectList} from '../../../models/settlement-select-list';
import {SurfaceTypeSelectList} from '../../../models/surface-type-select-list';
import {MapItemsComponent} from '../map-items/map-items.component';
import {routerTransition} from '../../../animations/router.animation';

@Component({
    // tslint:disable-next-line:component-selector
    selector: 'bus-grid',
    templateUrl: 'bus-stop.component.html',
    styleUrls: ['bus-stop.scss'],
    encapsulation: ViewEncapsulation.None,
})
export class BusStopComponent extends StatementBase {
    @ViewChild(MapItemsComponent) mapItems: MapItemsComponent;
    public regions: RegionSelectList[];
    public states: StateCommonSelectList[];
    public surfaceTypes: SurfaceTypeSelectList[];
    public settlements: SettlementSelectList[];
    public roads: RoadSelectList[];
    public boolean: BooleanSelectList[];

    constructor(protected service: BusStopService,
                protected dataService: BusStopCreateService,
                protected booleanService: BooleanSelectListService,
                protected loadingService: TdLoadingService,) {
        super();
    }

    public showOnMap(): void {
        this.mapItems.showMap();
    }

    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: 'locationRight',
                editable: true,
            },
            {
                headerName: 'Місцезнаходження, км+ зліва',
                field: 'locationLeft',
                editable: true,
            },
            {
                headerName: 'Тип покриття',
                field: 'surfaceTypeId',
                editable: true,
                cellEditorFramework: EditorComponent,
                cellRendererFramework: RendererComponent,
                cellEditorParams: {
                    data: this.surfaceTypes,
                    valueCol: 'surfaceTypeId',
                    labelCol: 'name',
                },
            },
            {
                headerName: 'Технічний стан',
                field: 'stateCommonId',
                editable: true,
                cellEditorFramework: EditorComponent,
                cellRendererFramework: RendererComponent,
                cellEditorParams: {
                    data: this.states,
                    valueCol: 'stateCommonId',
                    labelCol: 'value',
                },
            },
            {
                headerName: 'Наявність елементів зупин. майдан',
                field: 'areaStopAvailability',
                editable: true,
                cellEditorFramework: EditorComponent,
                cellRendererFramework: RendererComponent,
                cellEditorParams: {
                    data: this.boolean,
                    valueCol: 'value',
                    labelCol: 'label',
                },
            },
            {
                headerName: 'Наявність елементів посад. майдан',
                field: 'areaLandAvailability',
                editable: true,
                cellEditorFramework: EditorComponent,
                cellRendererFramework: RendererComponent,
                cellEditorParams: {
                    data: this.boolean,
                    valueCol: 'value',
                    labelCol: 'label',
                },
            },
            {
                headerName: 'Наявність елементів заїзна кишеня',
                field: 'pocketAvailability',
                editable: true,
                cellEditorFramework: EditorComponent,
                cellRendererFramework: RendererComponent,
                cellEditorParams: {
                    data: this.boolean,
                    valueCol: 'value',
                    labelCol: 'label',
                },
            },
            {
                headerName: 'Наявність туалету',
                field: 'toiletAvailability',
                editable: true,
                cellEditorFramework: EditorComponent,
                cellRendererFramework: RendererComponent,
                cellEditorParams: {
                    data: this.boolean,
                    valueCol: 'value',
                    labelCol: 'label',
                },
            },
            {
                headerName: 'Рік будівництва',
                field: 'yearBuild',
                editable: true,
            },
            {
                headerName: 'Рік ремонту',
                field: 'yearRepair',
                editable: true,
            },
            {
                headerName: 'position',
                field: 'position',
                editable: true,
                cellEditorFramework: MapEditorComponent,
                cellRendererFramework: MapRendererComponent,
                cellEditorParams: {
                    position: 'position'
                },
            },
        ];
    }

    protected initFunction(): void {
        this.booleanService.getModels().then((models: BooleanSelectList[]) => this.boolean = models);
        this.dataService.getModels().then((models: any) => {
            this.regions = models.regionSelectListDsM as RegionSelectList[];
            this.states = models.stateCommonSelectListDsM as StateCommonSelectList[];
            this.surfaceTypes = models.surfaceTypeSelectListDsM as SurfaceTypeSelectList[];
            this.settlements = models.settlementSelectListDsM as SettlementSelectList[];
            this.roads = models.roadSelectListDsM as RoadSelectList[];
        }).then(() => {
            this.bootstrapGrid();
        });
    }

    protected onCellFocused($event: any): void {
        console.log($event);
        // let model = this.gridOptions.api.getModel();
        // let row = model.getRow($event.rowIndex);
        // console.log(row);
        // this.mapItems.refreshMap(row);
    }

    protected onSelectionChanged() {
        console.log('onSelectionChanged');
        super.onSelectionChanged();
        let rows: IRowModel[] = this.gridOptions.api.getSelectedRows();
        console.log(rows);
        this.mapItems.refreshMap(rows);
    }

}