Index: gm/rebaseline_server/static/loader.js |
=================================================================== |
--- gm/rebaseline_server/static/loader.js (revision 11868) |
+++ gm/rebaseline_server/static/loader.js (working copy) |
@@ -15,12 +15,14 @@ |
Loader.filter( |
'removeHiddenItems', |
function() { |
- return function(unfilteredItems, hiddenResultTypes, hiddenConfigs) { |
+ return function(unfilteredItems, hiddenResultTypes, hiddenConfigs, |
+ viewingTab) { |
var filteredItems = []; |
for (var i = 0; i < unfilteredItems.length; i++) { |
var item = unfilteredItems[i]; |
if (!(true == hiddenResultTypes[item.resultType]) && |
- !(true == hiddenConfigs[item.config])) { |
+ !(true == hiddenConfigs[item.config]) && |
+ (viewingTab == item.tab)) { |
filteredItems.push(item); |
} |
} |
@@ -45,10 +47,24 @@ |
$scope.categories = data.categories; |
$scope.testData = data.testData; |
$scope.sortColumn = 'test'; |
- $scope.showTodos = true; |
+ $scope.showTodos = false; |
+ // Create the list of tabs (lists into which the user can file each |
+ // test). This may vary, depending on isEditable. |
+ $scope.tabs = [ |
+ 'Unfiled', 'Hidden' |
+ ]; |
+ if (data.header.isEditable) { |
+ $scope.tabs = $scope.tabs.concat( |
+ ['Pending Approval']); |
epoger
2013/10/19 01:15:56
So, if run without --editable, you still have two
|
+ } |
+ $scope.defaultTab = $scope.tabs[0]; |
+ $scope.viewingTab = $scope.defaultTab; |
+ |
+ // Add index and tab fields to all records. |
for (var i = 0; i < $scope.testData.length; i++) { |
$scope.testData[i].index = i; |
+ $scope.testData[i].tab = $scope.defaultTab; |
epoger
2013/10/19 01:15:56
Each test result belongs to a single tab.
|
} |
$scope.hiddenResultTypes = { |
@@ -57,7 +73,7 @@ |
'succeeded': true, |
}; |
$scope.hiddenConfigs = {}; |
- $scope.selectedItems = {}; |
+ $scope.selectedItems = []; |
$scope.updateResults(); |
$scope.loadingMessage = ""; |
@@ -72,13 +88,14 @@ |
); |
$scope.isItemSelected = function(index) { |
- return (true == $scope.selectedItems[index]); |
+ return (-1 != $scope.selectedItems.indexOf(index)); |
epoger
2013/10/19 01:15:56
Maintaining $scope.isItemSelected as an array made
|
} |
$scope.toggleItemSelected = function(index) { |
- if (true == $scope.selectedItems[index]) { |
- delete $scope.selectedItems[index]; |
+ var i = $scope.selectedItems.indexOf(index); |
+ if (-1 == i) { |
+ $scope.selectedItems.push(index); |
} else { |
- $scope.selectedItems[index] = true; |
+ $scope.selectedItems.splice(i, 1); |
} |
// unlike other toggle methods below, does not set |
// $scope.areUpdatesPending = true; |
@@ -113,27 +130,58 @@ |
$scope.areUpdatesPending = true; |
} |
+ $scope.setViewingTab = function(tab) { |
+ $scope.viewingTab = tab; |
+ $scope.updateResults(); |
+ } |
+ |
$scope.localTimeString = function(secondsPastEpoch) { |
var d = new Date(secondsPastEpoch * 1000); |
return d.toString(); |
} |
+ $scope.moveSelectedItems = function() { |
+ var itemIndex; |
+ var selectedItemsLength = $scope.selectedItems.length; |
+ for (var i = 0; i < selectedItemsLength; i++) { |
+ itemIndex = $scope.selectedItems[i]; |
+ $scope.testData[itemIndex].tab = $scope.newTab; |
+ } |
+ $scope.selectedItems = []; |
+ $scope.updateResults(); |
+ } |
+ |
$scope.updateResults = function() { |
$scope.displayLimit = $scope.displayLimitPending; |
// TODO(epoger): Every time we apply a filter, AngularJS creates |
// another copy of the array. Is there a way we can filter out |
// the items as they are displayed, rather than storing multiple |
// array copies? (For better performance.) |
- $scope.filteredTestData = |
- $filter("orderBy")( |
- $filter("removeHiddenItems")( |
- $scope.testData, |
- $scope.hiddenResultTypes, |
- $scope.hiddenConfigs |
- ), |
- $scope.sortColumn); |
- $scope.limitedTestData = $filter("limitTo")( |
- $scope.filteredTestData, $scope.displayLimit); |
+ |
+ if ($scope.viewingTab == $scope.defaultTab) { |
+ $scope.filteredTestData = |
+ $filter("orderBy")( |
+ $filter("removeHiddenItems")( |
+ $scope.testData, |
+ $scope.hiddenResultTypes, |
+ $scope.hiddenConfigs, |
+ $scope.viewingTab |
+ ), |
+ $scope.sortColumn); |
+ $scope.limitedTestData = $filter("limitTo")( |
+ $scope.filteredTestData, $scope.displayLimit); |
+ } else { |
+ $scope.filteredTestData = |
+ $filter("orderBy")( |
+ $filter("filter")( |
epoger
2013/10/19 01:15:56
In the tabs other than "Unfiled", we don't allow t
|
+ $scope.testData, |
+ {tab: $scope.viewingTab}, |
+ true |
+ ), |
+ $scope.sortColumn); |
+ $scope.limitedTestData = $filter("limitTo")( |
+ $scope.filteredTestData, $scope.displayLimit); |
+ } |
$scope.imageSize = $scope.imageSizePending; |
$scope.areUpdatesPending = false; |
} |