From 4f2362b79aa6487d3f75df44c40e2ad40f804b6a Mon Sep 17 00:00:00 2001 From: ghiscoding Date: Tue, 4 Dec 2018 00:44:29 -0500 Subject: [PATCH] fix(pagination): fixed a few pagination problem used by backend service - also fixed GraphQL to work correctly when "enablePagination" is set to False, it shouldn't add pagination into the GraphQL query --- .../aurelia-slickgrid/aurelia-slickgrid.ts | 2 +- .../src/aurelia-slickgrid/index.ts | 1 + .../services/graphql.service.ts | 17 +++--- .../aurelia-slickgrid/slick-pagination.html | 54 ++++++++++++++----- .../src/aurelia-slickgrid/slick-pagination.ts | 24 +++++---- .../value-converters/number.ts | 6 +++ 6 files changed, 74 insertions(+), 30 deletions(-) create mode 100644 aurelia-slickgrid/src/aurelia-slickgrid/value-converters/number.ts diff --git a/aurelia-slickgrid/src/aurelia-slickgrid/aurelia-slickgrid.ts b/aurelia-slickgrid/src/aurelia-slickgrid/aurelia-slickgrid.ts index 9b195c563..a7f34bea3 100644 --- a/aurelia-slickgrid/src/aurelia-slickgrid/aurelia-slickgrid.ts +++ b/aurelia-slickgrid/src/aurelia-slickgrid/aurelia-slickgrid.ts @@ -638,7 +638,7 @@ export class AureliaSlickgridCustomElement { if (!this.gridOptions.pagination) { this.gridOptions.pagination = (this.gridOptions.pagination) ? this.gridOptions.pagination : undefined; } - if (this.gridOptions.pagination && totalCount) { + if (this.gridOptions.pagination && totalCount !== undefined) { this.gridOptions.pagination.totalItems = totalCount; } if (this.gridOptions.presets && this.gridOptions.presets.pagination && this.gridOptions.pagination) { diff --git a/aurelia-slickgrid/src/aurelia-slickgrid/index.ts b/aurelia-slickgrid/src/aurelia-slickgrid/index.ts index 4825bbb3c..ea12c13d9 100644 --- a/aurelia-slickgrid/src/aurelia-slickgrid/index.ts +++ b/aurelia-slickgrid/src/aurelia-slickgrid/index.ts @@ -22,6 +22,7 @@ export { GraphqlService, GridOdataService } from './services/index'; export function configure(aurelia: any, callback: any) { aurelia.globalResources(PLATFORM.moduleName('./aurelia-slickgrid')); aurelia.globalResources(PLATFORM.moduleName('./slick-pagination')); + aurelia.globalResources(PLATFORM.moduleName('./value-converters/number')); // must register a transient so the container will get a new instance everytime aurelia.container.registerTransient(Filters.compoundDate); diff --git a/aurelia-slickgrid/src/aurelia-slickgrid/services/graphql.service.ts b/aurelia-slickgrid/src/aurelia-slickgrid/services/graphql.service.ts index 20c333a70..91e9eb2ad 100644 --- a/aurelia-slickgrid/src/aurelia-slickgrid/services/graphql.service.ts +++ b/aurelia-slickgrid/src/aurelia-slickgrid/services/graphql.service.ts @@ -106,13 +106,18 @@ export class GraphqlService implements BackendService { } // add dataset filters, could be Pagination and SortingFilters and/or FieldFilters - const datasetFilters: GraphqlDatasetFilter = { - ...this.options.paginationOptions, - first: ((this.options.paginationOptions && this.options.paginationOptions.first) ? this.options.paginationOptions.first : ((this.pagination && this.pagination.pageSize) ? this.pagination.pageSize : null)) || this.defaultPaginationOptions.first - }; + let datasetFilters: GraphqlDatasetFilter = {}; + + // only add pagination if it's enabled in the grid options + if (this._gridOptions.enablePagination !== false) { + datasetFilters = { + ...this.options.paginationOptions, + first: ((this.options.paginationOptions && this.options.paginationOptions.first) ? this.options.paginationOptions.first : ((this.pagination && this.pagination.pageSize) ? this.pagination.pageSize : null)) || this.defaultPaginationOptions.first + }; - if (!this.options.isWithCursor) { - datasetFilters.offset = ((this.options.paginationOptions && this.options.paginationOptions.hasOwnProperty('offset')) ? +this.options.paginationOptions['offset'] : 0); + if (!this.options.isWithCursor) { + datasetFilters.offset = ((this.options.paginationOptions && this.options.paginationOptions.hasOwnProperty('offset')) ? +this.options.paginationOptions['offset'] : 0); + } } if (this.options.sortingOptions && Array.isArray(this.options.sortingOptions) && this.options.sortingOptions.length > 0) { diff --git a/aurelia-slickgrid/src/aurelia-slickgrid/slick-pagination.html b/aurelia-slickgrid/src/aurelia-slickgrid/slick-pagination.html index 350433827..1ba81cb78 100644 --- a/aurelia-slickgrid/src/aurelia-slickgrid/slick-pagination.html +++ b/aurelia-slickgrid/src/aurelia-slickgrid/slick-pagination.html @@ -1,15 +1,24 @@