2013-09-27 15:02:44 +00:00
|
|
|
<!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 a warning banner if the server is running in
|
|
|
|
--export mode
|
|
|
|
-->
|
|
|
|
|
2013-09-30 15:06:25 +00:00
|
|
|
<!-- TODO(epoger): Add some indication of how old the
|
|
|
|
expected/actual data is -->
|
|
|
|
|
2013-09-27 15:02:44 +00:00
|
|
|
Settings:
|
|
|
|
<ul>
|
|
|
|
<!-- TODO(epoger): Now that we get multiple result types in a single
|
|
|
|
fetch, modify the UI: add a column showing resultType, and allow
|
|
|
|
the user to sort/filter on that column just like all the
|
|
|
|
others. -->
|
|
|
|
<li>show results of type
|
|
|
|
<select ng-model="showResultsOfType"
|
|
|
|
ng-init="showResultsOfType='failed'">
|
2013-09-30 15:06:25 +00:00
|
|
|
<option ng-repeat="(resultType, count) in categories['resultType']"
|
|
|
|
value="{{resultType}}">
|
|
|
|
{{resultType}} ({{count}})
|
|
|
|
</option>
|
|
|
|
</select>
|
|
|
|
<!--
|
2013-09-27 15:02:44 +00:00
|
|
|
TODO(epoger): See results.py: for now, I have disabled
|
|
|
|
returning succeeded tests as part of the JSON, because it
|
|
|
|
makes the returned JSON too big (and slows down the client).
|
2013-09-30 15:06:25 +00:00
|
|
|
|
|
|
|
Also, we should use some sort of lazy-loading technique
|
|
|
|
(e.g. http://www.appelsiini.net/projects/lazyload ), so that
|
|
|
|
the images are only loaded as they become viewable...
|
|
|
|
that will help with long lists like resultType='no-comparison'.
|
|
|
|
-->
|
|
|
|
<br>
|
|
|
|
TODO(epoger): 'no-comparison' will probably take forever;
|
|
|
|
see HTML source for details
|
|
|
|
<br>
|
|
|
|
TODO(epoger): 'succeeded' will not show any results;
|
|
|
|
see HTML source for details
|
2013-09-27 15:02:44 +00:00
|
|
|
</li>
|
|
|
|
<li>image size
|
2013-09-30 15:06:25 +00:00
|
|
|
<input type="text" ng-model="imageSizePending"
|
|
|
|
ng-init="imageSizePending=100; imageSize=100"
|
2013-09-27 15:02:44 +00:00
|
|
|
maxlength="4"/>
|
2013-09-30 15:06:25 +00:00
|
|
|
<button ng:click="imageSize=imageSizePending">apply</button>
|
2013-09-27 15:02:44 +00:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
<p>
|
2013-09-30 15:06:25 +00:00
|
|
|
Click on the column header radio buttons to re-sort by that column...<br>
|
2013-09-27 15:02:44 +00:00
|
|
|
<!-- TODO(epoger): Show some sort of "loading" message, instead of
|
|
|
|
an empty table, while the data is loading. Otherwise, if there are
|
|
|
|
a lot of failures and it takes a long time to load them, the user
|
|
|
|
might think there are NO failures and leave the page! -->
|
|
|
|
<table border="1">
|
|
|
|
<tr>
|
2013-09-30 15:06:25 +00:00
|
|
|
<th><input ng-model="sortColumn" name="sortColumnRadio" type="radio" value="builder">Builder</input></th>
|
|
|
|
<th><input ng-model="sortColumn" name="sortColumnRadio" type="radio" value="test">Test</input></th>
|
|
|
|
<th><input ng-model="sortColumn" name="sortColumnRadio" type="radio" value="config">Config</input></th>
|
|
|
|
<th><input ng-model="sortColumn" name="sortColumnRadio" type="radio" value="expectedHashDigest">Expected Image</input></th>
|
|
|
|
<th><input ng-model="sortColumn" name="sortColumnRadio" type="radio" value="actualHashDigest">Actual Image</input></th>
|
2013-09-27 15:02:44 +00:00
|
|
|
<!-- TODO(epoger): Add more columns, such as...
|
|
|
|
pixel diff
|
|
|
|
notes/bugs
|
|
|
|
ignoreFailure boolean
|
|
|
|
-->
|
|
|
|
</tr>
|
|
|
|
<!-- TODO(epoger): improve the column sorting, as per
|
|
|
|
http://jsfiddle.net/vojtajina/js64b/14/ -->
|
2013-09-30 15:06:25 +00:00
|
|
|
<tr ng-repeat="result in testData | filter: { resultType: showResultsOfType } | orderBy: sortColumn">
|
2013-09-27 15:02:44 +00:00
|
|
|
<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>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
</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>
|