skia2/gm/rebaseline_server/static/view.html
epoger@google.com dcb4e65998 rebaseline_server: allow client to pull all results, or just failures
(SkipBuildbotRuns)

This will be handy for constrained networks or devices, where we don't want
to bother downloading info about all the successful tests.

R=jcgregorio@google.com

Review URL: https://codereview.chromium.org/26891003

git-svn-id: http://skia.googlecode.com/svn/trunk@11737 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-10-11 18:45:33 +00:00

176 lines
6.4 KiB
HTML

<!DOCTYPE html>
<html ng-app="Loader">
<head>
<title>Current GM Results</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js"></script>
<script src="loader.js"></script>
</head>
<body>
<div ng-controller="Loader.Controller">
<!-- TODO(epoger): Add some indication of how old the
expected/actual data is -->
<em>
{{loadingMessage}}
</em>
<div ng-hide="!categories">
<div ng-hide="!(header.isEditable && header.isExported)"
style="background-color:#ffbb00">
WARNING! These results are editable and exported, so any user
who can connect to this server over the network can modify them.
</div>
<table border="1">
<tr>
<th colspan="2">
Filters
</th>
<th>
Settings
</th>
</tr>
<tr valign="top">
<td>
resultType<br>
<label ng-repeat="(resultType, count) in categories['resultType']">
<input type="checkbox"
name="resultTypes"
value="{{resultType}}"
ng-checked="!isHiddenResultType(resultType)"
ng-click="toggleHiddenResultType(resultType)">
{{resultType}} ({{count}})<br>
</label>
</td>
<td>
config<br>
<label ng-repeat="(config, count) in categories['config']">
<input type="checkbox"
name="configs"
value="{{config}}"
ng-checked="!isHiddenConfig(config)"
ng-click="toggleHiddenConfig(config)">
{{config}} ({{count}})<br>
</label>
</td>
<td><table>
<tr><td>
Image size
<input type="text" ng-model="imageSizePending"
ng-init="imageSizePending=100"
ng-change="areUpdatesPending = true"
maxlength="4"/>
</td></tr>
<tr><td>
Max records to display
<input type="text" ng-model="displayLimitPending"
ng-init="displayLimitPending=50"
ng-change="areUpdatesPending = true"
maxlength="4"/>
</td></tr>
<tr><td>
<button style="font-size:30px"
ng-click="updateResults()"
ng-disabled="!areUpdatesPending">
Update Results
</button>
</td></tr>
</tr></table></td>
</tr>
</table>
<p>
TODO(epoger): Add ability to filter builder and test names
(using a free-form text field, with partial string match)
<br>
TODO(epoger): Add more columns, such as pixel diffs, notes/bugs,
ignoreFailure boolean
<br>
TODO(epoger): Improve the column sorting, as per
<a href="http://jsfiddle.net/vojtajina/js64b/14/">
http://jsfiddle.net/vojtajina/js64b/14/
</a>
<br>
TODO(epoger): Right now, if you change which column is used to
sort the data, the column widths may fluctuate based on the
longest string <i>currently visible</i> within the top {{displayLimit}}
results. Can we fix the column widths to be wide enough to hold
any result, even the currently hidden results?
<p>
Found {{filteredTestData.length}} matches, and displaying the first
{{displayLimit}}: <br>
<!-- TODO(epoger): If (displayLimit <= filteredTestData.length),
modify this message to indicate that all results are shown. -->
(click on the column header radio buttons to re-sort by that column)
<br>
<table border="1">
<tr>
<th ng-repeat="categoryName in ['resultType', 'builder', 'test', 'config']">
<input type="radio"
name="sortColumnRadio"
value="{{categoryName}}"
ng-checked="(sortColumn == categoryName)"
ng-click="sortResultsBy(categoryName)">
{{categoryName}}
</th>
<th>
<input type="radio"
name="sortColumnRadio"
value="expectedHashDigest"
ng-checked="(sortColumn == 'expectedHashDigest')"
ng-click="sortResultsBy('expectedHashDigest')">
expected image
</th>
<th>
<input type="radio"
name="sortColumnRadio"
value="actualHashDigest"
ng-checked="(sortColumn == 'actualHashDigest')"
ng-click="sortResultsBy('actualHashDigest')">
actual image
</th>
<th ng-hide="!header.isEditable">
<!-- item-selection checkbox column -->
{{selectedItems}} <!-- TODO(epoger): temporary debug output -->
</th>
</tr>
<tr ng-repeat="result in limitedTestData">
<td>{{result.resultType}}</td>
<td>{{result.builder}}</td>
<td>{{result.test}}</td>
<td>{{result.config}}</td>
<td>
<a target="_blank" href="http://chromium-skia-gm.commondatastorage.googleapis.com/gm/{{result.expectedHashType}}/{{result.test}}/{{result.expectedHashDigest}}.png">
<img width="{{imageSize}}" src="http://chromium-skia-gm.commondatastorage.googleapis.com/gm/{{result.expectedHashType}}/{{result.test}}/{{result.expectedHashDigest}}.png"/>
</a>
</td>
<td>
<a target="_blank" href="http://chromium-skia-gm.commondatastorage.googleapis.com/gm/{{result.actualHashType}}/{{result.test}}/{{result.actualHashDigest}}.png">
<img width="{{imageSize}}" src="http://chromium-skia-gm.commondatastorage.googleapis.com/gm/{{result.actualHashType}}/{{result.test}}/{{result.actualHashDigest}}.png"/>
</a>
</td>
<td ng-hide="!header.isEditable">
<input type="checkbox"
name="rowSelect"
value="{{result.index}}"
ng-checked="isItemSelected(result.index)"
ng-click="toggleItemSelected(result.index)">
</tr>
</table>
</div>
</div>
<!-- TODO(epoger): Can we get the base URLs (commondatastorage and
issues list) from
http://skia.googlecode.com/svn/buildbot/site_config/global_variables.json
? I tried importing the
http://skia.googlecode.com/svn/buildbot/skia_tools.js script and using
that to do so, but I got Access-Control-Allow-Origin errors.
-->
</body>
</html>