Commit 198b5d4d84375fb1be6012049f3943e45e5ac5e1
1 parent
4384eb9b
refactor bus stop
Showing
5 changed files
with
190 additions
and
71 deletions
Show diff stats
src/app/pages/statements/components/busStop2/busStop2.component.ts
@@ -22,7 +22,6 @@ import { RendererComponent } from '../../../../components/renderer.component'; | @@ -22,7 +22,6 @@ import { RendererComponent } from '../../../../components/renderer.component'; | ||
22 | templateUrl: './busStop2.html', | 22 | templateUrl: './busStop2.html', |
23 | }) | 23 | }) |
24 | export class BusStop2 { | 24 | export class BusStop2 { |
25 | - // source: LocalDataSource = new LocalDataSource(); | ||
26 | 25 | ||
27 | public showGrid: boolean; | 26 | public showGrid: boolean; |
28 | public rowData: any[] = []; | 27 | public rowData: any[] = []; |
@@ -40,45 +39,52 @@ export class BusStop2 { | @@ -40,45 +39,52 @@ export class BusStop2 { | ||
40 | protected service: BusStop2Service, | 39 | protected service: BusStop2Service, |
41 | private dataService: BusStopCreateService, | 40 | private dataService: BusStopCreateService, |
42 | ) { | 41 | ) { |
43 | - this.gridOptions = <GridOptions>{}; | ||
44 | - this.gridOptions.rowModelType = 'virtual'; | ||
45 | - this.showGrid = true; | ||
46 | - let dataSource = { | ||
47 | - rowCount: null, // behave as infinite scroll | ||
48 | - getRows: function (params) { | ||
49 | - // At this point in your code, you would call the server, using $http if in AngularJS. | ||
50 | - // To make the demo look real, wait for 500ms before returning | ||
51 | - // take a slice of the total rows | ||
52 | - let rowsThisPage = this.rowData.slice(params.startRow, params.endRow); | ||
53 | - // if on or after the last page, work out the last row. | ||
54 | - let lastRow = -1; | ||
55 | - if (this.rowData.length <= params.endRow) { | ||
56 | - lastRow = this.rowData.length; | ||
57 | - } | ||
58 | - // call the success callback | ||
59 | - params.successCallback(rowsThisPage, lastRow); | ||
60 | - }.bind(this) | ||
61 | - }; | ||
62 | - this.gridOptions.datasource = dataSource; | 42 | + this.gridOptions = <GridOptions>{}; |
43 | + this.showGrid = true; | ||
44 | + this.gridOptions.rowModelType = 'virtual'; | ||
63 | this.dataService.getModels().then(models => { | 45 | this.dataService.getModels().then(models => { |
64 | this.regions = models.regionSelectListDsM as RegionSelectList[]; | 46 | this.regions = models.regionSelectListDsM as RegionSelectList[]; |
65 | this.states = models.stateCommonSelectListDsM as StateCommonSelectList[]; | 47 | this.states = models.stateCommonSelectListDsM as StateCommonSelectList[]; |
66 | this.surfaceTypes = models.surfaceTypeSelectListDsM as SurfaceTypeSelectList[]; | 48 | this.surfaceTypes = models.surfaceTypeSelectListDsM as SurfaceTypeSelectList[]; |
67 | this.settlements = models.settlementSelectListDsM as SettlementSelectList[]; | 49 | this.settlements = models.settlementSelectListDsM as SettlementSelectList[]; |
68 | this.roads = models.roadSelectListDsM as RoadSelectList[]; | 50 | this.roads = models.roadSelectListDsM as RoadSelectList[]; |
69 | - this.service.getData().then((data) => { | 51 | + }).then(() => { |
52 | + this.createColumnDefs(); | ||
53 | + }); | ||
54 | + this.service.getData().then((data) => { | ||
70 | if (data.length){ | 55 | if (data.length){ |
71 | - // this.source.load(data); | ||
72 | this.rowData = data; | 56 | this.rowData = data; |
73 | } else { | 57 | } else { |
74 | this.rowData = [new busStop2]; | 58 | this.rowData = [new busStop2]; |
75 | } | 59 | } |
76 | - this.createColumnDefs(); | ||
77 | - this.gridOptions.api.refreshVirtualPageCache(); | ||
78 | - }); | 60 | + }).then(() => { |
61 | + this.gridOptions.api.setDatasource(this.setRowData(this.rowData)); | ||
62 | + this.gridOptions.api.refreshVirtualPageCache(); | ||
79 | }); | 63 | }); |
80 | } | 64 | } |
81 | 65 | ||
66 | + | ||
67 | + setRowData(allOfTheData) { | ||
68 | + let dataSource = { | ||
69 | + rowCount: null, // behave as infinite scroll | ||
70 | + getRows: function (params) { | ||
71 | + console.log('asking for ' + params.startRow + ' to ' + params.endRow); | ||
72 | + // At this point in your code, you would call the server, using $http if in AngularJS. | ||
73 | + // To make the demo look real, wait for 500ms before returning | ||
74 | + // take a slice of the total rows | ||
75 | + let rowsThisPage = allOfTheData.slice(params.startRow, params.endRow); | ||
76 | + // if on or after the last page, work out the last row. | ||
77 | + let lastRow = -1; | ||
78 | + if (allOfTheData.length <= params.endRow) { | ||
79 | + lastRow = allOfTheData.length; | ||
80 | + } | ||
81 | + // call the success callback | ||
82 | + params.successCallback(rowsThisPage, lastRow); | ||
83 | + } | ||
84 | + }; | ||
85 | + return dataSource; | ||
86 | + | ||
87 | + } | ||
82 | onDeleteConfirm(event): void { | 88 | onDeleteConfirm(event): void { |
83 | if (window.confirm('Вы уверены что хотите удалить??')) { | 89 | if (window.confirm('Вы уверены что хотите удалить??')) { |
84 | event.confirm.resolve(); | 90 | event.confirm.resolve(); |
@@ -88,29 +94,10 @@ export class BusStop2 { | @@ -88,29 +94,10 @@ export class BusStop2 { | ||
88 | } | 94 | } |
89 | public addNewRow() { | 95 | public addNewRow() { |
90 | this.rowData.unshift(new busStop2()); | 96 | this.rowData.unshift(new busStop2()); |
97 | + this.gridOptions.api.setDatasource(this.setRowData(this.rowData)); | ||
91 | this.gridOptions.api.refreshVirtualPageCache(); | 98 | this.gridOptions.api.refreshVirtualPageCache(); |
92 | } | 99 | } |
93 | - private setRowData(data) { | ||
94 | - let dataSource = { | ||
95 | - rowCount: null, // behave as infinite scroll | ||
96 | - getRows: function (params) { | ||
97 | - // At this point in your code, you would call the server, using $http if in AngularJS. | ||
98 | - // To make the demo look real, wait for 500ms before returning | ||
99 | - setTimeout( function() { | ||
100 | - // take a slice of the total rows | ||
101 | - var rowsThisPage = data.slice(params.startRow, params.endRow); | ||
102 | - // if on or after the last page, work out the last row. | ||
103 | - var lastRow = -1; | ||
104 | - if (data.length <= params.endRow) { | ||
105 | - lastRow = data.length; | ||
106 | - } | ||
107 | - // call the success callback | ||
108 | - params.successCallback(rowsThisPage, lastRow); | ||
109 | - }, 500); | ||
110 | - } | ||
111 | - }; | ||
112 | - this.gridOptions.datasource = dataSource; | ||
113 | - } | 100 | + |
114 | private createColumnDefs() { | 101 | private createColumnDefs() { |
115 | this.columnDefs = [ | 102 | this.columnDefs = [ |
116 | { | 103 | { |
@@ -124,7 +111,6 @@ export class BusStop2 { | @@ -124,7 +111,6 @@ export class BusStop2 { | ||
124 | { | 111 | { |
125 | headerName: 'ID', | 112 | headerName: 'ID', |
126 | field: 'id', | 113 | field: 'id', |
127 | - editable: true, | ||
128 | width: 150 | 114 | width: 150 |
129 | }, | 115 | }, |
130 | { | 116 | { |
@@ -180,4 +166,75 @@ export class BusStop2 { | @@ -180,4 +166,75 @@ export class BusStop2 { | ||
180 | } | 166 | } |
181 | ]; | 167 | ]; |
182 | } | 168 | } |
169 | + | ||
170 | + | ||
171 | + private onCellClicked($event) { | ||
172 | + console.log('onCellClicked: ' + $event.rowIndex + ' ' + $event.colDef.field); | ||
173 | + } | ||
174 | + | ||
175 | + private onCellValueChanged($event) { | ||
176 | + console.log($event.data); | ||
177 | + console.log('onCellValueChanged: ' + $event.oldValue + ' to ' + $event.newValue); | ||
178 | + } | ||
179 | + | ||
180 | + private onCellDoubleClicked($event) { | ||
181 | + console.log('onCellDoubleClicked: ' + $event.rowIndex + ' ' + $event.colDef.field); | ||
182 | + } | ||
183 | + | ||
184 | + private onCellContextMenu($event) { | ||
185 | + console.log('onCellContextMenu: ' + $event.rowIndex + ' ' + $event.colDef.field); | ||
186 | + } | ||
187 | + | ||
188 | + private onCellFocused($event) { | ||
189 | + console.log('onCellFocused: (' + $event.rowIndex + ',' + $event.colIndex + ')'); | ||
190 | + } | ||
191 | + | ||
192 | + private onRowSelected($event) { | ||
193 | + // taking out, as when we 'select all', it prints to much to the console!! | ||
194 | + // console.log('onRowSelected: ' + $event.node.data.name); | ||
195 | + } | ||
196 | + | ||
197 | + private onSelectionChanged() { | ||
198 | + console.log('selectionChanged'); | ||
199 | + } | ||
200 | + | ||
201 | + private onBeforeFilterChanged() { | ||
202 | + console.log('beforeFilterChanged'); | ||
203 | + } | ||
204 | + | ||
205 | + private onAfterFilterChanged() { | ||
206 | + console.log('afterFilterChanged'); | ||
207 | + } | ||
208 | + | ||
209 | + private onFilterModified() { | ||
210 | + console.log('onFilterModified'); | ||
211 | + } | ||
212 | + | ||
213 | + private onBeforeSortChanged() { | ||
214 | + console.log('onBeforeSortChanged'); | ||
215 | + } | ||
216 | + | ||
217 | + private onAfterSortChanged() { | ||
218 | + console.log('onAfterSortChanged'); | ||
219 | + } | ||
220 | + | ||
221 | + private onVirtualRowRemoved($event) { | ||
222 | + // because this event gets fired LOTS of times, we don't print it to the | ||
223 | + // console. if you want to see it, just uncomment out this line | ||
224 | + // console.log('onVirtualRowRemoved: ' + $event.rowIndex); | ||
225 | + } | ||
226 | + | ||
227 | + private onRowClicked($event) { | ||
228 | + console.log('onRowClicked: ' + $event.node.data.name); | ||
229 | + } | ||
230 | + | ||
231 | + public onQuickFilterChanged($event) { | ||
232 | + this.gridOptions.api.setQuickFilter($event.target.value); | ||
233 | + } | ||
234 | + | ||
235 | + // here we use one generic event to handle all the column type events. | ||
236 | + // the method just prints the event name | ||
237 | + private onColumnEvent($event) { | ||
238 | + console.log('onColumnEvent: ' + $event); | ||
239 | + } | ||
183 | } | 240 | } |
src/app/pages/statements/components/busStop2/busStop2.html
@@ -3,8 +3,47 @@ | @@ -3,8 +3,47 @@ | ||
3 | <div class="row"> | 3 | <div class="row"> |
4 | <ba-card title="Автобусні зупинки" baCardClass="with-scroll"> | 4 | <ba-card title="Автобусні зупинки" baCardClass="with-scroll"> |
5 | <button class="btn btn-warning" (click)="addNewRow()" type="button">Добавить новое поле</button> | 5 | <button class="btn btn-warning" (click)="addNewRow()" type="button">Добавить новое поле</button> |
6 | - <ag-grid-ng2 #agGrid style="width: 100%; height: 350px;" class="ag-dark" [gridOptions]="gridOptions" [columnDefs]="columnDefs" [rowData]="rowData" enableColResize enableSorting enableFilter groupHeaders suppressRowClickSelection toolPanelSuppressGroups | ||
7 | - toolPanelSuppressValues debug rowHeight="22" rowSelection="multiple"> | 6 | + <ag-grid-ng2 #agGrid style="width: 100%; height: 350px;" class="ag-dark" |
7 | + [gridOptions]="gridOptions" | ||
8 | + [columnDefs]="columnDefs" | ||
9 | + [rowData]="rowData" | ||
10 | + enableColResize | ||
11 | + enableSorting | ||
12 | + enableFilter | ||
13 | + groupHeaders | ||
14 | + suppressRowClickSelection | ||
15 | + toolPanelSuppressGroups | ||
16 | + | ||
17 | + toolPanelSuppressValues | ||
18 | + debug | ||
19 | + rowHeight="22" | ||
20 | + rowSelection="multiple" | ||
21 | + | ||
22 | + (cellClicked)="onCellClicked($event)" | ||
23 | + (cellValueChanged)="onCellValueChanged($event)" | ||
24 | + | ||
25 | + (cellContextMenu)="onCellContextMenu($event)" | ||
26 | + | ||
27 | + (cellFocused)="onCellFocused($event)" | ||
28 | + (rowSelected)="onRowSelected($event)" | ||
29 | + (selectionChanged)="onSelectionChanged()" | ||
30 | + (beforeFilterChanged)="onBeforeFilterChanged()" | ||
31 | + (afterFilterChanged)="onAfterFilterChanged()" | ||
32 | + (filterModified)="onFilterModified()" | ||
33 | + (beforeSortChanged)="onBeforeSortChanged()" | ||
34 | + (afterSortChanged)="onAfterSortChanged()" | ||
35 | + (virtualRowRemoved)="onVirtualRowRemoved($event)" | ||
36 | + | ||
37 | + | ||
38 | + (columnEverythingChanged)="onColumnEvent($event)" | ||
39 | + (columnRowGroupChanged)="onColumnEvent($event)" | ||
40 | + (columnValueChanged)="onColumnEvent($event)" | ||
41 | + (columnMoved)="onColumnEvent($event)" | ||
42 | + (columnVisible)="onColumnEvent($event)" | ||
43 | + (columnGroupOpened)="onColumnEvent($event)" | ||
44 | + (columnResized)="onColumnEvent($event)" | ||
45 | + (columnPinnedCountChanged)="onColumnEvent($event)"> | ||
46 | + > | ||
8 | </ag-grid-ng2> | 47 | </ag-grid-ng2> |
9 | </ba-card> | 48 | </ba-card> |
10 | </div> | 49 | </div> |
src/app/pages/statements/components/busStop2/busStop2.service.ts
@@ -11,26 +11,26 @@ export class BusStop2Service { | @@ -11,26 +11,26 @@ export class BusStop2Service { | ||
11 | private headers = new Headers({'Content-Type': 'application/json'}); | 11 | private headers = new Headers({'Content-Type': 'application/json'}); |
12 | constructor(private http: Http) { } | 12 | constructor(private http: Http) { } |
13 | getData(): Promise<busStop2[]> { | 13 | getData(): Promise<busStop2[]> { |
14 | - let busStops: busStop2[] = [{ | ||
15 | - roadId: 1, | ||
16 | - regionId: 1, | ||
17 | - settlementId: 1, | ||
18 | - surfaceTypeId: '1', | ||
19 | - locationLeft: '1', | ||
20 | - locationRight: '1', | ||
21 | - stateCommonId: 1, | ||
22 | - areaStopAvailability: '', | ||
23 | - areaLandAvailability: '', | ||
24 | - pocketAvailability: '', | ||
25 | - toiletAvailability: '', | ||
26 | - yearBuild: '', | ||
27 | - yearRepair: '', | ||
28 | - }]; | ||
29 | - return Promise.resolve(busStops); | ||
30 | - // return this.http.get(this.url) | ||
31 | - // .toPromise() | ||
32 | - // .then(response => response.json().busStopEditDsM as busStop2[]) | ||
33 | - // .catch(this.handleError); | 14 | + // let busStops: busStop2[] = [{ |
15 | + // roadId: 1, | ||
16 | + // regionId: 1, | ||
17 | + // settlementId: 1, | ||
18 | + // surfaceTypeId: '1', | ||
19 | + // locationLeft: '1', | ||
20 | + // locationRight: '1', | ||
21 | + // stateCommonId: 1, | ||
22 | + // areaStopAvailability: '', | ||
23 | + // areaLandAvailability: '', | ||
24 | + // pocketAvailability: '', | ||
25 | + // toiletAvailability: '', | ||
26 | + // yearBuild: '', | ||
27 | + // yearRepair: '', | ||
28 | + // }]; | ||
29 | + // return Promise.resolve(busStops); | ||
30 | + return this.http.get(this.url) | ||
31 | + .toPromise() | ||
32 | + .then(response => response.json().busStopEditDsM as busStop2[]) | ||
33 | + .catch(this.handleError); | ||
34 | } | 34 | } |
35 | private handleError(error: any): Promise<any> { | 35 | private handleError(error: any): Promise<any> { |
36 | console.error('An error occured', error); | 36 | console.error('An error occured', error); |
src/app/pages/statements/components/busStop2/directory.service.ts
0 → 100644
1 | +import { Injectable } from '@angular/core'; | ||
2 | +import { Headers, Http } from '@angular/http'; | ||
3 | + | ||
4 | +import 'rxjs/add/operator/toPromise'; | ||
5 | + | ||
6 | +import { busStop2 } from './busStop2'; | ||
7 | + | ||
8 | +@Injectable() | ||
9 | +export class BusStop2Service { | ||
10 | + private url = 'http://localhost:5000/busstop/directory'; | ||
11 | + private headers = new Headers({'Content-Type': 'application/json'}); | ||
12 | + constructor(private http: Http) { } | ||
13 | + getData(): Promise<busStop2[]> { | ||
14 | + return this.http.get(this.url) | ||
15 | + .toPromise() | ||
16 | + .then(response => response.json()) | ||
17 | + .catch(this.handleError); | ||
18 | + } | ||
19 | + private handleError(error: any): Promise<any> { | ||
20 | + console.error('An error occured', error); | ||
21 | + return Promise.reject(error.message || error); | ||
22 | + } | ||
23 | +} |
src/app/services/busstopcreate.service.ts
@@ -5,7 +5,7 @@ import 'rxjs/add/operator/toPromise'; | @@ -5,7 +5,7 @@ import 'rxjs/add/operator/toPromise'; | ||
5 | 5 | ||
6 | @Injectable() | 6 | @Injectable() |
7 | export class BusStopCreateService { | 7 | export class BusStopCreateService { |
8 | - private apiUrl = 'http://localhost:5000/busstop'; | 8 | + private apiUrl = 'http://localhost:5000/busstop/directory'; |
9 | private headers = new Headers({'Content-Type': 'applicaton/json'}); | 9 | private headers = new Headers({'Content-Type': 'applicaton/json'}); |
10 | constructor(private http: Http) { } | 10 | constructor(private http: Http) { } |
11 | getModels(): Promise<any> { | 11 | getModels(): Promise<any> { |