From 11d2df7bf2fea3352d26ffe5984e6f228f3ee89a Mon Sep 17 00:00:00 2001
From: Jorrit Schaap <schaap@astron.nl>
Date: Thu, 14 Apr 2016 12:53:50 +0000
Subject: [PATCH] Task #8887: only show projects for which there is a task in
 the filter box

---
 .../static/app/controllers/gridcontroller.js  | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js
index af465853318..074b22611e8 100644
--- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js
+++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js
@@ -142,6 +142,8 @@ gridControllerMod.controller('GridController', ['$scope', 'dataService', 'uiGrid
             $scope.gridOptions.data = $scope.dataService.tasks;
         else
             $scope.gridOptions.data = []
+
+        fillProjectsColumFilterSelectOptions();
     }, true);
 
     $scope.$watch('dataService.taskstatustypes', function() {
@@ -155,12 +157,17 @@ gridControllerMod.controller('GridController', ['$scope', 'dataService', 'uiGrid
         fillColumFilterSelectOptions(tasktypenames, $scope.columns[7]);
     });
 
-    $scope.$watch('dataService.momProjectsDict', function() {
+    function fillProjectsColumFilterSelectOptions() {
         var projectNames = [];
         var momProjectsDict = $scope.dataService.momProjectsDict;
-        for(var key in momProjectsDict) {
-            if(momProjectsDict.hasOwnProperty(key)) {
-                var projectName = momProjectsDict[key].name;
+        var tasks = $scope.dataService.tasks;
+        //get unique projectIds from tasks
+        var task_project_ids = tasks.map(function(t) { return t.project_mom_id; });
+        task_project_ids = task_project_ids.filter(function(value, index, arr) { return arr.indexOf(value) == index;})
+
+        for(var project_id of task_project_ids) {
+            if(momProjectsDict.hasOwnProperty(project_id)) {
+                var projectName = momProjectsDict[project_id].name;
                 if(!(projectName in projectNames)) {
                     projectNames.push(projectName);
                 }
@@ -168,7 +175,9 @@ gridControllerMod.controller('GridController', ['$scope', 'dataService', 'uiGrid
         }
         projectNames.sort();
         fillColumFilterSelectOptions(projectNames, $scope.columns[1]);
-    });
+    };
+
+    $scope.$watch('dataService.momProjectsDict', fillProjectsColumFilterSelectOptions);
 
     $scope.$watch('dataService.selected_task_id', function() {
         var taskIdx = $scope.gridOptions.data.findIndex(function(row) {return row.id == dataService.selected_task_id});
-- 
GitLab