diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 6026d66..bf923cf 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -5,6 +5,9 @@ import { HttpModule } from '@angular/http'; import { RouterModule } from '@angular/router'; import { removeNgStyles, createNewHosts, createInputTransfer } from '@angularclass/hmr'; +// Services +import { RegionSelectListService } from './services/regionselectlist.service'; + /* * Platform and Environment providers/directives/pipes */ @@ -50,7 +53,8 @@ export type StoreType = { ], providers: [ // expose our Services and Providers into Angular's dependency injection ENV_PROVIDERS, - APP_PROVIDERS + APP_PROVIDERS, + RegionSelectListService ] }) diff --git a/src/app/components/editor.component.ts b/src/app/components/editor.component.ts new file mode 100644 index 0000000..0f6ad9d --- /dev/null +++ b/src/app/components/editor.component.ts @@ -0,0 +1,51 @@ +import { Component, ViewContainerRef, ViewChild, AfterViewInit } from '@angular/core'; + +import { AgEditorComponent } from 'ag-grid-ng2/main'; + +import { RegionSelectList } from '../models/regionselectlist'; + +@Component({ + selector: 'editor-cell', + template: ` +
+

{{item.name}}

+
+ ` +}) +export class EditorComponent implements AgEditorComponent, AfterViewInit { + @ViewChild('container', {read: ViewContainerRef}) public container; + public item: any; + public data: RegionSelectList[]; + private params: any; + ngAfterViewInit() { + this.container.element.nativeElement.focus(); + } + + agInit(params: any): void { + this.params = params; + this.data = params.data || []; + // this.setHappy(params.value === "Happy"); + } + + getValue(): any { + return this.item; + } + + isPopup(): boolean { + return true; + } + + setValue(item: any): void { + this.item = item; + } + + onClick(item: any) { + this.setValue(item); + this.params.api.stopEditing(); + } + + onKeyDown(event): boolean { + event.stopPropagation(); + return false; + } +} diff --git a/src/app/components/renderer.component.ts b/src/app/components/renderer.component.ts new file mode 100644 index 0000000..c59be85 --- /dev/null +++ b/src/app/components/renderer.component.ts @@ -0,0 +1,28 @@ +import { Component } from '@angular/core'; + +import { AgRendererComponent } from 'ag-grid-ng2/main'; + +import { RegionSelectList } from '../models/regionselectlist'; + +@Component({ + selector: 'render-cell', + template: `{{this.region.name}}` +}) +export class RendererComponent implements AgRendererComponent { + private params: any; + private region: RegionSelectList; + agInit(params: any): void { + this.params = params; + console.log(params); + this.setValue(params); + } + refresh(params: any): void { + this.params = params; + console.log(params); + this.setValue(params); + } + private setValue(params) { + this.region = params.value; + console.log(params); + } +} diff --git a/src/app/models/regionselectlist.ts b/src/app/models/regionselectlist.ts new file mode 100644 index 0000000..900eb7f --- /dev/null +++ b/src/app/models/regionselectlist.ts @@ -0,0 +1,4 @@ +export class RegionSelectList { + regionId: number; + name: string; + } diff --git a/src/app/models/roadselectlist.ts b/src/app/models/roadselectlist.ts new file mode 100644 index 0000000..df966f3 --- /dev/null +++ b/src/app/models/roadselectlist.ts @@ -0,0 +1 @@ +export class RoadSelectList { } diff --git a/src/app/models/settlementselectlist.ts b/src/app/models/settlementselectlist.ts new file mode 100644 index 0000000..cdf7f7a --- /dev/null +++ b/src/app/models/settlementselectlist.ts @@ -0,0 +1 @@ +export class SettlementSelectList { } diff --git a/src/app/models/statecommonselectlist.ts b/src/app/models/statecommonselectlist.ts new file mode 100644 index 0000000..427ab20 --- /dev/null +++ b/src/app/models/statecommonselectlist.ts @@ -0,0 +1 @@ +export class StateCommonSelectList { } diff --git a/src/app/models/surfacetypeselectlist.ts b/src/app/models/surfacetypeselectlist.ts new file mode 100644 index 0000000..1820309 --- /dev/null +++ b/src/app/models/surfacetypeselectlist.ts @@ -0,0 +1 @@ +export class SurfaceTypeSelectList { } diff --git a/src/app/pages/statements/components/busStop2/busStop2.component.ts b/src/app/pages/statements/components/busStop2/busStop2.component.ts index 677b079..252ee2b 100644 --- a/src/app/pages/statements/components/busStop2/busStop2.component.ts +++ b/src/app/pages/statements/components/busStop2/busStop2.component.ts @@ -4,6 +4,10 @@ import { BusStop2Service } from './busStop2.service'; import { busStop2 } from './busStop2'; import { LocalDataSource } from 'ng2-smart-table'; import { GridOptions } from 'ag-grid/main'; +import { RegionSelectListService } from '../../../../services/regionselectlist.service'; +import { RegionSelectList } from '../../../../models/regionselectlist'; +import { EditorComponent } from '../../../../components/editor.component'; +import { RendererComponent } from '../../../../components/renderer.component'; @Component({ selector: 'statement-table', @@ -19,24 +23,27 @@ export class BusStop2 { public showGrid: boolean; public rowData: any[]; public rowCount: string; + public regions: RegionSelectList[]; private gridOptions: GridOptions; private columnDefs: any[]; - constructor(protected service: BusStop2Service) { + constructor(protected service: BusStop2Service, private regionlistservice: RegionSelectListService) { + this.regionlistservice.getModels().then(models => { + this.regions = models; + this.createColumnDefs(); + }); this.gridOptions = {}; // this.gridOptions.rowModelType = 'virtual'; this.service.getData().then((data) => { console.log(data); - if(data.length){ + if (data.length){ // this.source.load(data); this.rowData = data; } else { - this.rowData = [new busStop2] + this.rowData = [new busStop2]; } - }); - this.createColumnDefs(); this.showGrid = true; } @@ -66,15 +73,20 @@ export class BusStop2 { }, { headerName: 'Назва дороги', - field: 'road', + field: 'roadId', editable: true, width: 150 }, { headerName: 'Область', - field: 'region', + field: 'regionId', editable: true, - width: 150 + width: 150, + cellEditorFramework: EditorComponent, + cellRendererFramework: RendererComponent, + cellEditorParams: { + data: this.regions + } }, { headerName: 'Місцезнаходження, км+ справа', @@ -90,7 +102,7 @@ export class BusStop2 { }, { headerName: 'Технічний стан', - field: 'state', + field: 'stateCommonId', editable: true, width: 150 } diff --git a/src/app/pages/statements/components/busStop2/busStop2.ts b/src/app/pages/statements/components/busStop2/busStop2.ts index 9f40691..7766d57 100644 --- a/src/app/pages/statements/components/busStop2/busStop2.ts +++ b/src/app/pages/statements/components/busStop2/busStop2.ts @@ -1,15 +1,15 @@ export class busStop2 { - RoadId: number; - RegionId: number; - SettlementId: number; - LocationLeft: string; - LocationRight: string; - SurfaceTypeId: string; - AreaStopAvailability: string; - AreaLandAvailability: string; - PocketAvailability: string; - ToiletAvailability: string; - YearBuild: string; - YearRepair: string; - StateCommonId: number; + roadId: number; + regionId: number; + settlementId: number; + locationLeft: string; + locationRight: string; + surfaceTypeId: string; + areaStopAvailability: string; + areaLandAvailability: string; + pocketAvailability: string; + toiletAvailability: string; + yearBuild: string; + yearRepair: string; + stateCommonId: number; } diff --git a/src/app/pages/statements/statements.module.ts b/src/app/pages/statements/statements.module.ts index 48a0540..3c91a4c 100644 --- a/src/app/pages/statements/statements.module.ts +++ b/src/app/pages/statements/statements.module.ts @@ -9,6 +9,8 @@ import { routing } from './statements.routing'; import { Statements } from './statements.component'; import { BusStop } from './components/busStop/busStop.component'; import { BusStop2 } from './components/busStop2/busStop2.component'; +import { EditorComponent } from '../../components/editor.component'; +import { RendererComponent } from '../../components/renderer.component'; import { BusStopService } from './components/busStop/busStop.service'; import { BusStop2Service } from './components/busStop2/busStop2.service'; @@ -20,13 +22,17 @@ import { BusStop2Service } from './components/busStop2/busStop2.service'; routing, Ng2SmartTableModule, AgGridModule.withComponents([ - BusStop2 + BusStop2, + EditorComponent, + RendererComponent, ]), ], declarations: [ Statements, BusStop, - BusStop2 + BusStop2, + EditorComponent, + RendererComponent, ], providers: [ BusStopService, diff --git a/src/app/services/regionselectlist.service.ts b/src/app/services/regionselectlist.service.ts new file mode 100644 index 0000000..8f7e3f7 --- /dev/null +++ b/src/app/services/regionselectlist.service.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@angular/core'; +import { Headers, Http } from '@angular/http'; + +import 'rxjs/add/operator/toPromise'; + +import { RegionSelectList } from '../models/regionselectlist'; + +@Injectable() +export class RegionSelectListService { + private apiUrl = 'http://localhost:5000/directory/regionds'; + private headers = new Headers({'Content-Type': 'applicaton/json'}); + constructor(private http: Http) { } + getModels(): Promise { + return this.http.get(this.apiUrl) + .toPromise() + .then(response => response.json().regionSelectListDsM as RegionSelectList[]) + .catch(this.handleError); + } + private handleError(error: any): Promise { + console.error('An error occured', error); + return Promise.reject(error.message || error); + } +} diff --git a/src/app/services/roadselectlist.service.ts b/src/app/services/roadselectlist.service.ts new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/app/services/roadselectlist.service.ts diff --git a/src/app/services/settlementselectlist.service.ts b/src/app/services/settlementselectlist.service.ts new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/app/services/settlementselectlist.service.ts diff --git a/src/app/services/statecommonselectlist.service.ts b/src/app/services/statecommonselectlist.service.ts new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/app/services/statecommonselectlist.service.ts diff --git a/src/app/services/surfacetypeselectlist.service.ts b/src/app/services/surfacetypeselectlist.service.ts new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/app/services/surfacetypeselectlist.service.ts -- libgit2 0.21.4