| Index: gm/rebaseline_server/static/view.html
|
| diff --git a/gm/rebaseline_server/static/view.html b/gm/rebaseline_server/static/view.html
|
| index 5ded6973f78f08860e8be5fb5424faa43b337c54..68340ebe14bb3d044529ef9d3758d8d1369d88ba 100644
|
| --- a/gm/rebaseline_server/static/view.html
|
| +++ b/gm/rebaseline_server/static/view.html
|
| @@ -126,6 +126,12 @@
|
| Show thumbnails
|
| </td></tr>
|
| <tr><td>
|
| + <input type="checkbox" ng-model="mergeIdenticalRowsPending"
|
| + ng-init="mergeIdenticalRowsPending = true"
|
| + ng-change="areUpdatesPending = true"/>
|
| + Merge identical rows
|
| + </td></tr>
|
| + <tr><td>
|
| Image width
|
| <input type="text" ng-model="imageSizePending"
|
| ng-init="imageSizePending=100"
|
| @@ -248,9 +254,19 @@
|
| bugs
|
| </th>
|
| <th width="{{imageSize}}">
|
| + <input type="radio"
|
| + name="sortColumnRadio"
|
| + value="imageA"
|
| + ng-checked="(sortColumnKey == constants.KEY__IMAGEPAIRS__IMAGE_A_URL)"
|
| + ng-click="sortResultsBy('none', constants.KEY__IMAGEPAIRS__IMAGE_A_URL)">
|
| {{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_A][constants.KEY__IMAGESETS__FIELD__DESCRIPTION]}}
|
| </th>
|
| <th width="{{imageSize}}">
|
| + <input type="radio"
|
| + name="sortColumnRadio"
|
| + value="imageB"
|
| + ng-checked="(sortColumnKey == constants.KEY__IMAGEPAIRS__IMAGE_B_URL)"
|
| + ng-click="sortResultsBy('none', constants.KEY__IMAGEPAIRS__IMAGE_B_URL)">
|
| {{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_B][constants.KEY__IMAGESETS__FIELD__DESCRIPTION]}}
|
| </th>
|
| <th width="{{imageSize}}">
|
| @@ -280,7 +296,9 @@
|
| </th>
|
| </tr>
|
|
|
| - <tr ng-repeat="imagePair in limitedImagePairs" results-updated-callback-directive>
|
| + <tr ng-repeat="imagePair in limitedImagePairs" valign="top"
|
| + ng-class-odd="'results-odd'" ng-class-even="'results-even'"
|
| + results-updated-callback-directive>
|
| <td>
|
| {{imagePair[constants.KEY__IMAGEPAIRS__EXTRACOLUMNS][constants.KEY__EXTRACOLUMNS__RESULT_TYPE]}}
|
| <br>
|
| @@ -345,7 +363,7 @@
|
| </td>
|
|
|
| <!-- image A -->
|
| - <td valign="bottom" width="{{imageSize}}">
|
| + <td width="{{imageSize}}" ng-if="imagePair[constants.KEY__IMAGEPAIRS__ROWSPAN] > 0" rowspan="{{imagePair[constants.KEY__IMAGEPAIRS__ROWSPAN]}}">
|
| <div ng-if="imagePair[constants.KEY__IMAGEPAIRS__IMAGE_A_URL] != null">
|
| <a href="{{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_A][constants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{imagePair[constants.KEY__IMAGEPAIRS__IMAGE_A_URL]}}" target="_blank">View Image</a><br/>
|
| <img ng-if="showThumbnails"
|
| @@ -359,7 +377,7 @@
|
| </td>
|
|
|
| <!-- image B -->
|
| - <td valign="bottom" width="{{imageSize}}">
|
| + <td width="{{imageSize}}" ng-if="imagePair[constants.KEY__IMAGEPAIRS__ROWSPAN] > 0" rowspan="{{imagePair[constants.KEY__IMAGEPAIRS__ROWSPAN]}}">
|
| <div ng-if="imagePair[constants.KEY__IMAGEPAIRS__IMAGE_B_URL] != null">
|
| <a href="{{imageSets[constants.KEY__IMAGESETS__SET__IMAGE_B][constants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{imagePair[constants.KEY__IMAGEPAIRS__IMAGE_B_URL]}}" target="_blank">View Image</a><br/>
|
| <img ng-if="showThumbnails"
|
| @@ -373,17 +391,17 @@
|
| </td>
|
|
|
| <!-- whitediffs: every differing pixel shown in white -->
|
| - <td valign="bottom" width="{{imageSize}}">
|
| + <td width="{{imageSize}}" ng-if="imagePair[constants.KEY__IMAGEPAIRS__ROWSPAN] > 0" rowspan="{{imagePair[constants.KEY__IMAGEPAIRS__ROWSPAN]}}">
|
| <div ng-if="imagePair[constants.KEY__IMAGEPAIRS__IS_DIFFERENT]"
|
| title="{{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__NUM_DIFF_PIXELS] | number:0}} of {{(100 * imagePair[constants.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__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__PERCENT_DIFF_PIXELS].toFixed(4)}}%) differ from expectation.">
|
|
|
| - {{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__PERCENT_DIFF_PIXELS].toFixed(4)}}%
|
| - ({{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__NUM_DIFF_PIXELS]}})
|
| - <br/>
|
| <a href="{{imageSets[constants.KEY__IMAGESETS__SET__WHITEDIFFS][constants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePair)}}" target="_blank">View Image</a><br/>
|
| <img ng-if="showThumbnails"
|
| width="{{imageSize}}"
|
| ng-src="{{imageSets[constants.KEY__IMAGESETS__SET__WHITEDIFFS][constants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePair)}}" />
|
| + <br/>
|
| + {{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__PERCENT_DIFF_PIXELS].toFixed(4)}}%
|
| + ({{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__NUM_DIFF_PIXELS]}})
|
| </div>
|
| <div ng-show="!imagePair[constants.KEY__IMAGEPAIRS__IS_DIFFERENT]"
|
| style="text-align:center">
|
| @@ -392,18 +410,18 @@
|
| </td>
|
|
|
| <!-- diffs: per-channel RGB deltas -->
|
| - <td valign="bottom" width="{{imageSize}}">
|
| + <td width="{{imageSize}}" ng-if="imagePair[constants.KEY__IMAGEPAIRS__ROWSPAN] > 0" rowspan="{{imagePair[constants.KEY__IMAGEPAIRS__ROWSPAN]}}">
|
| <div ng-if="imagePair[constants.KEY__IMAGEPAIRS__IS_DIFFERENT]"
|
| title="Perceptual difference measure is {{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__PERCEPTUAL_DIFF].toFixed(4)}}%. Maximum difference per channel: R={{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__MAX_DIFF_PER_CHANNEL][0]}}, G={{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__MAX_DIFF_PER_CHANNEL][1]}}, B={{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__MAX_DIFF_PER_CHANNEL][2]}}">
|
|
|
| - {{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__PERCEPTUAL_DIFF].toFixed(4)}}%
|
| - {{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__MAX_DIFF_PER_CHANNEL]}}
|
| - <br/>
|
| <a href="{{imageSets[constants.KEY__IMAGESETS__SET__DIFFS][constants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePair)}}" target="_blank">View Image</a><br/>
|
| <img ng-if="showThumbnails"
|
| ng-style="{backgroundColor: pixelDiffBgColor}"
|
| width="{{imageSize}}"
|
| ng-src="{{imageSets[constants.KEY__IMAGESETS__SET__DIFFS][constants.KEY__IMAGESETS__FIELD__BASE_URL]}}/{{getImageDiffRelativeUrl(imagePair)}}" />
|
| + <br/>
|
| + {{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__PERCEPTUAL_DIFF].toFixed(4)}}%
|
| + {{imagePair[constants.KEY__IMAGEPAIRS__DIFFERENCES][constants.KEY__DIFFERENCES__MAX_DIFF_PER_CHANNEL]}}
|
| </div>
|
| <div ng-show="!imagePair[constants.KEY__IMAGEPAIRS__IS_DIFFERENT]"
|
| style="text-align:center">
|
| @@ -411,12 +429,13 @@
|
| </div>
|
| </td>
|
|
|
| - <td>
|
| + <td ng-if="imagePair[constants.KEY__IMAGEPAIRS__ROWSPAN] > 0" rowspan="{{imagePair[constants.KEY__IMAGEPAIRS__ROWSPAN]}}">
|
| + <br/>
|
| <input type="checkbox"
|
| name="rowSelect"
|
| value="{{imagePair.index}}"
|
| ng-checked="isValueInArray(imagePair.index, selectedImagePairs)"
|
| - ng-click="toggleValueInArray(imagePair.index, selectedImagePairs)">
|
| + ng-click="toggleSomeImagePairs($index, imagePair[constants.KEY__IMAGEPAIRS__ROWSPAN])">
|
| </tr>
|
| </table> <!-- imagePairs -->
|
| </td></tr></table> <!-- table holding results header + imagePairs table -->
|
|
|