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"> |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 <th colspan="4"> | 61 <th colspan="4"> |
62 Filters | 62 Filters |
63 </th> | 63 </th> |
64 <th> | 64 <th> |
65 Settings | 65 Settings |
66 </th> | 66 </th> |
67 </tr> | 67 </tr> |
68 <tr valign="top"> | 68 <tr valign="top"> |
69 <td> | 69 <td> |
70 resultType<br> | 70 resultType<br> |
71 <label ng-repeat="valueAndCount in extraColumnHeaders[constants.KEY__EXT
RACOLUMN__RESULT_TYPE][constants.KEY__EXTRACOLUMNHEADERS__VALUES_AND_COUNTS]"> | 71 <label ng-repeat="valueAndCount in extraColumnHeaders[constants.KEY__EXT
RACOLUMNS__RESULT_TYPE][constants.KEY__EXTRACOLUMNHEADERS__VALUES_AND_COUNTS]"> |
72 <input type="checkbox" | 72 <input type="checkbox" |
73 name="resultTypes" | 73 name="resultTypes" |
74 value="{{valueAndCount[0]}}" | 74 value="{{valueAndCount[0]}}" |
75 ng-checked="!isValueInSet(valueAndCount[0], hiddenResultTypes)" | 75 ng-checked="!isValueInSet(valueAndCount[0], hiddenResultTypes)" |
76 ng-click="toggleValueInSet(valueAndCount[0], hiddenResultTypes)
; setUpdatesPending(true)"> | 76 ng-click="toggleValueInSet(valueAndCount[0], hiddenResultTypes)
; setUpdatesPending(true)"> |
77 {{valueAndCount[0]}} ({{valueAndCount[1]}})<br> | 77 {{valueAndCount[0]}} ({{valueAndCount[1]}})<br> |
78 </label> | 78 </label> |
79 <button ng-click="hiddenResultTypes = {}; updateResults()"> | 79 <button ng-click="hiddenResultTypes = {}; updateResults()"> |
80 all | 80 all |
81 </button> | 81 </button> |
82 <button ng-click="hiddenResultTypes = {}; toggleValuesInSet(allResultTyp
es, hiddenResultTypes); updateResults()"> | 82 <button ng-click="hiddenResultTypes = {}; toggleValuesInSet(allResultTyp
es, hiddenResultTypes); updateResults()"> |
83 none | 83 none |
84 </button> | 84 </button> |
85 <button ng-click="toggleValuesInSet(allResultTypes, hiddenResultTypes);
updateResults()"> | 85 <button ng-click="toggleValuesInSet(allResultTypes, hiddenResultTypes);
updateResults()"> |
86 toggle | 86 toggle |
87 </button> | 87 </button> |
88 </td> | 88 </td> |
89 <td ng-repeat="category in [constants.KEY__EXTRACOLUMN__BUILDER, constants
.KEY__EXTRACOLUMN__TEST]"> | 89 <td ng-repeat="category in [constants.KEY__EXTRACOLUMNS__BUILDER, constant
s.KEY__EXTRACOLUMNS__TEST]"> |
90 {{category}} | 90 {{category}} |
91 <br> | 91 <br> |
92 <input type="text" | 92 <input type="text" |
93 ng-model="categoryValueMatch[category]" | 93 ng-model="categoryValueMatch[category]" |
94 ng-change="setUpdatesPending(true)"/> | 94 ng-change="setUpdatesPending(true)"/> |
95 <br> | 95 <br> |
96 <button ng-click="setCategoryValueMatch(category, '')" | 96 <button ng-click="setCategoryValueMatch(category, '')" |
97 ng-disabled="('' == categoryValueMatch[category])"> | 97 ng-disabled="('' == categoryValueMatch[category])"> |
98 clear (show all) | 98 clear (show all) |
99 </button> | 99 </button> |
100 </td> | 100 </td> |
101 <td> | 101 <td> |
102 config<br> | 102 config<br> |
103 <label ng-repeat="valueAndCount in extraColumnHeaders[constants.KEY__EXT
RACOLUMN__CONFIG][constants.KEY__EXTRACOLUMNHEADERS__VALUES_AND_COUNTS]"> | 103 <label ng-repeat="valueAndCount in extraColumnHeaders[constants.KEY__EXT
RACOLUMNS__CONFIG][constants.KEY__EXTRACOLUMNHEADERS__VALUES_AND_COUNTS]"> |
104 <input type="checkbox" | 104 <input type="checkbox" |
105 name="configs" | 105 name="configs" |
106 value="{{valueAndCount[0]}}" | 106 value="{{valueAndCount[0]}}" |
107 ng-checked="!isValueInSet(valueAndCount[0], hiddenConfigs)" | 107 ng-checked="!isValueInSet(valueAndCount[0], hiddenConfigs)" |
108 ng-click="toggleValueInSet(valueAndCount[0], hiddenConfigs); se
tUpdatesPending(true)"> | 108 ng-click="toggleValueInSet(valueAndCount[0], hiddenConfigs); se
tUpdatesPending(true)"> |
109 {{valueAndCount[0]}} ({{valueAndCount[1]}})<br> | 109 {{valueAndCount[0]}} ({{valueAndCount[1]}})<br> |
110 </label> | 110 </label> |
111 <button ng-click="hiddenConfigs = {}; updateResults()"> | 111 <button ng-click="hiddenConfigs = {}; updateResults()"> |
112 all | 112 all |
113 </button> | 113 </button> |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 move {{selectedImagePairs.length}} selected tests to {{otherTab}
} tab | 223 move {{selectedImagePairs.length}} selected tests to {{otherTab}
} tab |
224 </button> | 224 </button> |
225 </div> | 225 </div> |
226 </td> | 226 </td> |
227 </tr> | 227 </tr> |
228 </table> <!-- results header --> | 228 </table> <!-- results header --> |
229 </td></tr><tr><td> | 229 </td></tr><tr><td> |
230 <table border="1" ng-app="diff_viewer"> <!-- results --> | 230 <table border="1" ng-app="diff_viewer"> <!-- results --> |
231 <tr> | 231 <tr> |
232 <!-- Most column headers are displayed in a common fashion... --> | 232 <!-- Most column headers are displayed in a common fashion... --> |
233 <th ng-repeat="categoryName in [constants.KEY__EXTRACOLUMN__RESULT_TYP
E, constants.KEY__EXTRACOLUMN__BUILDER, constants.KEY__EXTRACOLUMN__TEST, consta
nts.KEY__EXTRACOLUMN__CONFIG]"> | 233 <th ng-repeat="categoryName in [constants.KEY__EXTRACOLUMNS__RESULT_TY
PE, constants.KEY__EXTRACOLUMNS__BUILDER, constants.KEY__EXTRACOLUMNS__TEST, con
stants.KEY__EXTRACOLUMNS__CONFIG]"> |
234 <input type="radio" | 234 <input type="radio" |
235 name="sortColumnRadio" | 235 name="sortColumnRadio" |
236 value="{{categoryName}}" | 236 value="{{categoryName}}" |
237 ng-checked="(sortColumnKey == categoryName)" | 237 ng-checked="(sortColumnKey == categoryName)" |
238 ng-click="sortResultsBy(constants.KEY__EXTRA_COLUMN_VALUES, c
ategoryName)"> | 238 ng-click="sortResultsBy(constants.KEY__IMAGEPAIRS__EXTRACOLUM
NS, categoryName)"> |
239 {{categoryName}} | 239 {{categoryName}} |
240 </th> | 240 </th> |
241 <!-- ... but there are a few columns where we display things different
ly. --> | 241 <!-- ... but there are a few columns where we display things different
ly. --> |
242 <th> | 242 <th> |
243 <input type="radio" | 243 <input type="radio" |
244 name="sortColumnRadio" | 244 name="sortColumnRadio" |
245 value="bugs" | 245 value="bugs" |
246 ng-checked="(sortColumnKey == constants.KEY__EXPECTATIONS__BU
GS)" | 246 ng-checked="(sortColumnKey == constants.KEY__EXPECTATIONS__BU
GS)" |
247 ng-click="sortResultsBy(constants.KEY__EXPECTATIONS_DATA, con
stants.KEY__EXPECTATIONS__BUGS)"> | 247 ng-click="sortResultsBy(constants.KEY__IMAGEPAIRS__EXPECTATIO
NS, constants.KEY__EXPECTATIONS__BUGS)"> |
248 bugs | 248 bugs |
249 </th> | 249 </th> |
250 <th width="{{imageSize}}"> | 250 <th width="{{imageSize}}"> |
251 {{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_A][constants.KEY__I
MAGESETS__FIELD__DESCRIPTION]}} | 251 {{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_A][constants.KEY__I
MAGESETS__FIELD__DESCRIPTION]}} |
252 </th> | 252 </th> |
253 <th width="{{imageSize}}"> | 253 <th width="{{imageSize}}"> |
254 {{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_B][constants.KEY__I
MAGESETS__FIELD__DESCRIPTION]}} | 254 {{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_B][constants.KEY__I
MAGESETS__FIELD__DESCRIPTION]}} |
255 </th> | 255 </th> |
256 <th width="{{imageSize}}"> | 256 <th width="{{imageSize}}"> |
257 <input type="radio" | 257 <input type="radio" |
258 name="sortColumnRadio" | 258 name="sortColumnRadio" |
259 value="percentDifferingPixels" | 259 value="percentDifferingPixels" |
260 ng-checked="(sortColumnKey == constants.KEY__DIFFERENCE_DATA_
_PERCENT_DIFF_PIXELS)" | 260 ng-checked="(sortColumnKey == constants.KEY__DIFFERENCES__PER
CENT_DIFF_PIXELS)" |
261 ng-click="sortResultsBy(constants.KEY__DIFFERENCE_DATA, const
ants.KEY__DIFFERENCE_DATA__PERCENT_DIFF_PIXELS)"> | 261 ng-click="sortResultsBy(constants.KEY__IMAGEPAIRS__DIFFERENCE
S, constants.KEY__DIFFERENCES__PERCENT_DIFF_PIXELS)"> |
262 differing pixels in white | 262 differing pixels in white |
263 </th> | 263 </th> |
264 <th width="{{imageSize}}"> | 264 <th width="{{imageSize}}"> |
265 <input type="radio" | 265 <input type="radio" |
266 name="sortColumnRadio" | 266 name="sortColumnRadio" |
267 value="weightedDiffMeasure" | 267 value="weightedDiffMeasure" |
268 ng-checked="(sortColumnKey == constants.KEY__DIFFERENCE_DATA_
_PERCEPTUAL_DIFF)" | 268 ng-checked="(sortColumnKey == constants.KEY__DIFFERENCES__PER
CEPTUAL_DIFF)" |
269 ng-click="sortResultsBy(constants.KEY__DIFFERENCE_DATA, const
ants.KEY__DIFFERENCE_DATA__PERCEPTUAL_DIFF)"> | 269 ng-click="sortResultsBy(constants.KEY__IMAGEPAIRS__DIFFERENCE
S, constants.KEY__DIFFERENCES__PERCEPTUAL_DIFF)"> |
270 perceptual difference | 270 perceptual difference |
271 <br> | 271 <br> |
272 <input type="range" ng-model="pixelDiffBgColorBrightness" | 272 <input type="range" ng-model="pixelDiffBgColorBrightness" |
273 ng-init="pixelDiffBgColorBrightness=64; pixelDiffBgColor=brig
htnessStringToHexColor(pixelDiffBgColorBrightness)" | 273 ng-init="pixelDiffBgColorBrightness=64; pixelDiffBgColor=brig
htnessStringToHexColor(pixelDiffBgColorBrightness)" |
274 ng-change="pixelDiffBgColor=brightnessStringToHexColor(pixelD
iffBgColorBrightness)" | 274 ng-change="pixelDiffBgColor=brightnessStringToHexColor(pixelD
iffBgColorBrightness)" |
275 title="image background brightness" | 275 title="image background brightness" |
276 min="0" max="255"/> | 276 min="0" max="255"/> |
277 </th> | 277 </th> |
278 <th> | 278 <th> |
279 <!-- imagepair-selection checkbox column --> | 279 <!-- imagepair-selection checkbox column --> |
280 </th> | 280 </th> |
281 </tr> | 281 </tr> |
282 | 282 |
283 <tr ng-repeat="imagePair in limitedImagePairs" results-updated-callback-
directive> | 283 <tr ng-repeat="imagePair in limitedImagePairs" results-updated-callback-
directive> |
284 <td> | 284 <td> |
285 {{imagePair[constants.KEY__EXTRA_COLUMN_VALUES][constants.KEY__EXTRA
COLUMN__RESULT_TYPE]}} | 285 {{imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUMNS][constants.KEY__
EXTRACOLUMNS__RESULT_TYPE]}} |
286 <br> | 286 <br> |
287 <button class="show-only-button" | 287 <button class="show-only-button" |
288 ng-show="viewingTab == defaultTab" | 288 ng-show="viewingTab == defaultTab" |
289 ng-click="showOnlyResultType(imagePair[constants.KEY__EXTRA_
COLUMN_VALUES][constants.KEY__EXTRACOLUMN__RESULT_TYPE])" | 289 ng-click="showOnlyResultType(imagePair[constants.KEY__IMAGEP
AIRS__EXTRACOLUMNS][constants.KEY__EXTRACOLUMNS__RESULT_TYPE])" |
290 title="show only results of type {{imagePair[constants.KEY__
EXTRA_COLUMN_VALUES][constants.KEY__EXTRACOLUMN__RESULT_TYPE]}}"> | 290 title="show only results of type {{imagePair[constants.KEY__
IMAGEPAIRS__EXTRACOLUMNS][constants.KEY__EXTRACOLUMNS__RESULT_TYPE]}}"> |
291 show only | 291 show only |
292 </button> | 292 </button> |
293 <br> | 293 <br> |
294 <button class="show-all-button" | 294 <button class="show-all-button" |
295 ng-show="viewingTab == defaultTab" | 295 ng-show="viewingTab == defaultTab" |
296 ng-disabled="0 == setSize(hiddenResultTypes)" | 296 ng-disabled="0 == setSize(hiddenResultTypes)" |
297 ng-click="showAllResultTypes()" | 297 ng-click="showAllResultTypes()" |
298 title="show results of all types"> | 298 title="show results of all types"> |
299 show all | 299 show all |
300 </button> | 300 </button> |
301 </td> | 301 </td> |
302 <td ng-repeat="categoryName in [constants.KEY__EXTRACOLUMN__BUILDER, c
onstants.KEY__EXTRACOLUMN__TEST]"> | 302 <td ng-repeat="categoryName in [constants.KEY__EXTRACOLUMNS__BUILDER,
constants.KEY__EXTRACOLUMNS__TEST]"> |
303 {{imagePair[constants.KEY__EXTRA_COLUMN_VALUES][categoryName]}} | 303 {{imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUMNS][categoryName]}} |
304 <br> | 304 <br> |
305 <button class="show-only-button" | 305 <button class="show-only-button" |
306 ng-show="viewingTab == defaultTab" | 306 ng-show="viewingTab == defaultTab" |
307 ng-disabled="imagePair[constants.KEY__EXTRA_COLUMN_VALUES][c
ategoryName] == categoryValueMatch[categoryName]" | 307 ng-disabled="imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUM
NS][categoryName] == categoryValueMatch[categoryName]" |
308 ng-click="setCategoryValueMatch(categoryName, imagePair[cons
tants.KEY__EXTRA_COLUMN_VALUES][categoryName])" | 308 ng-click="setCategoryValueMatch(categoryName, imagePair[cons
tants.KEY__IMAGEPAIRS__EXTRACOLUMNS][categoryName])" |
309 title="show only results of {{categoryName}} {{imagePair[con
stants.KEY__EXTRA_COLUMN_VALUES][categoryName]}}"> | 309 title="show only results of {{categoryName}} {{imagePair[con
stants.KEY__IMAGEPAIRS__EXTRACOLUMNS][categoryName]}}"> |
310 show only | 310 show only |
311 </button> | 311 </button> |
312 <br> | 312 <br> |
313 <button class="show-all-button" | 313 <button class="show-all-button" |
314 ng-show="viewingTab == defaultTab" | 314 ng-show="viewingTab == defaultTab" |
315 ng-disabled="'' == categoryValueMatch[categoryName]" | 315 ng-disabled="'' == categoryValueMatch[categoryName]" |
316 ng-click="setCategoryValueMatch(categoryName, '')" | 316 ng-click="setCategoryValueMatch(categoryName, '')" |
317 title="show results of all {{categoryName}}s"> | 317 title="show results of all {{categoryName}}s"> |
318 show all | 318 show all |
319 </button> | 319 </button> |
320 </td> | 320 </td> |
321 <td> | 321 <td> |
322 {{imagePair[constants.KEY__EXTRA_COLUMN_VALUES][constants.KEY__EXTRA
COLUMN__CONFIG]}} | 322 {{imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUMNS][constants.KEY__
EXTRACOLUMNS__CONFIG]}} |
323 <br> | 323 <br> |
324 <button class="show-only-button" | 324 <button class="show-only-button" |
325 ng-show="viewingTab == defaultTab" | 325 ng-show="viewingTab == defaultTab" |
326 ng-click="showOnlyConfig(imagePair[constants.KEY__EXTRA_COLU
MN_VALUES][constants.KEY__EXTRACOLUMN__CONFIG])" | 326 ng-click="showOnlyConfig(imagePair[constants.KEY__IMAGEPAIRS
__EXTRACOLUMNS][constants.KEY__EXTRACOLUMNS__CONFIG])" |
327 title="show only results of config {{imagePair[constants.KEY
__EXTRA_COLUMN_VALUES][constants.KEY__EXTRACOLUMN__CONFIG]}}"> | 327 title="show only results of config {{imagePair[constants.KEY
__IMAGEPAIRS__EXTRACOLUMNS][constants.KEY__EXTRACOLUMNS__CONFIG]}}"> |
328 show only | 328 show only |
329 </button> | 329 </button> |
330 <br> | 330 <br> |
331 <button class="show-all-button" | 331 <button class="show-all-button" |
332 ng-show="viewingTab == defaultTab" | 332 ng-show="viewingTab == defaultTab" |
333 ng-disabled="0 == setSize(hiddenConfigs)" | 333 ng-disabled="0 == setSize(hiddenConfigs)" |
334 ng-click="showAllConfigs()" | 334 ng-click="showAllConfigs()" |
335 title="show results of all configs"> | 335 title="show results of all configs"> |
336 show all | 336 show all |
337 </button> | 337 </button> |
338 </td> | 338 </td> |
339 <td> | 339 <td> |
340 <a ng-repeat="bug in imagePair[constants.KEY__EXPECTATIONS_DATA][con
stants.KEY__EXPECTATIONS__BUGS]" | 340 <a ng-repeat="bug in imagePair[constants.KEY__IMAGEPAIRS__EXPECTATIO
NS][constants.KEY__EXPECTATIONS__BUGS]" |
341 href="https://code.google.com/p/skia/issues/detail?id={{bug}}" | 341 href="https://code.google.com/p/skia/issues/detail?id={{bug}}" |
342 target="_blank"> | 342 target="_blank"> |
343 {{bug}} | 343 {{bug}} |
344 </a> | 344 </a> |
345 </td> | 345 </td> |
346 | 346 |
347 <!-- image A --> | 347 <!-- image A --> |
348 <td valign="bottom" width="{{imageSize}}"> | 348 <td valign="bottom" width="{{imageSize}}"> |
349 <div ng-if="imagePair[constants.KEY__IMAGE_A_URL] != null"> | 349 <div ng-if="imagePair[constants.KEY__IMAGEPAIRS__IMAGE_A_URL] != nul
l"> |
350 <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/> | 350 <a href="{{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_A][const
ants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{imagePair[constants.KEY__IMAGEPAIRS__I
MAGE_A_URL]}}" target="_blank">View Image</a><br/> |
351 <img ng-if="showThumbnails" | 351 <img ng-if="showThumbnails" |
352 width="{{imageSize}}" | 352 width="{{imageSize}}" |
353 ng-src="{{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_A][c
onstants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{imagePair[constants.KEY__IMAGE_A_U
RL]}}" /> | 353 ng-src="{{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_A][c
onstants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{imagePair[constants.KEY__IMAGEPAIR
S__IMAGE_A_URL]}}" /> |
354 </div> | 354 </div> |
355 <div ng-show="imagePair[constants.KEY__IMAGE_A_URL] == null" | 355 <div ng-show="imagePair[constants.KEY__IMAGEPAIRS__IMAGE_A_URL] == n
ull" |
356 style="text-align:center"> | 356 style="text-align:center"> |
357 –none– | 357 –none– |
358 </div> | 358 </div> |
359 </td> | 359 </td> |
360 | 360 |
361 <!-- image B --> | 361 <!-- image B --> |
362 <td valign="bottom" width="{{imageSize}}"> | 362 <td valign="bottom" width="{{imageSize}}"> |
363 <div ng-if="imagePair[constants.KEY__IMAGE_B_URL] != null"> | 363 <div ng-if="imagePair[constants.KEY__IMAGEPAIRS__IMAGE_B_URL] != nul
l"> |
364 <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/> | 364 <a href="{{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_B][const
ants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{imagePair[constants.KEY__IMAGEPAIRS__I
MAGE_B_URL]}}" target="_blank">View Image</a><br/> |
365 <img ng-if="showThumbnails" | 365 <img ng-if="showThumbnails" |
366 width="{{imageSize}}" | 366 width="{{imageSize}}" |
367 ng-src="{{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_B][c
onstants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{imagePair[constants.KEY__IMAGE_B_U
RL]}}" /> | 367 ng-src="{{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_B][c
onstants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{imagePair[constants.KEY__IMAGEPAIR
S__IMAGE_B_URL]}}" /> |
368 </div> | 368 </div> |
369 <div ng-show="imagePair[constants.KEY__IMAGE_B_URL] == null" | 369 <div ng-show="imagePair[constants.KEY__IMAGEPAIRS__IMAGE_B_URL] == n
ull" |
370 style="text-align:center"> | 370 style="text-align:center"> |
371 –none– | 371 –none– |
372 </div> | 372 </div> |
373 </td> | 373 </td> |
374 | 374 |
375 <!-- whitediffs: every differing pixel shown in white --> | 375 <!-- whitediffs: every differing pixel shown in white --> |
376 <td valign="bottom" width="{{imageSize}}"> | 376 <td valign="bottom" width="{{imageSize}}"> |
377 <div ng-if="imagePair[constants.KEY__IS_DIFFERENT]" | 377 <div ng-if="imagePair[constants.KEY__IMAGEPAIRS__IS_DIFFERENT]" |
378 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."> | 378 title="{{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][cons
tants.KEY__DIFFERENCES__NUM_DIFF_PIXELS] | number:0}} of {{(100 * imagePair[cons
tants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__NUM_DIFF_PIXELS]
/ imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES_
_PERCENT_DIFF_PIXELS]) | number:0}} pixels ({{imagePair[constants.KEY__IMAGEPAIR
S__DIFFERENCES][constants.KEY__DIFFERENCES__PERCENT_DIFF_PIXELS].toFixed(4)}}%)
differ from expectation."> |
379 | 379 |
380 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE
NCE_DATA__PERCENT_DIFF_PIXELS].toFixed(4)}}% | 380 {{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY_
_DIFFERENCES__PERCENT_DIFF_PIXELS].toFixed(4)}}% |
381 ({{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFER
ENCE_DATA__NUM_DIFF_PIXELS]}}) | 381 ({{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY
__DIFFERENCES__NUM_DIFF_PIXELS]}}) |
382 <br/> | 382 <br/> |
383 <a href="{{imageSets[constants.KEY__IMAGESETS__SET__WHITEDIFFS][co
nstants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePair)}
}" target="_blank">View Image</a><br/> | 383 <a href="{{imageSets[constants.KEY__IMAGESETS__SET__WHITEDIFFS][co
nstants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePair)}
}" target="_blank">View Image</a><br/> |
384 <img ng-if="showThumbnails" | 384 <img ng-if="showThumbnails" |
385 width="{{imageSize}}" | 385 width="{{imageSize}}" |
386 ng-src="{{imageSets[constants.KEY__IMAGESETS__SET__WHITEDIFFS
][constants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePa
ir)}}" /> | 386 ng-src="{{imageSets[constants.KEY__IMAGESETS__SET__WHITEDIFFS
][constants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePa
ir)}}" /> |
387 </div> | 387 </div> |
388 <div ng-show="!imagePair[constants.KEY__IS_DIFFERENT]" | 388 <div ng-show="!imagePair[constants.KEY__IMAGEPAIRS__IS_DIFFERENT]" |
389 style="text-align:center"> | 389 style="text-align:center"> |
390 –none– | 390 –none– |
391 </div> | 391 </div> |
392 </td> | 392 </td> |
393 | 393 |
394 <!-- diffs: per-channel RGB deltas --> | 394 <!-- diffs: per-channel RGB deltas --> |
395 <td valign="bottom" width="{{imageSize}}"> | 395 <td valign="bottom" width="{{imageSize}}"> |
396 <div ng-if="imagePair[constants.KEY__IS_DIFFERENT]" | 396 <div ng-if="imagePair[constants.KEY__IMAGEPAIRS__IS_DIFFERENT]" |
397 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]}}"> | 397 title="Perceptual difference measure is {{imagePair[constants.K
EY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__PERCEPTUAL_DIFF].toFixe
d(4)}}%. Maximum difference per channel: R={{imagePair[constants.KEY__IMAGEPAIR
S__DIFFERENCES][constants.KEY__DIFFERENCES__MAX_DIFF_PER_CHANNEL][0]}}, G={{imag
ePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__MAX_DI
FF_PER_CHANNEL][1]}}, B={{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][cons
tants.KEY__DIFFERENCES__MAX_DIFF_PER_CHANNEL][2]}}"> |
398 | 398 |
399 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE
NCE_DATA__PERCEPTUAL_DIFF].toFixed(4)}}% | 399 {{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY_
_DIFFERENCES__PERCEPTUAL_DIFF].toFixed(4)}}% |
400 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE
NCE_DATA__MAX_DIFF_PER_CHANNEL]}} | 400 {{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY_
_DIFFERENCES__MAX_DIFF_PER_CHANNEL]}} |
401 <br/> | 401 <br/> |
402 <a href="{{imageSets[constants.KEY__IMAGESETS__SET__DIFFS][constan
ts.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePair)}}" ta
rget="_blank">View Image</a><br/> | 402 <a href="{{imageSets[constants.KEY__IMAGESETS__SET__DIFFS][constan
ts.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePair)}}" ta
rget="_blank">View Image</a><br/> |
403 <img ng-if="showThumbnails" | 403 <img ng-if="showThumbnails" |
404 ng-style="{backgroundColor: pixelDiffBgColor}" | 404 ng-style="{backgroundColor: pixelDiffBgColor}" |
405 width="{{imageSize}}" | 405 width="{{imageSize}}" |
406 ng-src="{{imageSets[constants.KEY__IMAGESETS__SET__DIFFS][con
stants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePair)}}
" /> | 406 ng-src="{{imageSets[constants.KEY__IMAGESETS__SET__DIFFS][con
stants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePair)}}
" /> |
407 </div> | 407 </div> |
408 <div ng-show="!imagePair[constants.KEY__IS_DIFFERENT]" | 408 <div ng-show="!imagePair[constants.KEY__IMAGEPAIRS__IS_DIFFERENT]" |
409 style="text-align:center"> | 409 style="text-align:center"> |
410 –none– | 410 –none– |
411 </div> | 411 </div> |
412 </td> | 412 </td> |
413 | 413 |
414 <td> | 414 <td> |
415 <input type="checkbox" | 415 <input type="checkbox" |
416 name="rowSelect" | 416 name="rowSelect" |
417 value="{{imagePair.index}}" | 417 value="{{imagePair.index}}" |
418 ng-checked="isValueInArray(imagePair.index, selectedImagePair
s)" | 418 ng-checked="isValueInArray(imagePair.index, selectedImagePair
s)" |
419 ng-click="toggleValueInArray(imagePair.index, selectedImagePa
irs)"> | 419 ng-click="toggleValueInArray(imagePair.index, selectedImagePa
irs)"> |
420 </tr> | 420 </tr> |
421 </table> <!-- imagePairs --> | 421 </table> <!-- imagePairs --> |
422 </td></tr></table> <!-- table holding results header + imagePairs table --> | 422 </td></tr></table> <!-- table holding results header + imagePairs table --> |
423 | 423 |
424 </div><!-- main display area of selected tab --> | 424 </div><!-- main display area of selected tab --> |
425 </div><!-- everything: hide until data is loaded --> | 425 </div><!-- everything: hide until data is loaded --> |
426 | 426 |
427 </body> | 427 </body> |
428 </html> | 428 </html> |
OLD | NEW |