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); } }