Commit 198b5d4d84375fb1be6012049f3943e45e5ac5e1

Authored by Administrator
1 parent 4384eb9b

refactor bus stop

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 &#39;rxjs/add/operator/toPromise&#39;; @@ -5,7 +5,7 @@ import &#39;rxjs/add/operator/toPromise&#39;;
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> {