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="constants.js"></script> | 8 <script src="constants.js"></script> |
9 <script src="loader.js"></script> | 9 <script src="loader.js"></script> |
10 <link rel="stylesheet" href="view.css"> | 10 <link rel="stylesheet" href="view.css"> |
11 </head> | 11 </head> |
12 | 12 |
13 <body> | 13 <body> |
14 <h2> | 14 <h2> |
15 Instructions, roadmap, etc. are at | 15 Instructions, roadmap, etc. are at |
16 <a href="http://tinyurl.com/SkiaRebaselineServer"> | 16 <a href="http://tinyurl.com/SkiaRebaselineServer"> |
17 http://tinyurl.com/SkiaRebaselineServer | 17 http://tinyurl.com/SkiaRebaselineServer |
18 </a> | 18 </a> |
19 </h2> | 19 </h2> |
20 | 20 |
21 <em> | 21 <em ng-show="!extraColumnHeaders"><!-- show until data is loaded --> |
| 22 Loading results from <a href="{{resultsToLoad}}">{{resultsToLoad}}</a> ... |
22 {{loadingMessage}} | 23 {{loadingMessage}} |
23 </em> | 24 </em> |
24 | 25 |
25 <div ng-show="extraColumnHeaders"><!-- everything: hide until data is loaded -
-> | 26 <div ng-show="extraColumnHeaders"><!-- everything: hide until data is loaded -
-> |
26 | 27 |
27 <div class="warning-div" | 28 <div class="warning-div" |
28 ng-show="header[constants.KEY__HEADER__IS_EDITABLE] && header[constants
.KEY__HEADER__IS_EXPORTED]"> | 29 ng-show="header[constants.KEY__HEADER__IS_EDITABLE] && header[constants
.KEY__HEADER__IS_EXPORTED]"> |
29 WARNING! These results are editable and exported, so any user | 30 WARNING! These results are editable and exported, so any user |
30 who can connect to this server over the network can modify them. | 31 who can connect to this server over the network can modify them. |
31 </div> | 32 </div> |
32 | 33 |
33 <div ng-show="header[constants.KEY__HEADER__TIME_UPDATED]"> | 34 <div ng-show="header[constants.KEY__HEADER__TIME_UPDATED]"> |
34 Results current as of {{localTimeString(header[constants.KEY__HEADER__TIME
_UPDATED])}} | 35 Results from <a href="{{resultsToLoad}}">{{resultsToLoad}}</a> current as
of {{localTimeString(header[constants.KEY__HEADER__TIME_UPDATED])}} |
35 </div> | 36 </div> |
36 | 37 |
37 <div><!-- tabs --> | 38 <div><!-- tabs --> |
38 <div class="tab-spacer" ng-repeat="tab in tabs"> | 39 <div class="tab-spacer" ng-repeat="tab in tabs"> |
39 <div class="tab-{{tab == viewingTab}}" | 40 <div class="tab-{{tab == viewingTab}}" |
40 ng-click="setViewingTab(tab)"> | 41 ng-click="setViewingTab(tab)"> |
41 {{tab}} ({{numResultsPerTab[tab]}}) | 42 {{tab}} ({{numResultsPerTab[tab]}}) |
42 </div> | 43 </div> |
43 <div class="tab-spacer"> | 44 <div class="tab-spacer"> |
44 | 45 |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 <!-- ... but there are a few columns where we display things different
ly. --> | 236 <!-- ... but there are a few columns where we display things different
ly. --> |
236 <th> | 237 <th> |
237 <input type="radio" | 238 <input type="radio" |
238 name="sortColumnRadio" | 239 name="sortColumnRadio" |
239 value="bugs" | 240 value="bugs" |
240 ng-checked="(sortColumnKey == constants.KEY__EXPECTATIONS__BU
GS)" | 241 ng-checked="(sortColumnKey == constants.KEY__EXPECTATIONS__BU
GS)" |
241 ng-click="sortResultsBy(constants.KEY__EXPECTATIONS_DATA, con
stants.KEY__EXPECTATIONS__BUGS)"> | 242 ng-click="sortResultsBy(constants.KEY__EXPECTATIONS_DATA, con
stants.KEY__EXPECTATIONS__BUGS)"> |
242 bugs | 243 bugs |
243 </th> | 244 </th> |
244 <th width="{{imageSize}}"> | 245 <th width="{{imageSize}}"> |
245 {{imageSets[0][constants.KEY__IMAGESETS__DESCRIPTION]}} | 246 {{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_A][constants.KEY__I
MAGESETS__FIELD__DESCRIPTION]}} |
246 </th> | 247 </th> |
247 <th width="{{imageSize}}"> | 248 <th width="{{imageSize}}"> |
248 {{imageSets[1][constants.KEY__IMAGESETS__DESCRIPTION]}} | 249 {{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_B][constants.KEY__I
MAGESETS__FIELD__DESCRIPTION]}} |
249 </th> | 250 </th> |
250 <th width="{{imageSize}}"> | 251 <th width="{{imageSize}}"> |
251 <input type="radio" | 252 <input type="radio" |
252 name="sortColumnRadio" | 253 name="sortColumnRadio" |
253 value="percentDifferingPixels" | 254 value="percentDifferingPixels" |
254 ng-checked="(sortColumnKey == constants.KEY__DIFFERENCE_DATA_
_PERCENT_DIFF_PIXELS)" | 255 ng-checked="(sortColumnKey == constants.KEY__DIFFERENCE_DATA_
_PERCENT_DIFF_PIXELS)" |
255 ng-click="sortResultsBy(constants.KEY__DIFFERENCE_DATA, const
ants.KEY__DIFFERENCE_DATA__PERCENT_DIFF_PIXELS)"> | 256 ng-click="sortResultsBy(constants.KEY__DIFFERENCE_DATA, const
ants.KEY__DIFFERENCE_DATA__PERCENT_DIFF_PIXELS)"> |
256 differing pixels in white | 257 differing pixels in white |
257 </th> | 258 </th> |
258 <th width="{{imageSize}}"> | 259 <th width="{{imageSize}}"> |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 <a ng-repeat="bug in imagePair[constants.KEY__EXPECTATIONS_DATA][con
stants.KEY__EXPECTATIONS__BUGS]" | 335 <a ng-repeat="bug in imagePair[constants.KEY__EXPECTATIONS_DATA][con
stants.KEY__EXPECTATIONS__BUGS]" |
335 href="https://code.google.com/p/skia/issues/detail?id={{bug}}" | 336 href="https://code.google.com/p/skia/issues/detail?id={{bug}}" |
336 target="_blank"> | 337 target="_blank"> |
337 {{bug}} | 338 {{bug}} |
338 </a> | 339 </a> |
339 </td> | 340 </td> |
340 | 341 |
341 <!-- image A --> | 342 <!-- image A --> |
342 <td valign="bottom" width="{{imageSize}}"> | 343 <td valign="bottom" width="{{imageSize}}"> |
343 <div ng-if="imagePair[constants.KEY__IMAGE_A_URL] != null"> | 344 <div ng-if="imagePair[constants.KEY__IMAGE_A_URL] != null"> |
344 <a href="{{imageSets[0][constants.KEY__IMAGESETS__BASE_URL]}}/{{im
agePair[constants.KEY__IMAGE_A_URL]}}" target="_blank">View Image</a><br/> | 345 <a href="{{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_A][const
ants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{imagePair[constants.KEY__IMAGE_A_URL]}
}" target="_blank">View Image</a><br/> |
345 <img ng-if="showThumbnails" | 346 <img ng-if="showThumbnails" |
346 width="{{imageSize}}" | 347 width="{{imageSize}}" |
347 src="{{imageSets[0][constants.KEY__IMAGESETS__BASE_URL]}}/{{i
magePair[constants.KEY__IMAGE_A_URL]}}" /> | 348 src="{{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_A][cons
tants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{imagePair[constants.KEY__IMAGE_A_URL]
}}" /> |
348 </div> | 349 </div> |
349 <div ng-show="imagePair[constants.KEY__IMAGE_A_URL] == null" | 350 <div ng-show="imagePair[constants.KEY__IMAGE_A_URL] == null" |
350 style="text-align:center"> | 351 style="text-align:center"> |
351 –none– | 352 –none– |
352 </div> | 353 </div> |
353 </td> | 354 </td> |
354 | 355 |
355 <!-- image B --> | 356 <!-- image B --> |
356 <td valign="bottom" width="{{imageSize}}"> | 357 <td valign="bottom" width="{{imageSize}}"> |
357 <div ng-if="imagePair[constants.KEY__IMAGE_B_URL] != null"> | 358 <div ng-if="imagePair[constants.KEY__IMAGE_B_URL] != null"> |
358 <a href="{{imageSets[1][constants.KEY__IMAGESETS__BASE_URL]}}/{{im
agePair[constants.KEY__IMAGE_B_URL]}}" target="_blank">View Image</a><br/> | 359 <a href="{{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_B][const
ants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{imagePair[constants.KEY__IMAGE_B_URL]}
}" target="_blank">View Image</a><br/> |
359 <img ng-if="showThumbnails" | 360 <img ng-if="showThumbnails" |
360 width="{{imageSize}}" | 361 width="{{imageSize}}" |
361 src="{{imageSets[1][constants.KEY__IMAGESETS__BASE_URL]}}/{{i
magePair[constants.KEY__IMAGE_B_URL]}}" /> | 362 src="{{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_B][cons
tants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{imagePair[constants.KEY__IMAGE_B_URL]
}}" /> |
362 </div> | 363 </div> |
363 <div ng-show="imagePair[constants.KEY__IMAGE_B_URL] == null" | 364 <div ng-show="imagePair[constants.KEY__IMAGE_B_URL] == null" |
364 style="text-align:center"> | 365 style="text-align:center"> |
365 –none– | 366 –none– |
366 </div> | 367 </div> |
367 </td> | 368 </td> |
368 | 369 |
369 <!-- whitediffs: every differing pixel shown in white --> | 370 <!-- whitediffs: every differing pixel shown in white --> |
370 <td valign="bottom" width="{{imageSize}}"> | 371 <td valign="bottom" width="{{imageSize}}"> |
371 <div ng-if="imagePair[constants.KEY__IS_DIFFERENT]" | 372 <div ng-if="imagePair[constants.KEY__IS_DIFFERENT]" |
372 title="{{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KE
Y__DIFFERENCE_DATA__NUM_DIFF_PIXELS] | number:0}} of {{(100 * imagePair[constant
s.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERENCE_DATA__NUM_DIFF_PIXELS] / image
Pair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERENCE_DATA__PERCENT_DIF
F_PIXELS]) | number:0}} pixels ({{imagePair[constants.KEY__DIFFERENCE_DATA][cons
tants.KEY__DIFFERENCE_DATA__PERCENT_DIFF_PIXELS].toFixed(4)}}%) differ from expe
ctation."> | 373 title="{{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KE
Y__DIFFERENCE_DATA__NUM_DIFF_PIXELS] | number:0}} of {{(100 * imagePair[constant
s.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERENCE_DATA__NUM_DIFF_PIXELS] / image
Pair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERENCE_DATA__PERCENT_DIF
F_PIXELS]) | number:0}} pixels ({{imagePair[constants.KEY__DIFFERENCE_DATA][cons
tants.KEY__DIFFERENCE_DATA__PERCENT_DIFF_PIXELS].toFixed(4)}}%) differ from expe
ctation."> |
373 | 374 |
374 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE
NCE_DATA__PERCENT_DIFF_PIXELS].toFixed(4)}}% | 375 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE
NCE_DATA__PERCENT_DIFF_PIXELS].toFixed(4)}}% |
375 ({{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFER
ENCE_DATA__NUM_DIFF_PIXELS]}}) | 376 ({{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFER
ENCE_DATA__NUM_DIFF_PIXELS]}}) |
376 <br/> | 377 <br/> |
377 <a href="/static/generated-images/whitediffs/{{getImageDiffRelativ
eUrl(imagePair)}}" target="_blank">View Image</a><br/> | 378 <a href="{{imageSets[constants.KEY__IMAGESETS__SET__WHITEDIFFS][co
nstants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePair)}
}" target="_blank">View Image</a><br/> |
378 <img ng-if="showThumbnails" | 379 <img ng-if="showThumbnails" |
379 width="{{imageSize}}" | 380 width="{{imageSize}}" |
380 src="/static/generated-images/whitediffs/{{getImageDiffRelati
veUrl(imagePair)}}" /> | 381 src="{{imageSets[constants.KEY__IMAGESETS__SET__WHITEDIFFS][c
onstants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePair)
}}" /> |
381 </div> | 382 </div> |
382 <div ng-show="!imagePair[constants.KEY__IS_DIFFERENT]" | 383 <div ng-show="!imagePair[constants.KEY__IS_DIFFERENT]" |
383 style="text-align:center"> | 384 style="text-align:center"> |
384 –none– | 385 –none– |
385 </div> | 386 </div> |
386 </td> | 387 </td> |
387 | 388 |
388 <!-- diffs: per-channel RGB deltas --> | 389 <!-- diffs: per-channel RGB deltas --> |
389 <td valign="bottom" width="{{imageSize}}"> | 390 <td valign="bottom" width="{{imageSize}}"> |
390 <div ng-if="imagePair[constants.KEY__IS_DIFFERENT]" | 391 <div ng-if="imagePair[constants.KEY__IS_DIFFERENT]" |
391 title="Perceptual difference measure is {{imagePair[constants.K
EY__DIFFERENCE_DATA][constants.KEY__DIFFERENCE_DATA__PERCEPTUAL_DIFF].toFixed(4)
}}%. Maximum difference per channel: R={{imagePair[constants.KEY__DIFFERENCE_DA
TA][constants.KEY__DIFFERENCE_DATA__MAX_DIFF_PER_CHANNEL][0]}}, G={{imagePair[co
nstants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERENCE_DATA__MAX_DIFF_PER_CHANN
EL][1]}}, B={{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERENC
E_DATA__MAX_DIFF_PER_CHANNEL][2]}}"> | 392 title="Perceptual difference measure is {{imagePair[constants.K
EY__DIFFERENCE_DATA][constants.KEY__DIFFERENCE_DATA__PERCEPTUAL_DIFF].toFixed(4)
}}%. Maximum difference per channel: R={{imagePair[constants.KEY__DIFFERENCE_DA
TA][constants.KEY__DIFFERENCE_DATA__MAX_DIFF_PER_CHANNEL][0]}}, G={{imagePair[co
nstants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERENCE_DATA__MAX_DIFF_PER_CHANN
EL][1]}}, B={{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERENC
E_DATA__MAX_DIFF_PER_CHANNEL][2]}}"> |
392 | 393 |
393 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE
NCE_DATA__PERCEPTUAL_DIFF].toFixed(4)}}% | 394 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE
NCE_DATA__PERCEPTUAL_DIFF].toFixed(4)}}% |
394 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE
NCE_DATA__MAX_DIFF_PER_CHANNEL]}} | 395 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE
NCE_DATA__MAX_DIFF_PER_CHANNEL]}} |
395 <br/> | 396 <br/> |
396 <a href="/static/generated-images/diffs/{{getImageDiffRelativeUrl(
imagePair)}}" target="_blank">View Image</a><br/> | 397 <a href="{{imageSets[constants.KEY__IMAGESETS__SET__DIFFS][constan
ts.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePair)}}" ta
rget="_blank">View Image</a><br/> |
397 <img ng-if="showThumbnails" | 398 <img ng-if="showThumbnails" |
398 ng-style="{backgroundColor: pixelDiffBgColor}" | 399 ng-style="{backgroundColor: pixelDiffBgColor}" |
399 width="{{imageSize}}" | 400 width="{{imageSize}}" |
400 src="/static/generated-images/diffs/{{getImageDiffRelativeUrl
(imagePair)}}"/> | 401 src="{{imageSets[constants.KEY__IMAGESETS__SET__DIFFS][consta
nts.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePair)}}" /
> |
401 </div> | 402 </div> |
402 <div ng-show="!imagePair[constants.KEY__IS_DIFFERENT]" | 403 <div ng-show="!imagePair[constants.KEY__IS_DIFFERENT]" |
403 style="text-align:center"> | 404 style="text-align:center"> |
404 –none– | 405 –none– |
405 </div> | 406 </div> |
406 </td> | 407 </td> |
407 | 408 |
408 <td> | 409 <td> |
409 <input type="checkbox" | 410 <input type="checkbox" |
410 name="rowSelect" | 411 name="rowSelect" |
411 value="{{imagePair.index}}" | 412 value="{{imagePair.index}}" |
412 ng-checked="isValueInArray(imagePair.index, selectedImagePair
s)" | 413 ng-checked="isValueInArray(imagePair.index, selectedImagePair
s)" |
413 ng-click="toggleValueInArray(imagePair.index, selectedImagePa
irs)"> | 414 ng-click="toggleValueInArray(imagePair.index, selectedImagePa
irs)"> |
414 </tr> | 415 </tr> |
415 </table> <!-- imagePairs --> | 416 </table> <!-- imagePairs --> |
416 </td></tr></table> <!-- table holding results header + imagePairs table --> | 417 </td></tr></table> <!-- table holding results header + imagePairs table --> |
417 | 418 |
418 </div><!-- main display area of selected tab --> | 419 </div><!-- main display area of selected tab --> |
419 </div><!-- everything: hide until data is loaded --> | 420 </div><!-- everything: hide until data is loaded --> |
420 | 421 |
421 </body> | 422 </body> |
422 </html> | 423 </html> |
OLD | NEW |