Chromium Code Reviews| 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="diff_viewer.js"></script> | 9 <script src="diff_viewer.js"></script> |
| 10 <script src="loader.js"></script> | 10 <script src="loader.js"></script> |
| 11 <link rel="stylesheet" href="view.css"> | 11 <link rel="stylesheet" href="view.css"> |
| 12 </head> | 12 </head> |
| 13 | 13 |
| 14 <body> | 14 <body> |
| 15 <h2> | 15 <h2> |
| 16 Instructions, roadmap, etc. are at | 16 Instructions, roadmap, etc. are at |
| 17 <a href="http://tinyurl.com/SkiaRebaselineServer"> | 17 <a href="http://tinyurl.com/SkiaRebaselineServer"> |
| 18 http://tinyurl.com/SkiaRebaselineServer | 18 http://tinyurl.com/SkiaRebaselineServer |
| 19 </a> | 19 </a> |
| 20 </h2> | 20 </h2> |
| 21 | 21 |
| 22 <em> | 22 <em> |
| 23 {{loadingMessage}} | 23 {{loadingMessage}} |
| 24 </em> | 24 </em> |
| 25 | 25 |
| 26 <div ng-hide="!extraColumnHeaders"><!-- everything: hide until data is loaded --> | 26 <div ng-show="extraColumnHeaders"><!-- everything: hide until data is loaded - -> |
|
epoger
2014/03/05 18:25:28
Where we are guarding against img src loading, I h
borenet
2014/03/05 19:03:56
Just curious - what problems did use of ng-if inst
| |
| 27 | 27 |
| 28 <div class="warning-div" | 28 <div class="warning-div" |
| 29 ng-hide="!(header[constants.KEY__HEADER__IS_EDITABLE] && header[constan ts.KEY__HEADER__IS_EXPORTED])"> | 29 ng-show="header[constants.KEY__HEADER__IS_EDITABLE] && header[constants .KEY__HEADER__IS_EXPORTED]"> |
| 30 WARNING! These results are editable and exported, so any user | 30 WARNING! These results are editable and exported, so any user |
| 31 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. |
| 32 </div> | 32 </div> |
| 33 | 33 |
| 34 <div ng-hide="!(header[constants.KEY__HEADER__TIME_UPDATED])"> | 34 <div ng-show="header[constants.KEY__HEADER__TIME_UPDATED]"> |
| 35 Results current as of {{localTimeString(header[constants.KEY__HEADER__TIME _UPDATED])}} | 35 Results current as of {{localTimeString(header[constants.KEY__HEADER__TIME _UPDATED])}} |
| 36 </div> | 36 </div> |
| 37 | 37 |
| 38 <div><!-- tabs --> | 38 <div><!-- tabs --> |
| 39 <div class="tab-spacer" ng-repeat="tab in tabs"> | 39 <div class="tab-spacer" ng-repeat="tab in tabs"> |
| 40 <div class="tab-{{tab == viewingTab}}" | 40 <div class="tab-{{tab == viewingTab}}" |
| 41 ng-click="setViewingTab(tab)"> | 41 ng-click="setViewingTab(tab)"> |
| 42 {{tab}} ({{numResultsPerTab[tab]}}) | 42 {{tab}} ({{numResultsPerTab[tab]}}) |
| 43 </div> | 43 </div> |
| 44 <div class="tab-spacer"> | 44 <div class="tab-spacer"> |
| 45 | 45 |
| 46 </div> | 46 </div> |
| 47 </div> | 47 </div> |
| 48 </div><!-- tabs --> | 48 </div><!-- tabs --> |
| 49 | 49 |
| 50 <div class="tab-main"><!-- main display area of selected tab --> | 50 <div class="tab-main"><!-- main display area of selected tab --> |
| 51 | 51 |
| 52 <br> | 52 <br> |
| 53 <!-- We only show the filters/settings table on the Unfiled tab. --> | 53 <!-- We only show the filters/settings table on the Unfiled tab. --> |
| 54 <table ng-hide="viewingTab != defaultTab" border="1"> | 54 <table ng-show="viewingTab == defaultTab" border="1"> |
| 55 <tr> | 55 <tr> |
| 56 <th colspan="4"> | 56 <th colspan="4"> |
| 57 Filters | 57 Filters |
| 58 </th> | 58 </th> |
| 59 <th> | 59 <th> |
| 60 Settings | 60 Settings |
| 61 </th> | 61 </th> |
| 62 </tr> | 62 </tr> |
| 63 <tr valign="top"> | 63 <tr valign="top"> |
| 64 <td> | 64 <td> |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 108 </button> | 108 </button> |
| 109 <button ng-click="hiddenConfigs = {}; toggleValuesInSet(allConfigs, hidd enConfigs); updateResults()"> | 109 <button ng-click="hiddenConfigs = {}; toggleValuesInSet(allConfigs, hidd enConfigs); updateResults()"> |
| 110 none | 110 none |
| 111 </button> | 111 </button> |
| 112 <button ng-click="toggleValuesInSet(allConfigs, hiddenConfigs); updateRe sults()"> | 112 <button ng-click="toggleValuesInSet(allConfigs, hiddenConfigs); updateRe sults()"> |
| 113 toggle | 113 toggle |
| 114 </button> | 114 </button> |
| 115 </td> | 115 </td> |
| 116 <td><table> | 116 <td><table> |
| 117 <tr><td> | 117 <tr><td> |
| 118 <input type="checkbox" ng-model="showThumbnailsPending" | |
| 119 ng-init="showThumbnailsPending = true" | |
| 120 ng-change="areUpdatesPending = true"/> | |
| 121 Show thumbnails | |
| 122 </td></tr> | |
| 123 <tr><td> | |
| 118 Image width | 124 Image width |
| 119 <input type="text" ng-model="imageSizePending" | 125 <input type="text" ng-model="imageSizePending" |
| 120 ng-init="imageSizePending=100" | 126 ng-init="imageSizePending=100" |
| 121 ng-change="areUpdatesPending = true" | 127 ng-change="areUpdatesPending = true" |
| 122 maxlength="4"/> | 128 maxlength="4"/> |
| 123 </td></tr> | 129 </td></tr> |
| 124 <tr><td> | 130 <tr><td> |
| 125 Max records to display | 131 Max records to display |
| 126 <input type="text" ng-model="displayLimitPending" | 132 <input type="text" ng-model="displayLimitPending" |
| 127 ng-init="displayLimitPending=50" | 133 ng-init="displayLimitPending=50" |
| 128 ng-change="areUpdatesPending = true" | 134 ng-change="areUpdatesPending = true" |
| 129 maxlength="4"/> | 135 maxlength="4"/> |
| 130 </td></tr> | 136 </td></tr> |
| 131 <tr><td> | 137 <tr><td> |
| 132 <button class="update-results-button" | 138 <button class="update-results-button" |
| 133 ng-click="updateResults()" | 139 ng-click="updateResults()" |
| 134 ng-disabled="!areUpdatesPending"> | 140 ng-disabled="!areUpdatesPending"> |
| 135 Update Results | 141 Update Results |
| 136 </button> | 142 </button> |
| 137 </td></tr> | 143 </td></tr> |
| 138 </tr></table></td> | 144 </tr></table></td> |
| 139 </tr> | 145 </tr> |
| 140 </table> | 146 </table> |
| 141 | 147 |
| 142 <p> | 148 <p> |
| 143 | 149 |
| 144 <!-- Submission UI that we only show in the Pending Approval tab. --> | 150 <!-- Submission UI that we only show in the Pending Approval tab. --> |
| 145 <div ng-hide="'Pending Approval' != viewingTab"> | 151 <div ng-show="'Pending Approval' == viewingTab"> |
| 146 <div style="display:inline-block"> | 152 <div style="display:inline-block"> |
| 147 <button style="font-size:20px" | 153 <button style="font-size:20px" |
| 148 ng-click="submitApprovals(filteredImagePairs)" | 154 ng-click="submitApprovals(filteredImagePairs)" |
| 149 ng-disabled="submitPending || (filteredImagePairs.length == 0) "> | 155 ng-disabled="submitPending || (filteredImagePairs.length == 0) "> |
| 150 Update these {{filteredImagePairs.length}} expectations on the serve r | 156 Update these {{filteredImagePairs.length}} expectations on the serve r |
| 151 </button> | 157 </button> |
| 152 </div> | 158 </div> |
| 153 <div style="display:inline-block"> | 159 <div style="display:inline-block"> |
| 154 <div style="font-size:20px" | 160 <div style="font-size:20px" |
| 155 ng-hide="!submitPending"> | 161 ng-show="submitPending"> |
| 156 Submitting, please wait... | 162 Submitting, please wait... |
| 157 </div> | 163 </div> |
| 158 </div> | 164 </div> |
| 159 <div> | 165 <div> |
| 160 Advanced settings... | 166 Advanced settings... |
| 161 <input type="checkbox" ng-model="showSubmitAdvancedSettings"> | 167 <input type="checkbox" ng-model="showSubmitAdvancedSettings"> |
| 162 show | 168 show |
| 163 <ul ng-hide="!showSubmitAdvancedSettings"> | 169 <ul ng-show="showSubmitAdvancedSettings"> |
| 164 <li ng-repeat="setting in [constants.KEY__EXPECTATIONS__REVIEWED, co nstants.KEY__EXPECTATIONS__IGNOREFAILURE]"> | 170 <li ng-repeat="setting in [constants.KEY__EXPECTATIONS__REVIEWED, co nstants.KEY__EXPECTATIONS__IGNOREFAILURE]"> |
| 165 {{setting}} | 171 {{setting}} |
| 166 <input type="checkbox" ng-model="submitAdvancedSettings[setting]"> | 172 <input type="checkbox" ng-model="submitAdvancedSettings[setting]"> |
| 167 </li> | 173 </li> |
| 168 <li ng-repeat="setting in ['bug']"> | 174 <li ng-repeat="setting in ['bug']"> |
| 169 {{setting}} | 175 {{setting}} |
| 170 <input type="text" ng-model="submitAdvancedSettings[setting]"> | 176 <input type="text" ng-model="submitAdvancedSettings[setting]"> |
| 171 </li> | 177 </li> |
| 172 </ul> | 178 </ul> |
| 173 </div> | 179 </div> |
| 174 </div> | 180 </div> |
| 175 | 181 |
| 176 <p> | 182 <p> |
| 177 | 183 |
| 178 <table border="0"><tr><td> <!-- table holding results header + results table --> | 184 <table border="0"><tr><td> <!-- table holding results header + results table --> |
| 179 <table border="0" width="100%"> <!-- results header --> | 185 <table border="0" width="100%"> <!-- results header --> |
| 180 <tr> | 186 <tr> |
| 181 <td> | 187 <td> |
| 182 Found {{filteredImagePairs.length}} matches; | 188 Found {{filteredImagePairs.length}} matches; |
| 183 <span ng-hide="filteredImagePairs.length <= limitedImagePairs.length "> | 189 <span ng-show="filteredImagePairs.length > limitedImagePairs.length" > |
| 184 displaying the first {{limitedImagePairs.length}} | 190 displaying the first {{limitedImagePairs.length}} |
| 185 </span> | 191 </span> |
| 186 <span ng-hide="filteredImagePairs.length > limitedImagePairs.length" > | 192 <span ng-show="filteredImagePairs.length <= limitedImagePairs.length "> |
| 187 displaying them all | 193 displaying them all |
| 188 </span> | 194 </span> |
| 189 <br> | 195 <br> |
| 190 (click on the column header radio buttons to re-sort by that column) | 196 (click on the column header radio buttons to re-sort by that column) |
| 191 </td> | 197 </td> |
| 192 <td align="right"> | 198 <td align="right"> |
| 193 <div> | 199 <div> |
| 194 all tests shown: | 200 all tests shown: |
| 195 <button ng-click="selectAllImagePairs()"> | 201 <button ng-click="selectAllImagePairs()"> |
| 196 select | 202 select |
| 197 </button> | 203 </button> |
| 198 <button ng-click="clearAllImagePairs()"> | 204 <button ng-click="clearAllImagePairs()"> |
| 199 clear | 205 clear |
| 200 </button> | 206 </button> |
| 201 <button ng-click="toggleAllImagePairs()"> | 207 <button ng-click="toggleAllImagePairs()"> |
| 202 toggle | 208 toggle |
| 203 </button> | 209 </button> |
| 204 </div> | 210 </div> |
| 205 <div ng-repeat="otherTab in tabs"> | 211 <div ng-repeat="otherTab in tabs"> |
| 206 <button ng-click="moveSelectedImagePairsToTab(otherTab)" | 212 <button ng-click="moveSelectedImagePairsToTab(otherTab)" |
| 207 ng-disabled="selectedImagePairs.length == 0" | 213 ng-disabled="selectedImagePairs.length == 0" |
| 208 ng-hide="otherTab == viewingTab"> | 214 ng-show="otherTab != viewingTab"> |
| 209 move {{selectedImagePairs.length}} selected tests to {{otherTab} } tab | 215 move {{selectedImagePairs.length}} selected tests to {{otherTab} } tab |
| 210 </button> | 216 </button> |
| 211 </div> | 217 </div> |
| 212 </td> | 218 </td> |
| 213 </tr> | 219 </tr> |
| 214 </table> <!-- results header --> | 220 </table> <!-- results header --> |
| 215 </td></tr><tr><td> | 221 </td></tr><tr><td> |
| 216 <table border="1" ng-app="diff_viewer"> <!-- results --> | 222 <table border="1" ng-app="diff_viewer"> <!-- results --> |
| 217 <tr> | 223 <tr> |
| 218 <!-- Most column headers are displayed in a common fashion... --> | 224 <!-- Most column headers are displayed in a common fashion... --> |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 264 <th> | 270 <th> |
| 265 <!-- imagepair-selection checkbox column --> | 271 <!-- imagepair-selection checkbox column --> |
| 266 </th> | 272 </th> |
| 267 </tr> | 273 </tr> |
| 268 | 274 |
| 269 <tr ng-repeat="imagePair in limitedImagePairs" ng-controller="ImageContr oller"> | 275 <tr ng-repeat="imagePair in limitedImagePairs" ng-controller="ImageContr oller"> |
| 270 <td> | 276 <td> |
| 271 {{imagePair[constants.KEY__EXTRA_COLUMN_VALUES][constants.KEY__EXTRA COLUMN__RESULT_TYPE]}} | 277 {{imagePair[constants.KEY__EXTRA_COLUMN_VALUES][constants.KEY__EXTRA COLUMN__RESULT_TYPE]}} |
| 272 <br> | 278 <br> |
| 273 <button class="show-only-button" | 279 <button class="show-only-button" |
| 274 ng-hide="viewingTab != defaultTab" | 280 ng-show="viewingTab == defaultTab" |
| 275 ng-click="showOnlyResultType(imagePair[constants.KEY__EXTRA_ COLUMN_VALUES][constants.KEY__EXTRACOLUMN__RESULT_TYPE])" | 281 ng-click="showOnlyResultType(imagePair[constants.KEY__EXTRA_ COLUMN_VALUES][constants.KEY__EXTRACOLUMN__RESULT_TYPE])" |
| 276 title="show only results of type {{imagePair[constants.KEY__ EXTRA_COLUMN_VALUES][constants.KEY__EXTRACOLUMN__RESULT_TYPE]}}"> | 282 title="show only results of type {{imagePair[constants.KEY__ EXTRA_COLUMN_VALUES][constants.KEY__EXTRACOLUMN__RESULT_TYPE]}}"> |
| 277 show only | 283 show only |
| 278 </button> | 284 </button> |
| 279 <br> | 285 <br> |
| 280 <button class="show-all-button" | 286 <button class="show-all-button" |
| 281 ng-hide="viewingTab != defaultTab" | 287 ng-show="viewingTab == defaultTab" |
| 282 ng-disabled="0 == setSize(hiddenResultTypes)" | 288 ng-disabled="0 == setSize(hiddenResultTypes)" |
| 283 ng-click="showAllResultTypes()" | 289 ng-click="showAllResultTypes()" |
| 284 title="show results of all types"> | 290 title="show results of all types"> |
| 285 show all | 291 show all |
| 286 </button> | 292 </button> |
| 287 </td> | 293 </td> |
| 288 <td ng-repeat="categoryName in [constants.KEY__EXTRACOLUMN__BUILDER, c onstants.KEY__EXTRACOLUMN__TEST]"> | 294 <td ng-repeat="categoryName in [constants.KEY__EXTRACOLUMN__BUILDER, c onstants.KEY__EXTRACOLUMN__TEST]"> |
| 289 {{imagePair[constants.KEY__EXTRA_COLUMN_VALUES][categoryName]}} | 295 {{imagePair[constants.KEY__EXTRA_COLUMN_VALUES][categoryName]}} |
| 290 <br> | 296 <br> |
| 291 <button class="show-only-button" | 297 <button class="show-only-button" |
| 292 ng-hide="viewingTab != defaultTab" | 298 ng-show="viewingTab == defaultTab" |
| 293 ng-disabled="imagePair[constants.KEY__EXTRA_COLUMN_VALUES][c ategoryName] == categoryValueMatch[categoryName]" | 299 ng-disabled="imagePair[constants.KEY__EXTRA_COLUMN_VALUES][c ategoryName] == categoryValueMatch[categoryName]" |
| 294 ng-click="setCategoryValueMatch(categoryName, imagePair[cons tants.KEY__EXTRA_COLUMN_VALUES][categoryName])" | 300 ng-click="setCategoryValueMatch(categoryName, imagePair[cons tants.KEY__EXTRA_COLUMN_VALUES][categoryName])" |
| 295 title="show only results of {{categoryName}} {{imagePair[con stants.KEY__EXTRA_COLUMN_VALUES][categoryName]}}"> | 301 title="show only results of {{categoryName}} {{imagePair[con stants.KEY__EXTRA_COLUMN_VALUES][categoryName]}}"> |
| 296 show only | 302 show only |
| 297 </button> | 303 </button> |
| 298 <br> | 304 <br> |
| 299 <button class="show-all-button" | 305 <button class="show-all-button" |
| 300 ng-hide="viewingTab != defaultTab" | 306 ng-show="viewingTab == defaultTab" |
| 301 ng-disabled="'' == categoryValueMatch[categoryName]" | 307 ng-disabled="'' == categoryValueMatch[categoryName]" |
| 302 ng-click="setCategoryValueMatch(categoryName, '')" | 308 ng-click="setCategoryValueMatch(categoryName, '')" |
| 303 title="show results of all {{categoryName}}s"> | 309 title="show results of all {{categoryName}}s"> |
| 304 show all | 310 show all |
| 305 </button> | 311 </button> |
| 306 </td> | 312 </td> |
| 307 <td> | 313 <td> |
| 308 {{imagePair[constants.KEY__EXTRA_COLUMN_VALUES][constants.KEY__EXTRA COLUMN__CONFIG]}} | 314 {{imagePair[constants.KEY__EXTRA_COLUMN_VALUES][constants.KEY__EXTRA COLUMN__CONFIG]}} |
| 309 <br> | 315 <br> |
| 310 <button class="show-only-button" | 316 <button class="show-only-button" |
| 311 ng-hide="viewingTab != defaultTab" | 317 ng-show="viewingTab == defaultTab" |
| 312 ng-click="showOnlyConfig(imagePair[constants.KEY__EXTRA_COLU MN_VALUES][constants.KEY__EXTRACOLUMN__CONFIG])" | 318 ng-click="showOnlyConfig(imagePair[constants.KEY__EXTRA_COLU MN_VALUES][constants.KEY__EXTRACOLUMN__CONFIG])" |
| 313 title="show only results of config {{imagePair[constants.KEY __EXTRA_COLUMN_VALUES][constants.KEY__EXTRACOLUMN__CONFIG]}}"> | 319 title="show only results of config {{imagePair[constants.KEY __EXTRA_COLUMN_VALUES][constants.KEY__EXTRACOLUMN__CONFIG]}}"> |
| 314 show only | 320 show only |
| 315 </button> | 321 </button> |
| 316 <br> | 322 <br> |
| 317 <button class="show-all-button" | 323 <button class="show-all-button" |
| 318 ng-hide="viewingTab != defaultTab" | 324 ng-show="viewingTab == defaultTab" |
| 319 ng-disabled="0 == setSize(hiddenConfigs)" | 325 ng-disabled="0 == setSize(hiddenConfigs)" |
| 320 ng-click="showAllConfigs()" | 326 ng-click="showAllConfigs()" |
| 321 title="show results of all configs"> | 327 title="show results of all configs"> |
| 322 show all | 328 show all |
| 323 </button> | 329 </button> |
| 324 </td> | 330 </td> |
| 325 <td> | 331 <td> |
| 326 <a ng-repeat="bug in imagePair[constants.KEY__EXPECTATIONS_DATA][con stants.KEY__EXPECTATIONS__BUGS]" | 332 <a ng-repeat="bug in imagePair[constants.KEY__EXPECTATIONS_DATA][con stants.KEY__EXPECTATIONS__BUGS]" |
| 327 href="https://code.google.com/p/skia/issues/detail?id={{bug}}" | 333 href="https://code.google.com/p/skia/issues/detail?id={{bug}}" |
| 328 target="_blank"> | 334 target="_blank"> |
| 329 {{bug}} | 335 {{bug}} |
| 330 </a> | 336 </a> |
| 331 </td> | 337 </td> |
| 332 | 338 |
| 333 <!-- image A --> | 339 <!-- image A --> |
| 334 <td valign="bottom" width="{{imageSize}}"> | 340 <td valign="bottom" width="{{imageSize}}"> |
| 335 <a href="{{imageSets[0][constants.KEY__IMAGESETS__BASE_URL]}}/{{imag ePair[constants.KEY__IMAGE_A_URL]}}" target="_blank">View Image</a><br/> | 341 <div ng-if="imagePair[constants.KEY__IMAGE_A_URL] != null"> |
| 336 <img-compare type="baseline" width="{{imageSize}}" | 342 <a href="{{imageSets[0][constants.KEY__IMAGESETS__BASE_URL]}}/{{im agePair[constants.KEY__IMAGE_A_URL]}}" target="_blank">View Image</a><br/> |
| 337 src="{{imageSets[0][constants.KEY__IMAGESETS__BASE_URL] }}/{{imagePair[constants.KEY__IMAGE_A_URL]}}" /> | 343 <img-compare ng-if="showThumbnails" |
| 344 type="baseline" width="{{imageSize}}" | |
| 345 src="{{imageSets[0][constants.KEY__IMAGESETS__BASE_UR L]}}/{{imagePair[constants.KEY__IMAGE_A_URL]}}" /> | |
| 346 </div> | |
| 347 <div ng-show="imagePair[constants.KEY__IMAGE_A_URL] == null" | |
| 348 style="text-align:center"> | |
| 349 –none– | |
| 350 </div> | |
| 338 </td> | 351 </td> |
| 339 | 352 |
| 340 <!-- image B --> | 353 <!-- image B --> |
| 341 <td valign="bottom" width="{{imageSize}}"> | 354 <td valign="bottom" width="{{imageSize}}"> |
| 342 <a href="{{imageSets[1][constants.KEY__IMAGESETS__BASE_URL]}}/{{imag ePair[constants.KEY__IMAGE_B_URL]}}" target="_blank">View Image</a><br/> | 355 <div ng-if="imagePair[constants.KEY__IMAGE_B_URL] != null"> |
| 343 <img-compare type="test" width="{{imageSize}}" | 356 <a href="{{imageSets[1][constants.KEY__IMAGESETS__BASE_URL]}}/{{im agePair[constants.KEY__IMAGE_B_URL]}}" target="_blank">View Image</a><br/> |
| 344 src="{{imageSets[1][constants.KEY__IMAGESETS__BASE_URL] }}/{{imagePair[constants.KEY__IMAGE_B_URL]}}" /> | 357 <img-compare ng-if="showThumbnails" |
| 358 type="test" width="{{imageSize}}" | |
| 359 src="{{imageSets[1][constants.KEY__IMAGESETS__BASE_UR L]}}/{{imagePair[constants.KEY__IMAGE_B_URL]}}" /> | |
| 360 </div> | |
| 361 <div ng-show="imagePair[constants.KEY__IMAGE_B_URL] == null" | |
| 362 style="text-align:center"> | |
| 363 –none– | |
| 364 </div> | |
| 345 </td> | 365 </td> |
| 346 | 366 |
| 347 <!-- whitediffs: every differing pixel shown in white --> | 367 <!-- whitediffs: every differing pixel shown in white --> |
| 348 <td valign="bottom" width="{{imageSize}}"> | 368 <td valign="bottom" width="{{imageSize}}"> |
| 349 <div ng-hide="!imagePair[constants.KEY__IS_DIFFERENT]" | 369 <div ng-if="imagePair[constants.KEY__IS_DIFFERENT]" |
| 350 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."> | 370 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."> |
| 351 | 371 |
| 352 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE NCE_DATA__PERCENT_DIFF_PIXELS].toFixed(4)}}% | 372 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE NCE_DATA__PERCENT_DIFF_PIXELS].toFixed(4)}}% |
| 353 ({{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFER ENCE_DATA__NUM_DIFF_PIXELS]}}) | 373 ({{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFER ENCE_DATA__NUM_DIFF_PIXELS]}}) |
| 354 <br/> | 374 <br/> |
| 355 <a href="/static/generated-images/whitediffs/{{getImageDiffRelativ eUrl(imagePair)}}" target="_blank">View Image</a><br/> | 375 <a href="/static/generated-images/whitediffs/{{getImageDiffRelativ eUrl(imagePair)}}" target="_blank">View Image</a><br/> |
| 356 <img-compare type="differingPixelsInWhite" width="{{imageSize}}" | 376 <img-compare ng-if="showThumbnails" |
| 377 type="differingPixelsInWhite" width="{{imageSize}}" | |
| 357 src="/static/generated-images/whitediffs/{{getImageDi ffRelativeUrl(imagePair)}}" /> | 378 src="/static/generated-images/whitediffs/{{getImageDi ffRelativeUrl(imagePair)}}" /> |
| 358 | |
| 359 </div> | 379 </div> |
| 360 <div ng-hide="imagePair[constants.KEY__IS_DIFFERENT]" | 380 <div ng-show="!imagePair[constants.KEY__IS_DIFFERENT]" |
| 361 style="text-align:center"> | 381 style="text-align:center"> |
| 362 –none– | 382 –none– |
| 363 </div> | 383 </div> |
| 364 </td> | 384 </td> |
| 365 | 385 |
| 366 <!-- diffs: per-channel RGB deltas --> | 386 <!-- diffs: per-channel RGB deltas --> |
| 367 <td valign="bottom" width="{{imageSize}}"> | 387 <td valign="bottom" width="{{imageSize}}"> |
| 368 <div ng-hide="!imagePair[constants.KEY__IS_DIFFERENT]" | 388 <div ng-if="imagePair[constants.KEY__IS_DIFFERENT]" |
| 369 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]}}"> | 389 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]}}"> |
| 370 | 390 |
| 371 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE NCE_DATA__PERCEPTUAL_DIFF].toFixed(4)}}% | 391 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE NCE_DATA__PERCEPTUAL_DIFF].toFixed(4)}}% |
| 372 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE NCE_DATA__MAX_DIFF_PER_CHANNEL]}} | 392 {{imagePair[constants.KEY__DIFFERENCE_DATA][constants.KEY__DIFFERE NCE_DATA__MAX_DIFF_PER_CHANNEL]}} |
| 373 <br/> | 393 <br/> |
| 374 <a href="/static/generated-images/diffs/{{getImageDiffRelativeUrl( imagePair)}}" target="_blank">View Image</a><br/> | 394 <a href="/static/generated-images/diffs/{{getImageDiffRelativeUrl( imagePair)}}" target="_blank">View Image</a><br/> |
| 375 <img-compare ng-style="{backgroundColor: pixelDiffBgColor}" | 395 <img-compare ng-if="showThumbnails" |
| 396 ng-style="{backgroundColor: pixelDiffBgColor}" | |
| 376 type="differencePerPixel" width="{{imageSize}}" | 397 type="differencePerPixel" width="{{imageSize}}" |
| 377 src="/static/generated-images/diffs/{{getImageDiffRel ativeUrl(imagePair)}}" | 398 src="/static/generated-images/diffs/{{getImageDiffRel ativeUrl(imagePair)}}" |
| 378 ng-mousedown="MagnifyDraw($event, true)" | 399 ng-mousedown="MagnifyDraw($event, true)" |
| 379 ng-mousemove="MagnifyDraw($event, false)" | 400 ng-mousemove="MagnifyDraw($event, false)" |
| 380 ng-mouseup="MagnifyEnd($event)" | 401 ng-mouseup="MagnifyEnd($event)" |
| 381 ng-mouseleave="MagnifyEnd($event)" /> | 402 ng-mouseleave="MagnifyEnd($event)" /> |
| 382 | |
| 383 </div> | 403 </div> |
| 384 <div ng-hide="imagePair[constants.KEY__IS_DIFFERENT]" | 404 <div ng-show="!imagePair[constants.KEY__IS_DIFFERENT]" |
| 385 style="text-align:center"> | 405 style="text-align:center"> |
| 386 –none– | 406 –none– |
| 387 </div> | 407 </div> |
| 388 </td> | 408 </td> |
| 389 | 409 |
| 390 <td> | 410 <td> |
| 391 <input type="checkbox" | 411 <input type="checkbox" |
| 392 name="rowSelect" | 412 name="rowSelect" |
| 393 value="{{imagePair.index}}" | 413 value="{{imagePair.index}}" |
| 394 ng-checked="isValueInArray(imagePair.index, selectedImagePair s)" | 414 ng-checked="isValueInArray(imagePair.index, selectedImagePair s)" |
| 395 ng-click="toggleValueInArray(imagePair.index, selectedImagePa irs)"> | 415 ng-click="toggleValueInArray(imagePair.index, selectedImagePa irs)"> |
| 396 </tr> | 416 </tr> |
| 397 </table> <!-- imagePairs --> | 417 </table> <!-- imagePairs --> |
| 398 </td></tr></table> <!-- table holding results header + imagePairs table --> | 418 </td></tr></table> <!-- table holding results header + imagePairs table --> |
| 399 | 419 |
| 400 </div><!-- main display area of selected tab --> | 420 </div><!-- main display area of selected tab --> |
| 401 </div><!-- everything: hide until data is loaded --> | 421 </div><!-- everything: hide until data is loaded --> |
| 402 | 422 |
| 403 </body> | 423 </body> |
| 404 </html> | 424 </html> |
| OLD | NEW |