From 5c10968c2ccf8d53d831ac35a8fade9149ebe4c2 Mon Sep 17 00:00:00 2001 From: Hannah Eslinger Date: Fri, 12 Jan 2024 12:50:05 -0700 Subject: [PATCH] Retrieve all map data at once (#4469) * Retrieve all data at once * de-list results * remove console log --------- Co-authored-by: kflemin <2205659+kflemin@users.noreply.github.com> --- .../controllers/inventory_map_controller.js | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/seed/static/seed/js/controllers/inventory_map_controller.js b/seed/static/seed/js/controllers/inventory_map_controller.js index bbfa869081..3b17c9e9b0 100644 --- a/seed/static/seed/js/controllers/inventory_map_controller.js +++ b/seed/static/seed/js/controllers/inventory_map_controller.js @@ -44,17 +44,24 @@ angular.module('BE.seed.controller.inventory_map', []).controller('inventory_map }; const chunk = 250; - const fetchRecords = (fn, page = 1) => fn(page, chunk, undefined, undefined).then((data) => { - $scope.progress = { - current: data.pagination.end, - total: data.pagination.total, - percent: Math.round((data.pagination.end / data.pagination.total) * 100) - }; - if (data.pagination.has_next) { - return fetchRecords(fn, page + 1).then((newData) => data.results.concat(newData)); - } - return data.results; - }); + const fetchRecords = async (fn) => { + pagination = await fn(1, chunk, undefined, undefined).then(data => data.pagination); + + $scope.progress = {current: 0, total: pagination.total, percent:0}; + + page_numbers = [...Array(pagination.num_pages).keys()] + page_promises = page_numbers.map(page => { + return fn(page, chunk, undefined, undefined).then(data => { + num_data = data.pagination.end - data.pagination.start + 1; + $scope.progress.current += num_data; + $scope.progress.percent += Math.round((num_data / data.pagination.total) * 100) + return data.results + }) + }) + + return Promise.all(page_promises).then(pages => [].concat(...pages)) + } + $scope.progress = {}; const loadingModal = $uibModal.open({