From df39fa1f9d2ee1677c643f71c202535a0e773482 Mon Sep 17 00:00:00 2001 From: Jorrit Schaap <schaap@astron.nl> Date: Fri, 21 Jul 2017 14:05:16 +0000 Subject: [PATCH] Task #11090: faster smaller loads. most recent data first --- .../chartresourceusagecontroller.js | 12 ++++++- .../static/app/controllers/datacontroller.js | 35 +++++++------------ 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/chartresourceusagecontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/chartresourceusagecontroller.js index de53c893545..9b5ff75aba5 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/chartresourceusagecontroller.js +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/chartresourceusagecontroller.js @@ -86,6 +86,17 @@ chartResourceUsageControllerMod.controller('ChartResourceUsageController', ['$sc } var selected_resource_id = $scope.dataService.selected_resource_id; + if(selected_resource_id === undefined) { + //try to select first storage resource as default selected_resource_id + var storageResources = $scope.dataService.resources.filter(function(r) { return r.type_name == 'storage'; }); + if(storageResources.length > 0) { + $scope.dataService.selected_resource_id = storageResources[0].id; + } else { + //else, just the first resource + $scope.dataService.selected_resource_id = self.resources[0].id; + } + } + if(selected_resource_id === undefined) return; @@ -246,7 +257,6 @@ chartResourceUsageControllerMod.controller('ChartResourceUsageController', ['$sc } }; - $scope.$watch('dataService.selected_resource_id', updateChartDataAsync); $scope.$watch('dataService.resourceUsagesForSelectedResource', updateChartDataAsync); $scope.$watch('dataService.viewTimeSpan', updateChartDataAsync, true); $scope.$watch('$parent.enabled', function() { setTimeout(updateChartDataAsync, 500); } ); diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js index c4f6bbc54d0..672853acfe8 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js @@ -222,28 +222,31 @@ angular.module('raeApp').factory("dataService", ['$http', '$q', function($http, //only keep the currently loading chunks self.loadingChunksQueue = self.loadingChunksQueue.filter(function(c) { return c.loading; }); - var chunkFactor = self.projectMode ? 7 : 1; + var chunkFactor = self.projectMode ? 4 : 1; var hourInmsec = 3600000; - var dayInmsec = 24*hourInmsec; + var quartDayInmsec = 6*hourInmsec; for (var timestamp = lowerTS; timestamp < upperTS; ) { if(self.loadedHours.hasOwnProperty(timestamp)) { timestamp += hourInmsec; } else { - var chuckUpperLimit = Math.min(upperTS, timestamp + chunkFactor*dayInmsec); + var chuckUpperLimit = Math.min(upperTS, timestamp + chunkFactor*quartDayInmsec); for (var chunkTimestamp = timestamp; chunkTimestamp < chuckUpperLimit; chunkTimestamp += hourInmsec) { if(self.loadedHours.hasOwnProperty(chunkTimestamp)) break; - - self.loadedHours[chunkTimestamp] = true; } var hourLower = new Date(timestamp); var hourUpper = new Date(chunkTimestamp); if(hourUpper > hourLower) { var chunk = { lower: hourLower, upper: hourUpper, loaded: false, loading: false }; - self.loadingChunksQueue.push(chunk); + if(hourLower < self.lofarTime) { + //prepend at beginning of queue, so we load most recent data first + self.loadingChunksQueue.unshift(chunk); + } else { + self.loadingChunksQueue.push(chunk); + } } timestamp = chunkTimestamp; } @@ -282,6 +285,10 @@ angular.module('raeApp').factory("dataService", ['$http', '$q', function($http, self.nrOfLoadingChunks -= 1; self.nrOfLoadedChunks += 1; + for (var timestamp = chunk.lower.getTime(); timestamp < chunk.upper.getTime(); timestamp += 3600000) { + self.loadedHours[timestamp] = true; + } + self.loadNextChunk(); }); } else { @@ -632,15 +639,6 @@ angular.module('raeApp').factory("dataService", ['$http', '$q', function($http, self.resources = result.resources; self.resourceDict = self.toIdBasedDict(self.resources); - //try to select first storage resource as default selected_resource_id - var storageResources = self.resources.filter(function(r) { return r.type_name == 'storage'; }); - if(storageResources.length > 0) { - self.selected_resource_id = storageResources[0].id; - } else { - //else, just the first resource - self.selected_resource_id = self.resources[0].id; - } - defer.resolve(); }); @@ -1377,13 +1375,6 @@ dataControllerMod.controller('DataController', } }); - $scope.$watch('dataService.claimChangeCntr', function() { - $scope.$evalAsync(function() { - $scope.dataService.getUsagesForSelectedResource(); - $scope.dataService.getResource($scope.dataService.selected_resource_id); - }); - }); - $scope.$watch('dataService.selected_resource_id', function() { $scope.$evalAsync(function() { $scope.dataService.getUsagesForSelectedResource(); -- GitLab