From fb475cb77f3b6d5acee18d6b82671125c52ce412 Mon Sep 17 00:00:00 2001 From: yarik Date: Tue, 14 Feb 2017 12:35:48 +0200 Subject: [PATCH] Observable --- src/models/statement.base.ts | 49 +++++++++++++++++++++++++++++++++++++------------ src/services/statement.base.service.ts | 6 +++--- 2 files changed, 40 insertions(+), 15 deletions(-) diff --git a/src/models/statement.base.ts b/src/models/statement.base.ts index e769673..02ecb18 100644 --- a/src/models/statement.base.ts +++ b/src/models/statement.base.ts @@ -10,6 +10,9 @@ export abstract class StatementBase implements AfterViewInit, OnInit { protected gridOptions: GridOptions; protected service: StatementBaseService; protected loadingService: TdLoadingService; + protected paramsSubject: Subject = new Subject(); + protected params: IGetRowsParams; + protected data: Observable; public showGrid: boolean; public rowCount: string; public isLoading: boolean = false; @@ -24,6 +27,24 @@ export abstract class StatementBase implements AfterViewInit, OnInit { ngAfterViewInit(): void { this.gridOptions.api.setDatasource(this.setRowData()); + this.data = this.paramsSubject + .distinctUntilChanged() + .switchMap((params: IGetRowsParams) => { + return this.service.getData(params); + }).catch((error: any) => { + console.log(error); + return Observable.of([]); + }); + this.data.subscribe((data: any[]) => { + if (!data.length) { + data = [this.createModel()]; + } + let lastRow: number = -1; + if (data.length <= this.params.endRow) { + lastRow = data.length; + } + this.params.successCallback(data, lastRow); + }); } enableLoader(): void { @@ -91,16 +112,18 @@ export abstract class StatementBase implements AfterViewInit, OnInit { let dataSource: {} = { rowCount: null, getRows: (params: IGetRowsParams) => { - this.service.getData(params).subscribe((data: any[]) => { - if (!data.length) { - data = [this.createModel()]; - } - let lastRow: number = -1; - if (data.length <= params.endRow) { - lastRow = data.length; - } - params.successCallback(data, lastRow); - }); + this.params = params; + this.paramsSubject.next(params); + // this.service.getData(params).subscribe((data: any[]) => { + // if (!data.length) { + // data = [this.createModel()]; + // } + // let lastRow: number = -1; + // if (data.length <= params.endRow) { + // lastRow = data.length; + // } + // params.successCallback(data, lastRow); + // }); }, }; return dataSource; @@ -142,7 +165,8 @@ export abstract class StatementBase implements AfterViewInit, OnInit { } this.enableLoader(); result = this.service.create(data).then((model: any) => { - this.gridOptions.api.setDatasource(this.setRowData()); + this.gridOptions.api.refreshVirtualPageCache(); + // this.gridOptions.api.setDatasource(this.setRowData()); this.disableLoader(); this.isNew = false; }); @@ -163,7 +187,8 @@ export abstract class StatementBase implements AfterViewInit, OnInit { this.service.delete(id).then(() => { if (index === (array.length - 1)) { this.disableLoader(); - this.gridOptions.api.setDatasource(this.setRowData()); + this.gridOptions.api.refreshVirtualPageCache(); + // this.gridOptions.api.setDatasource(this.setRowData()); this.gridOptions.api.deselectAll(); this.isNew = false; } diff --git a/src/services/statement.base.service.ts b/src/services/statement.base.service.ts index 312e1da..e60dd01 100644 --- a/src/services/statement.base.service.ts +++ b/src/services/statement.base.service.ts @@ -93,13 +93,13 @@ export abstract class StatementBaseService { case 'equals': symbol = '='; break; - case 'not equals': + case 'notEquals': symbol = '!'; break; - case 'starts with': + case 'startsWith': symbol = '^'; break; - case 'ends with': + case 'endsWith': symbol = '$'; break; default: -- libgit2 0.21.4