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 |