| Index: gm/viewer/module.js
|
| ===================================================================
|
| --- gm/viewer/module.js (revision 0)
|
| +++ gm/viewer/module.js (revision 0)
|
| @@ -0,0 +1,75 @@
|
| +/*
|
| + * GMActualResultsLoader:
|
| + * Reads an actual-results.json file, and imports its data into $scope.
|
| + */
|
| +var GMActualResultsLoader = angular.module(
|
| + 'GMActualResultsLoader',
|
| + [],
|
| + function($httpProvider) {
|
| + /* Override transformResponse so that the numeric checksums are interpreted as
|
| + * strings instead, since Javascript cannot handle 64-bit integers. */
|
| + $httpProvider.defaults.transformResponse = function(data, headersGetter) {
|
| + return JSON.parse(data.replace(/\s(\d+)\s/g, " \"$1\" "));
|
| + }
|
| + }
|
| +);
|
| +GMActualResultsLoader.controller(
|
| + 'GMActualResultsLoader.Controller',
|
| + function($scope, $http) {
|
| + /* When the changePlatformPath function is called, download actual-results.json
|
| + * from the desired platform directory.
|
| + *
|
| + * When the JSON is received, predigest it (combining actual and expected results for each
|
| + * test) and return it to the frontend as $scope.gmActualResults like so:
|
| + *
|
| + * [
|
| + * {"resultType": "failed",
|
| + * "resultsOfThisType": [
|
| + * {"test":"bigmatrix", "config":"gpu",
|
| + * "actualHashType": "bitmap-64bitMD5", "actualHashValue": "1234",
|
| + * "expectedHashType": "bitmap-64bitMD5", "actualHashValue": "6789"},
|
| + * {"test":"bigmatrix", "config":"8888",
|
| + * "actualHashType": "bitmap-64bitMD5", "actualHashValue": "5678",
|
| + * "expectedHashType": "bitmap-64bitMD5", "actualHashValue": "6789"},
|
| + * more tests...
|
| + * ]},
|
| + * {"resultType": "no-comparison",
|
| + * "resultsOfThisType": [
|
| + * {"test":"aaclip", "config":"gpu",
|
| + * "actualHashType": "bitmap-64bitMD5", "actualHashValue": "8765"},
|
| + * {"test":"aaclip", "config":"8888",
|
| + * "actualHashType": "bitmap-64bitMD5", "actualHashValue": "4321"},
|
| + * more tests...
|
| + * ]},
|
| + * more result types...
|
| + * ]
|
| + */
|
| + $scope.changePlatformPath = function() {
|
| + $http.get($scope.platformPath + "/actual-results.json").success(
|
| + function(response) {
|
| + var jsonResults = [];
|
| + var imageNameRegex = /^(.+)_([^_]+).png/;
|
| + angular.forEach(response['actual-results'], function(resultsOfThisType, resultType) {
|
| + var resultCollection = [];
|
| + angular.forEach(resultsOfThisType, function(hashTypeAndValue, imageName) {
|
| + var matched = imageNameRegex.exec(imageName);
|
| + var thisResult = {
|
| + test: matched[1], config: matched[2],
|
| + actualHashType: hashTypeAndValue[0], actualHashValue: hashTypeAndValue[1] };
|
| + var expectations = response['expected-results'][imageName]['allowed-digests'];
|
| + if (expectations != null) {
|
| + thisResult.expectedHashType = expectations[0][0];
|
| + thisResult.expectedHashValue = expectations[0][1];
|
| + }
|
| + resultCollection.push(thisResult);
|
| + });
|
| + var resultTypeAndCollection = { resultType: resultType,
|
| + resultsOfThisType: resultCollection };
|
| + jsonResults.push(resultTypeAndCollection);
|
| + });
|
| + $scope.gmActualResults = jsonResults;
|
| + }
|
| + );
|
| + };
|
| + }
|
| +);
|
|
|