diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js index c35c2c02f7c6eb3ecbfbed6cdb495d79be76bb3f..6264bed1d32e83a3e37dcb4861fe2809a7d0245b 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js @@ -340,31 +340,67 @@ angular.module('raeApp').factory("dataService", ['$http', '$q', function($http, self.getTaskByOTDBId = function(otdb_id) { var defer = $q.defer(); - $http.get('/rest/tasks/otdb/' + otdb_id).success(function(result) { - var task = result.task; - if(task) { - task.starttime = self.convertDatestringToLocalUTCDate(task.starttime); - task.endtime = self.convertDatestringToLocalUTCDate(task.endtime); - } - defer.resolve(task); - }).error(function(result) { - defer.resolve(undefined); - }) + + if(typeof(otdb_id) === 'string') { + otdb_id = parseInt(otdb_id); + } + + var foundTask = self.tasks.find(function(t) { return t.otdb_id == otdb_id; }); + + if(foundTask) { + defer.resolve(foundTask); + } else { + $http.get('/rest/tasks/otdb/' + otdb_id).success(function(result) { + var task = result.task; + if(task) { + task.starttime = self.convertDatestringToLocalUTCDate(task.starttime); + task.endtime = self.convertDatestringToLocalUTCDate(task.endtime); + + if(!self.taskDict.hasOwnProperty(task.id)) { + self.tasks.push(task); + self.taskDict[task.id] = task; + self.taskChangeCntr++; + } + } + defer.resolve(task); + }).error(function(result) { + defer.resolve(undefined); + }) + } + return defer.promise; }; self.getTaskByMoMId = function(mom_id) { var defer = $q.defer(); - $http.get('/rest/tasks/mom/' + mom_id).success(function(result) { - var task = result.task; - if(task) { - task.starttime = self.convertDatestringToLocalUTCDate(task.starttime); - task.endtime = self.convertDatestringToLocalUTCDate(task.endtime); - } - defer.resolve(task); - }).error(function(result) { - defer.resolve(undefined); - }) + + if(typeof(mom_id) === 'string') { + mom_id = parseInt(mom_id); + } + + var foundTask = self.tasks.find(function(t) { return t.mom_id == mom_id; }); + + if(foundTask) { + defer.resolve(foundTask); + } else { + $http.get('/rest/tasks/mom/' + mom_id).success(function(result) { + var task = result.task; + if(task) { + task.starttime = self.convertDatestringToLocalUTCDate(task.starttime); + task.endtime = self.convertDatestringToLocalUTCDate(task.endtime); + + if(!self.taskDict.hasOwnProperty(task.id)) { + self.tasks.push(task); + self.taskDict[task.id] = task; + self.taskChangeCntr++; + } + } + defer.resolve(task); + }).error(function(result) { + defer.resolve(undefined); + }) + } + return defer.promise; }; @@ -748,7 +784,7 @@ angular.module('raeApp').factory("dataService", ['$http', '$q', function($http, } } } - + self.claimChangeCntr++; self.computeMinMaxResourceClaimTimes(); } else if(change.objectType == 'resourceCapacity') { @@ -793,8 +829,8 @@ angular.module('raeApp').factory("dataService", ['$http', '$q', function($http, var dataControllerMod = angular.module('DataControllerMod', ['ngResource']); dataControllerMod.controller('DataController', - ['$scope', 'dataService', - function($scope, dataService) { + ['$scope', '$q', 'dataService', + function($scope, $q, dataService) { var self = this; $scope.dataService = dataService; dataService.dataCtrl = this; @@ -825,8 +861,6 @@ dataControllerMod.controller('DataController', var defer = $q.defer(); $scope.dataService.getTaskByOTDBId(otdb_id).then(function(task) { if(task) { - $scope.dataService.tasks.push(task); - $scope.dataService.taskDict[task.id] = task; $scope.dataService.setSelectedTaskId(task.id); $scope.jumpToSelectedTask(); defer.resolve(); @@ -839,8 +873,6 @@ dataControllerMod.controller('DataController', var defer = $q.defer(); $scope.dataService.getTaskByMoMId(mom_id).then(function(task) { if(task) { - $scope.dataService.tasks.push(task); - $scope.dataService.taskDict[task.id] = task; $scope.dataService.setSelectedTaskId(task.id); $scope.jumpToSelectedTask(); defer.resolve();