From cc89f5a7230fe7613109f6591ec44692909b39bd Mon Sep 17 00:00:00 2001 From: Ross Perry Date: Thu, 18 Jan 2024 15:23:06 -0700 Subject: [PATCH] Fix inventory list double refresh on load (#4480) * eeej small files * console debugging * combine sort and filter change and ignore on initial load * precommit * remove debug logs * refactor --------- Co-authored-by: Katherine Fleming <2205659+kflemin@users.noreply.github.com> --- .../controllers/inventory_list_controller.js | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/seed/static/seed/js/controllers/inventory_list_controller.js b/seed/static/seed/js/controllers/inventory_list_controller.js index 924fe8978a..f3e9b3be7c 100644 --- a/seed/static/seed/js/controllers/inventory_list_controller.js +++ b/seed/static/seed/js/controllers/inventory_list_controller.js @@ -1799,6 +1799,9 @@ angular.module('BE.seed.controller.inventory_list', []).controller('inventory_li const restoreGridSettings = () => { $scope.restore_status = RESTORE_SETTINGS; let state = inventory_service.loadGridSettings(`${localStorageKey}.sort`); + // If save state has filters or sorts, ignore the grids first attempt to run filterChanged or sortChanged + const columns = JSON.parse(state).columns + $scope.ignore_filter_or_sort = !_.isEmpty(columns) if (!_.isNull(state)) { state = JSON.parse(state); $scope.gridApi.saveState.restore($scope, state).then(() => { @@ -1822,6 +1825,16 @@ angular.module('BE.seed.controller.inventory_list', []).controller('inventory_li $scope.update_selected_display(); }; + const filterOrSortChanged = _.debounce(() => { + if ($scope.ignore_filter_or_sort) { + $scope.ignore_filter_or_sort = false; + } else if ($scope.restore_status === RESTORE_COMPLETE) { + updateColumnFilterSort(); + $scope.load_inventory(1); + } + }, 1000) + + $scope.gridOptions = { data: 'data', enableFiltering: true, @@ -1890,24 +1903,8 @@ angular.module('BE.seed.controller.inventory_list', []).controller('inventory_li saveSettings(); }); gridApi.core.on.columnVisibilityChanged($scope, saveSettings); - gridApi.core.on.filterChanged( - $scope, - _.debounce(() => { - if ($scope.restore_status === RESTORE_COMPLETE) { - updateColumnFilterSort(); - $scope.load_inventory(1); - } - }, 1000) - ); - gridApi.core.on.sortChanged( - $scope, - _.debounce(() => { - if ($scope.restore_status === RESTORE_COMPLETE) { - updateColumnFilterSort(); - $scope.load_inventory(1); - } - }, 1000) - ); + gridApi.core.on.filterChanged($scope, filterOrSortChanged) + gridApi.core.on.sortChanged($scope, filterOrSortChanged); gridApi.pinning.on.columnPinned($scope, (colDef, container) => { if (container) { saveSettings();