Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Side by Side Diff: gm/rebaseline_server/static/view.html

Issue 183893030: rebaseline_server: add "show thumbnails" option, and skip display of nonexistent images (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: retry upload due to "error: old chunk mismatch" Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gm/rebaseline_server/static/loader.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 &nbsp;{{tab}} ({{numResultsPerTab[tab]}})&nbsp; 42 &nbsp;{{tab}} ({{numResultsPerTab[tab]}})&nbsp;
43 </div> 43 </div>
44 <div class="tab-spacer"> 44 <div class="tab-spacer">
45 &nbsp; 45 &nbsp;
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
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
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 &ndash;none&ndash;
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 &ndash;none&ndash;
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 &ndash;none&ndash; 382 &ndash;none&ndash;
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 &ndash;none&ndash; 406 &ndash;none&ndash;
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>
OLDNEW
« no previous file with comments | « gm/rebaseline_server/static/loader.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698