@itexpert-dev/base-universal-table
Version:
base universal table for build tables
57 lines (48 loc) • 1.77 kB
text/typescript
import {BaseUniversalTableComponent} from "../common/baseUniversalTableComponent";
import {isNullOrUndefined} from "@itexpert-dev/tiny-helpers";
import {IUniversalTableCtrl} from "../../../contracts/IUniversalTableCtrl";
abstract class BaseUniversalTablePaginator extends BaseUniversalTableComponent{
public offset: number;
public count: number;
public limitSteps: number[];
public limit: number;
public page:number = null;
constructor(tableCtrl: IUniversalTableCtrl){
super(tableCtrl);
this.limitSteps = this.tableCtrl.config.getDefaultLimitSteps();
let stateStream = this.tableCtrl.stateStream;
stateStream.filter(next=>next.hasOwnProperty('offset'))
.subscribe(
next=>{
this.offset = next.offset
}
);
stateStream.filter(next=>next.hasOwnProperty('limit'))
.subscribe(
next=>{
this.limit = next.limit
}
);
stateStream.filter(next=>next.hasOwnProperty('totalResult'))
.subscribe(
next=>{
this.count = next.totalResult
}
);
}
public changeLimit(newValue: string){
this.limit = parseInt(newValue);
this.changePage(1);
}
public changePage(newPage: number){
if(!isNullOrUndefined(this.limit)){
this.page = newPage;
this.offset = ((newPage-1)*this.limit);
this.tableCtrl.updateState({
offset: this.offset,
limit: this.limit
}).subscribe();
}
}
}
export {BaseUniversalTablePaginator}