Index: gm/rebaseline_server/static/view.html |
diff --git a/gm/rebaseline_server/static/view.html b/gm/rebaseline_server/static/view.html |
index 94dc9ba63e5e6e2a0bb71d30b994db29b183ef4a..d94c47d02fa3abfcfa122b911e84942305f8ee58 100644 |
--- a/gm/rebaseline_server/static/view.html |
+++ b/gm/rebaseline_server/static/view.html |
@@ -18,12 +18,12 @@ |
</a> |
</h2> |
- <em ng-show="!extraColumnHeaders"><!-- show until data is loaded --> |
+ <em ng-show="!readyToDisplay"> |
Loading results from <a href="{{resultsToLoad}}">{{resultsToLoad}}</a> ... |
{{loadingMessage}} |
</em> |
- <div ng-show="extraColumnHeaders"><!-- everything: hide until data is loaded --> |
+ <div ng-show="readyToDisplay"> |
<div class="warning-div" |
ng-show="urlSchemaVersionLoaded != constants.URL_VALUE__SCHEMA_VERSION__CURRENT"> |
@@ -74,26 +74,32 @@ |
</th> |
</tr> |
<tr valign="top"> |
- <td> |
- resultType<br> |
- <label ng-repeat="valueAndCount in extraColumnHeaders[constants.KEY__EXTRACOLUMNS__RESULT_TYPE][constants.KEY__EXTRACOLUMNHEADERS__VALUES_AND_COUNTS]"> |
+ |
+ <!-- columns that we filter using checkboxes --> |
+ <td ng-repeat="category in [constants.KEY__EXTRACOLUMNS__RESULT_TYPE, constants.KEY__EXTRACOLUMNS__CONFIG]"> |
+ {{category}} |
+ <br> |
+ <label ng-repeat="valueAndCount in extraColumnHeaders[category][constants.KEY__EXTRACOLUMNHEADERS__VALUES_AND_COUNTS]"> |
<input type="checkbox" |
- name="resultTypes" |
value="{{valueAndCount[0]}}" |
- ng-checked="!isValueInSet(valueAndCount[0], hiddenResultTypes)" |
- ng-click="toggleValueInSet(valueAndCount[0], hiddenResultTypes); setUpdatesPending(true)"> |
+ ng-checked="isValueInSet(valueAndCount[0], showingColumnValues[category])" |
+ ng-click="toggleValueInSet(valueAndCount[0], showingColumnValues[category]); setUpdatesPending(true)"> |
{{valueAndCount[0]}} ({{valueAndCount[1]}})<br> |
</label> |
- <button ng-click="hiddenResultTypes = {}; updateResults()"> |
+ <button ng-click="showingColumnValues[category] = {}; toggleValuesInSet(allColumnValues[category], showingColumnValues[category]); updateResults()" |
+ ng-disabled="!readyToDisplay || allColumnValues[category].length == setSize(showingColumnValues[category])"> |
all |
</button> |
- <button ng-click="hiddenResultTypes = {}; toggleValuesInSet(allResultTypes, hiddenResultTypes); updateResults()"> |
+ <button ng-click="showingColumnValues[category] = {}; updateResults()" |
+ ng-disabled="!readyToDisplay || 0 == setSize(showingColumnValues[category])"> |
none |
</button> |
- <button ng-click="toggleValuesInSet(allResultTypes, hiddenResultTypes); updateResults()"> |
+ <button ng-click="toggleValuesInSet(allColumnValues[category], showingColumnValues[category]); updateResults()"> |
toggle |
</button> |
</td> |
+ |
+ <!-- columns that we filter using partial text match --> |
<td ng-repeat="category in [constants.KEY__EXTRACOLUMNS__BUILDER, constants.KEY__EXTRACOLUMNS__TEST]"> |
{{category}} |
<br> |
@@ -106,26 +112,8 @@ |
clear (show all) |
</button> |
</td> |
- <td> |
- config<br> |
- <label ng-repeat="valueAndCount in extraColumnHeaders[constants.KEY__EXTRACOLUMNS__CONFIG][constants.KEY__EXTRACOLUMNHEADERS__VALUES_AND_COUNTS]"> |
- <input type="checkbox" |
- name="configs" |
- value="{{valueAndCount[0]}}" |
- ng-checked="!isValueInSet(valueAndCount[0], hiddenConfigs)" |
- ng-click="toggleValueInSet(valueAndCount[0], hiddenConfigs); setUpdatesPending(true)"> |
- {{valueAndCount[0]}} ({{valueAndCount[1]}})<br> |
- </label> |
- <button ng-click="hiddenConfigs = {}; updateResults()"> |
- all |
- </button> |
- <button ng-click="hiddenConfigs = {}; toggleValuesInSet(allConfigs, hiddenConfigs); updateResults()"> |
- none |
- </button> |
- <button ng-click="toggleValuesInSet(allConfigs, hiddenConfigs); updateResults()"> |
- toggle |
- </button> |
- </td> |
+ |
+ <!-- settings --> |
<td><table> |
<tr><td> |
<input type="checkbox" ng-model="showThumbnailsPending" |
@@ -244,7 +232,7 @@ |
<table border="1" ng-app="diff_viewer"> <!-- results --> |
<tr> |
<!-- Most column headers are displayed in a common fashion... --> |
- <th ng-repeat="categoryName in [constants.KEY__EXTRACOLUMNS__RESULT_TYPE, constants.KEY__EXTRACOLUMNS__BUILDER, constants.KEY__EXTRACOLUMNS__TEST, constants.KEY__EXTRACOLUMNS__CONFIG]"> |
+ <th ng-repeat="categoryName in [constants.KEY__EXTRACOLUMNS__RESULT_TYPE, constants.KEY__EXTRACOLUMNS__CONFIG, constants.KEY__EXTRACOLUMNS__BUILDER, constants.KEY__EXTRACOLUMNS__TEST]"> |
<input type="radio" |
name="sortColumnRadio" |
value="{{categoryName}}" |
@@ -307,24 +295,29 @@ |
<tr ng-repeat="imagePair in limitedImagePairs" valign="top" |
ng-class-odd="'results-odd'" ng-class-even="'results-even'" |
results-updated-callback-directive> |
- <td> |
- {{imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUMNS][constants.KEY__EXTRACOLUMNS__RESULT_TYPE]}} |
+ |
+ <!-- columns that we filter using checkboxes --> |
+ <td ng-repeat="categoryName in [constants.KEY__EXTRACOLUMNS__RESULT_TYPE, constants.KEY__EXTRACOLUMNS__CONFIG]"> |
+ {{imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUMNS][categoryName]}} |
<br> |
<button class="show-only-button" |
ng-show="viewingTab == defaultTab" |
- ng-click="showOnlyResultType(imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUMNS][constants.KEY__EXTRACOLUMNS__RESULT_TYPE])" |
- title="show only results of type {{imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUMNS][constants.KEY__EXTRACOLUMNS__RESULT_TYPE]}}"> |
+ ng-disabled="1 == setSize(showingColumnValues[categoryName])" |
+ ng-click="showOnlyColumnValue(categoryName, imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUMNS][categoryName])" |
+ title="show only results of {{categoryName}} {{imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUMNS][categoryName]}}"> |
show only |
</button> |
<br> |
<button class="show-all-button" |
ng-show="viewingTab == defaultTab" |
- ng-disabled="0 == setSize(hiddenResultTypes)" |
- ng-click="showAllResultTypes()" |
- title="show results of all types"> |
+ ng-disabled="allColumnValues[categoryName].length == setSize(showingColumnValues[categoryName])" |
+ ng-click="showAllColumnValues(categoryName)" |
+ title="show results of all {{categoryName}}s"> |
show all |
</button> |
</td> |
+ |
+ <!-- columns that we filter using partial-text matching --> |
<td ng-repeat="categoryName in [constants.KEY__EXTRACOLUMNS__BUILDER, constants.KEY__EXTRACOLUMNS__TEST]"> |
{{imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUMNS][categoryName]}} |
<br> |
@@ -344,24 +337,8 @@ |
show all |
</button> |
</td> |
- <td> |
- {{imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUMNS][constants.KEY__EXTRACOLUMNS__CONFIG]}} |
- <br> |
- <button class="show-only-button" |
- ng-show="viewingTab == defaultTab" |
- ng-click="showOnlyConfig(imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUMNS][constants.KEY__EXTRACOLUMNS__CONFIG])" |
- title="show only results of config {{imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUMNS][constants.KEY__EXTRACOLUMNS__CONFIG]}}"> |
- show only |
- </button> |
- <br> |
- <button class="show-all-button" |
- ng-show="viewingTab == defaultTab" |
- ng-disabled="0 == setSize(hiddenConfigs)" |
- ng-click="showAllConfigs()" |
- title="show results of all configs"> |
- show all |
- </button> |
- </td> |
+ |
+ <!-- bugs --> |
<td> |
<a ng-repeat="bug in imagePair[constants.KEY__IMAGEPAIRS__EXPECTATIONS][constants.KEY__EXPECTATIONS__BUGS]" |
href="https://code.google.com/p/skia/issues/detail?id={{bug}}" |