diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js index 9cfefb6a58914579d9007cebfabd96a23c881b50..6a41d756ed73840f06c43afd64e0dd52a6f67c53 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js @@ -338,6 +338,36 @@ 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); + }) + 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); + }) + return defer.promise; + }; + self.copyTask = function(task) { $http.put('/rest/tasks/' + task.id + '/copy').error(function(result) { console.log("Error. Could not copy task. " + result); @@ -767,6 +797,7 @@ dataControllerMod.controller('DataController', function($scope, dataService) { var self = this; $scope.dataService = dataService; + dataService.dataCtrl = this; $scope.dateOptions = { formatYear: 'yyyy', @@ -790,6 +821,28 @@ dataControllerMod.controller('DataController', $scope.jumpToNow(); + $scope.loadTaskByOTDBIdSelectAndJumpIntoView = function(otdb_id) { + $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(); + } + }); + }; + + $scope.loadTaskByMoMIdSelectAndJumpIntoView = function(mom_id) { + $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(); + } + }); + }; + $scope.selectCurrentTask = function() { var currentTasks = dataService.tasks.filter(function(t) { return t.starttime <= dataService.viewTimeSpan.to && t.endime >= dataService.viewTimeSpan.from; }); if(currentTasks.lenght > 0) { @@ -828,6 +881,7 @@ dataControllerMod.controller('DataController', from: dataService.floorDate(new Date(focusTime.getTime() - 0.4*viewSpanInMinutes*60*1000), 1, 5), to: dataService.floorDate(new Date(focusTime.getTime() + 0.6*viewSpanInMinutes*60*1000), 1, 5) }; + dataService.autoFollowNow = false; }; $scope.scrollBack = function() { diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js index 461b7892185fb56d3dedcbf26ee927539a7a1cb5..e54e9c8b7ff8e50f1f89e8d7cadd24dec4be6b33 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js @@ -148,6 +148,23 @@ $scope.columns = [ $scope.dataService.filteredTaskDict = $scope.dataService.toIdBasedDict($scope.dataService.filteredTasks); $scope.dataService.filteredTaskChangeCntr++; + + if($scope.dataService.filteredTasks.length == 0) { + var otdb_col = $scope.gridApi.grid.columns.find(function(c) {return c.field == 'otdb_id'; }); + if(otdb_col && otdb_col.filters.length && otdb_col.filters[0].hasOwnProperty('term')) { + var otdb_id = otdb_col.filters[0].term; + $scope.$parent.$parent.loadTaskByOTDBIdSelectAndJumpIntoView(otdb_id); + otdb_col.filters[0].term = null; + } else { + var mom_col = $scope.gridApi.grid.columns.find(function(c) {return c.field == 'mom_id'; }); + + if(mom_col && mom_col.filters.length && mom_col.filters[0].hasOwnProperty('term')) { + var mom_id = mom_col.filters[0].term; + $scope.$parent.$parent.loadTaskByMoMIdSelectAndJumpIntoView(mom_id); + mom_col.filters[0].term = null; + } + } + } }); }); diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py index d2492c6dd73a971856f354deca6bd2d6446896a6..7a040d9c6bffd4c1e03b183259844eb6e56b9d37 100755 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py @@ -233,6 +233,38 @@ def getTask(task_id): return jsonify({'task': None}) +@app.route('/rest/tasks/otdb/<int:otdb_id>', methods=['GET']) +def getTaskByOTDBId(otdb_id): + try: + task = rarpc.getTask(otdb_id=otdb_id) + + if not task: + abort(404) + + task['name'] = 'Task %d' % task['id'] + updateTaskMomDetails(task, momqueryrpc) + return jsonify({'task': task}) + except Exception as e: + abort(404) + + return jsonify({'task': None}) + +@app.route('/rest/tasks/mom/<int:mom_id>', methods=['GET']) +def getTaskByMoMId(mom_id): + try: + task = rarpc.getTask(mom_id=mom_id) + + if not task: + abort(404) + + task['name'] = 'Task %d' % task['id'] + updateTaskMomDetails(task, momqueryrpc) + return jsonify({'task': task}) + except Exception as e: + abort(404) + + return jsonify({'task': None}) + @app.route('/rest/tasks/<int:task_id>', methods=['PUT']) def putTask(task_id): if isProductionEnvironment():