Skip to content
Snippets Groups Projects
Commit a1deb334 authored by Jorrit Schaap's avatar Jorrit Schaap
Browse files

Task #9607: Select tasks by parent group

parent 9e7ca652
No related branches found
No related tags found
No related merge requests found
...@@ -69,6 +69,7 @@ def updateTaskMomDetails(task, momrpc): ...@@ -69,6 +69,7 @@ def updateTaskMomDetails(task, momrpc):
t['mom_object_group_id'] = m['object_group_id'] t['mom_object_group_id'] = m['object_group_id']
t['mom_object_group_name'] = m.get('object_group_name') t['mom_object_group_name'] = m.get('object_group_name')
t['mom_object_group_mom2object_id'] = m.get('object_group_mom2objectid') t['mom_object_group_mom2object_id'] = m.get('object_group_mom2objectid')
t['mom_object_parent_group_id'] = m['parent_group_mom2id']
else: else:
t['project_name'] = 'OTDB Only' t['project_name'] = 'OTDB Only'
t['project_mom_id'] = -98 t['project_mom_id'] = -98
......
...@@ -439,6 +439,41 @@ angular.module('raeApp').factory("dataService", ['$http', '$q', function($http, ...@@ -439,6 +439,41 @@ angular.module('raeApp').factory("dataService", ['$http', '$q', function($http,
return defer.promise; return defer.promise;
}; };
self.getTasksByMoMParentGroupId = function(mom_object_parent_group_id) {
var defer = $q.defer();
var url = '/rest/tasks/mom/parentgroup/' + mom_object_parent_group_id;
$http.get(url).success(function(result) {
//convert datetime strings to Date objects
for(var i in result.tasks) {
var task = result.tasks[i];
task.starttime = self.convertDatestringToLocalUTCDate(task.starttime);
task.endtime = self.convertDatestringToLocalUTCDate(task.endtime);
}
var newTaskDict = self.toIdBasedDict(result.tasks);
var newTaskIds = Object.keys(newTaskDict);
for(var i = newTaskIds.length-1; i >= 0; i--) {
var task_id = newTaskIds[i];
if(!self.taskDict.hasOwnProperty(task_id)) {
var task = newTaskDict[task_id];
self.tasks.push(task);
self.taskDict[task_id] = task;
}
}
self.taskChangeCntr++;
self.computeMinMaxTaskTimes();
defer.resolve(result.tasks);
}).error(function(result) {
defer.resolve(undefined);
});
return defer.promise;
};
self.copyTask = function(task) { self.copyTask = function(task) {
$http.put('/rest/tasks/' + task.id + '/copy').error(function(result) { $http.put('/rest/tasks/' + task.id + '/copy').error(function(result) {
console.log("Error. Could not copy task. " + result); console.log("Error. Could not copy task. " + result);
...@@ -950,6 +985,27 @@ dataControllerMod.controller('DataController', ...@@ -950,6 +985,27 @@ dataControllerMod.controller('DataController',
return defer.promise; return defer.promise;
}; };
$scope.loadTasksByMoMParentGroupIdSelectAndJumpIntoView = function(mom_parent_group_id) {
var defer = $q.defer();
$scope.dataService.getTasksByMoMParentGroupId(mom_parent_group_id).then(function(tasks) {
if(tasks) {
var task_ids = tasks.map(function(t) { return t.id; });
$scope.dataService.setSelectedTaskIds(task_ids);
if(tasks.length > 1) {
$scope.dataService.selected_project_id = tasks[0].project_mom_id;
}
$scope.jumpToSelectedTasks();
defer.resolve(tasks);
} else {
defer.resolve(undefined);
}
});
return defer.promise;
};
$scope.selectCurrentTask = function() { $scope.selectCurrentTask = function() {
var currentTasks = dataService.tasks.filter(function(t) { return t.starttime <= dataService.viewTimeSpan.to && t.endime >= dataService.viewTimeSpan.from; }); var currentTasks = dataService.tasks.filter(function(t) { return t.starttime <= dataService.viewTimeSpan.to && t.endime >= dataService.viewTimeSpan.from; });
if(currentTasks.lenght > 0) { if(currentTasks.lenght > 0) {
......
...@@ -223,14 +223,20 @@ $scope.columns = [ ...@@ -223,14 +223,20 @@ $scope.columns = [
if(mom_col && mom_col.filters.length && mom_col.filters[0].hasOwnProperty('term')) { if(mom_col && mom_col.filters.length && mom_col.filters[0].hasOwnProperty('term')) {
var mom_id = mom_col.filters[0].term; var mom_id = mom_col.filters[0].term;
$scope.$parent.$parent.loadTaskByMoMIdSelectAndJumpIntoView(mom_id).then(function(task) { $scope.$parent.$parent.loadTaskByMoMIdSelectAndJumpIntoView(mom_id).then(function(task) {
if(task) {
mom_col.filters[0].term = null; mom_col.filters[0].term = null;
} else { if(task == undefined) {
//getting the task by mom_id did not find a task //getting the task by mom_id did not find a task
//maybe the entered id was a mom group_id? //maybe the entered id was a mom group_id?
//let's try to loadTasksByMoMGroupIdSelectAndJumpIntoView //let's try to loadTasksByMoMGroupIdSelectAndJumpIntoView
$scope.$parent.$parent.loadTasksByMoMGroupIdSelectAndJumpIntoView(mom_id).then(function(tasks) { $scope.$parent.$parent.loadTasksByMoMGroupIdSelectAndJumpIntoView(mom_id).then(function(tasks) {
mom_col.filters[0].term = null; if(tasks == undefined || tasks.length == 0) {
//getting the tasks by mom group id did not find any tasks
//maybe the entered id was a mom parent group_id?
//let's try to loadTasksByMoMParentGroupIdSelectAndJumpIntoView
$scope.$parent.$parent.loadTasksByMoMParentGroupIdSelectAndJumpIntoView(mom_id).then(function(tasks) {
//pass
});
}
}); });
} }
}); });
...@@ -318,6 +324,7 @@ $scope.columns = [ ...@@ -318,6 +324,7 @@ $scope.columns = [
mom_object_group_id: task.mom_object_group_id, mom_object_group_id: task.mom_object_group_id,
mom_object_group_name: task.mom_object_group_name, mom_object_group_name: task.mom_object_group_name,
mom_object_group_mom2object_id: task.mom_object_group_mom2object_id, mom_object_group_mom2object_id: task.mom_object_group_mom2object_id,
mom_object_parent_group_id: task.mom_object_parent_group_id,
cluster: task.cluster, cluster: task.cluster,
blocked_by_ids: task.blocked_by_ids, blocked_by_ids: task.blocked_by_ids,
ingest_status: task.ingest_status === null ? undefined : task.ingest_status, ingest_status: task.ingest_status === null ? undefined : task.ingest_status,
...@@ -536,8 +543,24 @@ $scope.columns = [ ...@@ -536,8 +543,24 @@ $scope.columns = [
fillColumFilterSelectOptions(task_info, $scope.columns[6]); fillColumFilterSelectOptions(task_info, $scope.columns[6]);
}; };
$scope.$watch('dataService.selected_task_ids', onSelectedTaskIdsChanged, true);} $scope.$watch('dataService.selected_task_ids', onSelectedTaskIdsChanged, true);
]); $scope.$watch('dataService.selected_project_id', function() {
fillProjectsColumFilterSelectOptions();
var project_col = $scope.gridApi.grid.columns.find(function(c) {return c.field == 'project_name'; });
if(project_col && project_col.filters.length) {
if(dataService.selected_project_id != undefined) {
var projectName = dataService.momProjectsDict[dataService.selected_project_id].name;
if(projectName != undefined) {
var project_names = project_col.filter.selectOptions.map(function(so) { return so.value;});
if(project_names.includes(projectName)) {
project_col.filters[0].term = projectName;
}
}
}
}
});
}]);
gridControllerMod.directive('contextMenu', ['$document', '$window', function($document, $window) { gridControllerMod.directive('contextMenu', ['$document', '$window', function($document, $window) {
return { return {
...@@ -602,6 +625,14 @@ gridControllerMod.directive('contextMenu', ['$document', '$window', function($do ...@@ -602,6 +625,14 @@ gridControllerMod.directive('contextMenu', ['$document', '$window', function($do
dataCtrlScope.loadTasksByMoMGroupIdSelectAndJumpIntoView(task.mom_object_group_id); dataCtrlScope.loadTasksByMoMGroupIdSelectAndJumpIntoView(task.mom_object_group_id);
}); });
var liElement = angular.element('<li><a href="#">Select parent group</a></li>');
ulElement.append(liElement);
liElement.on('click', function() {
closeContextMenu();
var dataCtrlScope = $scope.$parent.$parent.$parent.$parent.$parent.$parent.$parent.$parent.$parent.$parent;
dataCtrlScope.loadTasksByMoMParentGroupIdSelectAndJumpIntoView(task.mom_object_parent_group_id);
});
var blocked_selected_cep4_tasks = selected_cep4_tasks.filter(function(t) { return (t.blocked_by_ids.length > 0); }); var blocked_selected_cep4_tasks = selected_cep4_tasks.filter(function(t) { return (t.blocked_by_ids.length > 0); });
if(blocked_selected_cep4_tasks.length > 0) { if(blocked_selected_cep4_tasks.length > 0) {
......
...@@ -76,6 +76,13 @@ ...@@ -76,6 +76,13 @@
dataCtrlScope.loadTasksByMoMGroupIdSelectAndJumpIntoView(task.mom_object_group_id); dataCtrlScope.loadTasksByMoMGroupIdSelectAndJumpIntoView(task.mom_object_group_id);
}); });
var liElement = angular.element('<li><a href="#">Select parent group</a></li>');
ulElement.append(liElement);
liElement.on('click', function() {
closeContextMenu();
dataCtrlScope.loadTasksByMoMParentGroupIdSelectAndJumpIntoView(task.mom_object_parent_group_id);
});
var blocked_selected_cep4_tasks = selected_cep4_tasks.filter(function(t) { return (t.blocked_by_ids.length > 0); }); var blocked_selected_cep4_tasks = selected_cep4_tasks.filter(function(t) { return (t.blocked_by_ids.length > 0); });
if(blocked_selected_cep4_tasks.length > 0) { if(blocked_selected_cep4_tasks.length > 0) {
......
...@@ -295,6 +295,20 @@ def getTasksByMoMGroupId(mom_group_id): ...@@ -295,6 +295,20 @@ def getTasksByMoMGroupId(mom_group_id):
except Exception as e: except Exception as e:
abort(404) abort(404)
@app.route('/rest/tasks/mom/parentgroup/<int:mom_parent_group_id>', methods=['GET'])
@gzipped
def getTasksByMoMParentGroupId(mom_parent_group_id):
try:
mom_ids = momqueryrpc.getTaskIdsInParentGroup(mom_parent_group_id)[str(mom_parent_group_id)]
tasks = rarpc.getTasks(mom_ids=mom_ids)
updateTaskMomDetails(tasks, momqueryrpc)
updateTaskStorageDetails(tasks, sqrpc)
return jsonify({'tasks': tasks})
except Exception as e:
abort(404)
@app.route('/rest/tasks/<int:task_id>', methods=['PUT']) @app.route('/rest/tasks/<int:task_id>', methods=['PUT'])
def putTask(task_id): def putTask(task_id):
if 'Content-Type' in request.headers and \ if 'Content-Type' in request.headers and \
...@@ -751,7 +765,7 @@ def main(): ...@@ -751,7 +765,7 @@ def main():
global rarpc global rarpc
rarpc = RARPC(busname=options.radb_busname, servicename=options.radb_servicename, broker=options.broker) rarpc = RARPC(busname=options.radb_busname, servicename=options.radb_servicename, broker=options.broker)
global momrpc global momrpc
momrpc = MoMRPC(busname=options.mom_busname, servicename=options.mom_servicename, timeout=2.5, broker=options.broker) momrpc = MoMRPC(busname=options.mom_busname, servicename=options.mom_servicename, timeout=10, broker=options.broker)
global otdbrpc global otdbrpc
otdbrpc = OTDBRPC(busname=options.otdb_busname, servicename=options.otdb_servicename, broker=options.broker) otdbrpc = OTDBRPC(busname=options.otdb_busname, servicename=options.otdb_servicename, broker=options.broker)
global curpc global curpc
...@@ -759,7 +773,7 @@ def main(): ...@@ -759,7 +773,7 @@ def main():
global sqrpc global sqrpc
sqrpc = StorageQueryRPC(busname=options.storagequery_busname, servicename=options.storagequery_servicename, broker=options.broker) sqrpc = StorageQueryRPC(busname=options.storagequery_busname, servicename=options.storagequery_servicename, broker=options.broker)
global momqueryrpc global momqueryrpc
momqueryrpc = MoMQueryRPC(busname=options.mom_query_busname, servicename=options.mom_query_servicename, timeout=2.5, broker=options.broker) momqueryrpc = MoMQueryRPC(busname=options.mom_query_busname, servicename=options.mom_query_servicename, timeout=10, broker=options.broker)
global changeshandler global changeshandler
changeshandler = ChangesHandler(radb_busname=options.radb_notification_busname, radb_subjects=options.radb_notification_subjects, changeshandler = ChangesHandler(radb_busname=options.radb_notification_busname, radb_subjects=options.radb_notification_subjects,
dm_busname=options.dm_notification_busname, dm_subjects=options.dm_notification_subjects, dm_busname=options.dm_notification_busname, dm_subjects=options.dm_notification_subjects,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment