diff --git a/src/component/table.js b/src/component/table.js index 6b67422d..568ebc36 100644 --- a/src/component/table.js +++ b/src/component/table.js @@ -43,7 +43,8 @@ angular.module('ngTasty.component.table', [ .controller('TableController', function($scope, $attrs, $filter, tableConfig, tastyUtil) { var listScopeToWatch, initTable, newScopeName, initStatus, updateClientSideResource, updateServerSideResource, setDirectivesValues, - buildClientResource, buildUrl, paramsInitialCycle, initNow, loadOnInit; + buildClientResource, buildUrl, paramsInitialCycle, initNow, loadOnInit, + filterChangedPage; var vm = this; vm.$scope = $scope; initStatus = {}; @@ -375,23 +376,20 @@ angular.module('ngTasty.component.table', [ updateServerSideResource = function (updateFrom) { if (updateFrom === 'filters') { if (Number.isInteger($scope.init.filterBase)) { + if ($scope.params.page !== $scope.init.filterBase) { + filterChangedPage = true; + } $scope.params.page = $scope.init.filterBase; } } + // after filter + // change the page + $scope.url = buildUrl($scope.params, $scope.filters); - console.log('url : ' + updateFrom, $scope.url, $scope.params); + - if ($scope.reload) { - $scope.reload = function () { - $scope.resourceCallback($scope.url, angular.copy($scope.params)) - .then(function (resource) { - setDirectivesValues(resource); - }); - }; - } - if ((initNow || updateFrom === 'params') && - !$scope.logs.updateServerSideResourceRunning) { + function updateServerSideResource () { $scope.logs.updateServerSideResourceRunning = true; var paramsObj = angular.copy($scope.params); paramsObj.filters = $scope.filters; @@ -401,6 +399,22 @@ angular.module('ngTasty.component.table', [ $scope.logs.updateServerSideResourceRunning = false; }); } + + if ($scope.reload) { + $scope.reload = updateServerSideResource; + } + if ((initNow || updateFrom === 'params') && + !$scope.logs.updateServerSideResourceRunning) { + + if ($scope.reload) { + if (!filterChangedPage) { + updateServerSideResource(); + } + } else { + updateServerSideResource(); + filterChangedPage = false; + } + } }; // AngularJs $watch callbacks @@ -417,7 +431,6 @@ angular.module('ngTasty.component.table', [ } $scope.$watchCollection('params', function watchParams (newValue, oldValue){ if (newValue !== oldValue) { - console.log('params', newValue, oldValue) // Run update resuorce only if we are on // the second cycle or more of `params` if (paramsInitialCycle === false) { diff --git a/src/component/test/table-server-side.spec.js b/src/component/test/table-server-side.spec.js index 670f01be..5b4af267 100644 --- a/src/component/test/table-server-side.spec.js +++ b/src/component/test/table-server-side.spec.js @@ -925,7 +925,7 @@ describe('Component: table server side', function () { $scope.$digest(); }); - it('should return paramsObj with filter value', function () { + it('should return paramsObj with filter value ', function () { $scope.filterBy = { 'name': 'mill', 'sf-location': '' @@ -939,7 +939,7 @@ describe('Component: table server side', function () { expect($scope.paramsUrl).toEqual('sort-by=name&sort-order=dsc&page=1&count=20&name=mill'); expect($scope.paramsObj.sortBy).toEqual('name'); expect($scope.paramsObj.sortOrder).toEqual('dsc'); - expect($scope.paramsObj.page).toEqual(4); + expect($scope.paramsObj.page).toEqual(1); expect($scope.paramsObj.count).toEqual(20); expect($scope.paramsObj.thead).toEqual(true); expect($scope.paramsObj.pagination).toEqual(true);