| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 | 2 |
| 3 <html ng-app="Loader" ng-controller="Loader.Controller"> | 3 <html ng-app="Loader" ng-controller="Loader.Controller"> |
| 4 | 4 |
| 5 <head> | 5 <head> |
| 6 <title ng-bind="windowTitle"></title> | 6 <title ng-bind="windowTitle"></title> |
| 7 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js"
></script> | 7 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js"
></script> |
| 8 <script src="loader.js"></script> | 8 <script src="loader.js"></script> |
| 9 <link rel="stylesheet" href="view.css"> | 9 <link rel="stylesheet" href="view.css"> |
| 10 </head> | 10 </head> |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 show | 31 show |
| 32 <ul ng-hide="!showTodos"> | 32 <ul ng-hide="!showTodos"> |
| 33 <li> | 33 <li> |
| 34 If server was run with --reload flag, automatically check for | 34 If server was run with --reload flag, automatically check for |
| 35 new results and tell the user when new results are available | 35 new results and tell the user when new results are available |
| 36 (the user can reload the page if he wants to see them). | 36 (the user can reload the page if he wants to see them). |
| 37 </li><li> | 37 </li><li> |
| 38 Add ability to filter builder and test names | 38 Add ability to filter builder and test names |
| 39 (using a free-form text field, with partial string match) | 39 (using a free-form text field, with partial string match) |
| 40 </li><li> | 40 </li><li> |
| 41 Add more columns, such as pixel diffs, notes/bugs, | 41 Add pixel diffs, and sorting by percentage of different pixels |
| 42 ignoreFailure boolean | 42 </li><li> |
| 43 Add ability to sort/filter by reviewed-by-human. Depends on |
| 44 <a href="https://code.google.com/p/skia/issues/detail?id=1758"> |
| 45 bug 1758 |
| 46 </a> |
| 47 ('rebaseline_server: make the "categories" struct passed from server t
o client a list instead of a dict') |
| 43 </li><li> | 48 </li><li> |
| 44 Improve the column sorting, as per | 49 Improve the column sorting, as per |
| 45 <a href="http://jsfiddle.net/vojtajina/js64b/14/"> | 50 <a href="http://jsfiddle.net/vojtajina/js64b/14/"> |
| 46 http://jsfiddle.net/vojtajina/js64b/14/ | 51 http://jsfiddle.net/vojtajina/js64b/14/ |
| 47 </a> | 52 </a> |
| 48 </li><li> | 53 </li><li> |
| 49 Right now, if you change which column is used to | 54 Right now, if you change which column is used to |
| 50 sort the data, the column widths may fluctuate based on the | 55 sort the data, the column widths may fluctuate based on the |
| 51 longest string <i>currently visible</i> within the top {{displayLimit}
} | 56 longest string <i>currently visible</i> within the top {{displayLimit}
} |
| 52 results. Can we fix the column widths to be wide enough to hold | 57 results. Can we fix the column widths to be wide enough to hold |
| (...skipping 25 matching lines...) Expand all Loading... |
| 78 <table ng-hide="viewingTab != defaultTab" border="1"> | 83 <table ng-hide="viewingTab != defaultTab" border="1"> |
| 79 <tr> | 84 <tr> |
| 80 <th colspan="2"> | 85 <th colspan="2"> |
| 81 Filters | 86 Filters |
| 82 </th> | 87 </th> |
| 83 <th> | 88 <th> |
| 84 Settings | 89 Settings |
| 85 </th> | 90 </th> |
| 86 </tr> | 91 </tr> |
| 87 <tr valign="top"> | 92 <tr valign="top"> |
| 93 <!-- TODO(epoger): make this an ng-repeat over resultType, config, etc? --
> |
| 88 <td> | 94 <td> |
| 89 resultType<br> | 95 resultType<br> |
| 90 <label ng-repeat="(resultType, count) in categories['resultType']"> | 96 <label ng-repeat="(resultType, count) in categories['resultType']"> |
| 91 <input type="checkbox" | 97 <input type="checkbox" |
| 92 name="resultTypes" | 98 name="resultTypes" |
| 93 value="{{resultType}}" | 99 value="{{resultType}}" |
| 94 ng-checked="!isValueInSet(resultType, hiddenResultTypes)" | 100 ng-checked="!isValueInSet(resultType, hiddenResultTypes)" |
| 95 ng-click="toggleValueInSet(resultType, hiddenResultTypes); setU
pdatesPending(true)"> | 101 ng-click="toggleValueInSet(resultType, hiddenResultTypes); setU
pdatesPending(true)"> |
| 96 {{resultType}} ({{count}})<br> | 102 {{resultType}} ({{count}})<br> |
| 97 </label> | 103 </label> |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 <span ng-hide="filteredTestData.length <= limitedTestData.length"> | 166 <span ng-hide="filteredTestData.length <= limitedTestData.length"> |
| 161 displaying the first {{limitedTestData.length}} | 167 displaying the first {{limitedTestData.length}} |
| 162 </span> | 168 </span> |
| 163 <span ng-hide="filteredTestData.length > limitedTestData.length"> | 169 <span ng-hide="filteredTestData.length > limitedTestData.length"> |
| 164 displaying them all | 170 displaying them all |
| 165 </span> | 171 </span> |
| 166 <br> | 172 <br> |
| 167 (click on the column header radio buttons to re-sort by that column) | 173 (click on the column header radio buttons to re-sort by that column) |
| 168 </div> | 174 </div> |
| 169 <div style="float:right"> | 175 <div style="float:right"> |
| 176 <div> |
| 177 all tests shown: |
| 178 <button ng-click="selectAllItems()"> |
| 179 select |
| 180 </button> |
| 181 <button ng-click="clearAllItems()"> |
| 182 clear |
| 183 </button> |
| 184 <button ng-click="toggleAllItems()"> |
| 185 toggle |
| 186 </button> |
| 187 </div> |
| 170 <div ng-repeat="otherTab in tabs"> | 188 <div ng-repeat="otherTab in tabs"> |
| 171 <button ng-click="moveSelectedItemsToTab(otherTab)" | 189 <button ng-click="moveSelectedItemsToTab(otherTab)" |
| 172 ng-disabled="selectedItems.length == 0" | 190 ng-disabled="selectedItems.length == 0" |
| 173 ng-hide="otherTab == viewingTab"> | 191 ng-hide="otherTab == viewingTab"> |
| 174 {{selectedItems.length}} move selected tests to {{otherTab}} tab | 192 move {{selectedItems.length}} selected tests to {{otherTab}} tab |
| 175 </button> | 193 </button> |
| 176 </div> | 194 </div> |
| 177 </div> | 195 </div> |
| 178 <div style="clear:both"> | 196 <div style="clear:both"> |
| 179 </div> | 197 </div> |
| 180 </div> | 198 </div> |
| 181 <br> | 199 <br> |
| 182 | 200 |
| 183 <table border="1"> | 201 <table border="1"> |
| 184 <tr> | 202 <tr> |
| 185 <!-- Most column headers are displayed in a common fashion... --> | 203 <!-- Most column headers are displayed in a common fashion... --> |
| 186 <th ng-repeat="categoryName in ['resultType', 'builder', 'test', 'conf
ig']"> | 204 <th ng-repeat="categoryName in ['resultType', 'builder', 'test', 'conf
ig']"> |
| 187 <input type="radio" | 205 <input type="radio" |
| 188 name="sortColumnRadio" | 206 name="sortColumnRadio" |
| 189 value="{{categoryName}}" | 207 value="{{categoryName}}" |
| 190 ng-checked="(sortColumn == categoryName)" | 208 ng-checked="(sortColumn == categoryName)" |
| 191 ng-click="sortResultsBy(categoryName)"> | 209 ng-click="sortResultsBy(categoryName)"> |
| 192 {{categoryName}} | 210 {{categoryName}} |
| 193 </th> | 211 </th> |
| 194 <!-- ... but there are a few columns where we display things different
ly. --> | 212 <!-- ... but there are a few columns where we display things different
ly. --> |
| 195 <th> | 213 <th> |
| 196 <input type="radio" | 214 <input type="radio" |
| 197 name="sortColumnRadio" | 215 name="sortColumnRadio" |
| 216 value="bugs" |
| 217 ng-checked="(sortColumn == 'bugs')" |
| 218 ng-click="sortResultsBy('bugs')"> |
| 219 bugs |
| 220 </th> |
| 221 <th> |
| 222 <input type="radio" |
| 223 name="sortColumnRadio" |
| 198 value="expectedHashDigest" | 224 value="expectedHashDigest" |
| 199 ng-checked="(sortColumn == 'expectedHashDigest')" | 225 ng-checked="(sortColumn == 'expectedHashDigest')" |
| 200 ng-click="sortResultsBy('expectedHashDigest')"> | 226 ng-click="sortResultsBy('expectedHashDigest')"> |
| 201 expected image | 227 expected image |
| 202 </th> | 228 </th> |
| 203 <th> | 229 <th> |
| 204 <input type="radio" | 230 <input type="radio" |
| 205 name="sortColumnRadio" | 231 name="sortColumnRadio" |
| 206 value="actualHashDigest" | 232 value="actualHashDigest" |
| 207 ng-checked="(sortColumn == 'actualHashDigest')" | 233 ng-checked="(sortColumn == 'actualHashDigest')" |
| 208 ng-click="sortResultsBy('actualHashDigest')"> | 234 ng-click="sortResultsBy('actualHashDigest')"> |
| 209 actual image | 235 actual image |
| 210 </th> | 236 </th> |
| 211 <th> | 237 <th> |
| 212 <!-- item-selection checkbox column --> | 238 <!-- item-selection checkbox column --> |
| 213 </th> | 239 </th> |
| 214 </tr> | 240 </tr> |
| 215 <tr ng-repeat="result in limitedTestData"> | 241 <tr ng-repeat="result in limitedTestData"> |
| 216 <td>{{result.resultType}}</td> | 242 <td ng-repeat="categoryName in ['resultType', 'builder', 'test', 'conf
ig']"> |
| 217 <td>{{result.builder}}</td> | 243 {{result[categoryName]}} |
| 218 <td>{{result.test}}</td> | 244 </td> |
| 219 <td>{{result.config}}</td> | 245 <td> |
| 246 <a ng-repeat="bug in result['bugs']" |
| 247 href="https://code.google.com/p/skia/issues/detail?id={{bug}}" |
| 248 target="_blank"> |
| 249 {{bug}} |
| 250 </a> |
| 251 </td> |
| 220 <td> | 252 <td> |
| 221 <a target="_blank" href="http://chromium-skia-gm.commondatastorage.g
oogleapis.com/gm/{{result.expectedHashType}}/{{result.test}}/{{result.expectedHa
shDigest}}.png"> | 253 <a target="_blank" href="http://chromium-skia-gm.commondatastorage.g
oogleapis.com/gm/{{result.expectedHashType}}/{{result.test}}/{{result.expectedHa
shDigest}}.png"> |
| 222 <img width="{{imageSize}}" src="http://chromium-skia-gm.commondata
storage.googleapis.com/gm/{{result.expectedHashType}}/{{result.test}}/{{result.e
xpectedHashDigest}}.png"/> | 254 <img width="{{imageSize}}" src="http://chromium-skia-gm.commondata
storage.googleapis.com/gm/{{result.expectedHashType}}/{{result.test}}/{{result.e
xpectedHashDigest}}.png"/> |
| 223 </a> | 255 </a> |
| 224 </td> | 256 </td> |
| 225 <td> | 257 <td> |
| 226 <a target="_blank" href="http://chromium-skia-gm.commondatastorage.g
oogleapis.com/gm/{{result.actualHashType}}/{{result.test}}/{{result.actualHashDi
gest}}.png"> | 258 <a target="_blank" href="http://chromium-skia-gm.commondatastorage.g
oogleapis.com/gm/{{result.actualHashType}}/{{result.test}}/{{result.actualHashDi
gest}}.png"> |
| 227 <img width="{{imageSize}}" src="http://chromium-skia-gm.commondata
storage.googleapis.com/gm/{{result.actualHashType}}/{{result.test}}/{{result.act
ualHashDigest}}.png"/> | 259 <img width="{{imageSize}}" src="http://chromium-skia-gm.commondata
storage.googleapis.com/gm/{{result.actualHashType}}/{{result.test}}/{{result.act
ualHashDigest}}.png"/> |
| 228 </a> | 260 </a> |
| 229 </td> | 261 </td> |
| (...skipping 11 matching lines...) Expand all Loading... |
| 241 <!-- TODO(epoger): Can we get the base URLs (commondatastorage and | 273 <!-- TODO(epoger): Can we get the base URLs (commondatastorage and |
| 242 issues list) from | 274 issues list) from |
| 243 http://skia.googlecode.com/svn/buildbot/site_config/global_variables.json | 275 http://skia.googlecode.com/svn/buildbot/site_config/global_variables.json |
| 244 ? I tried importing the | 276 ? I tried importing the |
| 245 http://skia.googlecode.com/svn/buildbot/skia_tools.js script and using | 277 http://skia.googlecode.com/svn/buildbot/skia_tools.js script and using |
| 246 that to do so, but I got Access-Control-Allow-Origin errors. | 278 that to do so, but I got Access-Control-Allow-Origin errors. |
| 247 --> | 279 --> |
| 248 | 280 |
| 249 </body> | 281 </body> |
| 250 </html> | 282 </html> |
| OLD | NEW |