Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
tableBuilder.js
Go to the documentation of this file.
1 /////////////////////////
2 // SOME CONSTANTS
3 /////////////////////////
4 var GOLD_SERVER = "\\\\paradoxbuild/GraphicsTestShare/";
5 var BUILD_FOLDER = "build/";
6 var USER_FOLDER = "user/";
7 var GOLD_FOLDER = "gold/";
8 
9 /////////////////////////
10 // GLOBAL VARIABLES
11 /////////////////////////
12 var jsonData = null;
13 var nbFileToRead = 0;
14 var nbFileRead = 0;
15 var loadOnServer = true;
16 
17 /////////////////////////
18 // CODE
19 /////////////////////////
20 function parseJsonText(fileText) {
21  var data = $.parseJSON(this.result);
22  ++nbFileRead;
23 
24  if (jsonData == null)
25  jsonData = data;
26  else
27  jsonData = jsonData.concat(data);
28 
29  if (nbFileRead >= nbFileToRead) {
31  }
32 }
33 
34 function handleFileSelect(evt) {
35  nbFileToRead = evt.target.files.length;
36  nbFileRead = 0;
37  jsonData = null;
38 
39  for (var i = 0; i < nbFileToRead; ++i)
40  {
41  var fileReader = new FileReader();
42  fileReader.onload = parseJsonText;
43  var file = evt.target.files[i];
44  fileReader.readAsText(file);
45  }
46 }
47 
48 function updateFilter(selectBox) {
49  if (selectBox == null || selectBox.selectedIndex == 0)
51  else
53 }
54 
55 function radioChange(evt) {
56  updateFilter(document.getElementById("allTests"));
57 }
58 
59 function selectTest(evt) {
60  updateFilter(evt.target);
61 }
62 
63 function loadLocalChange(evt) {
64  loadOnServer = !evt.target.checked;
65  updateFilter(document.getElementById("allTests"));
66 }
67 
68 function clearTable() {
69  var table = document.getElementById("table");
70  if (table != null) {
71  // remove all the children except the text and the header
72  var nbChild = table.childNodes.length;
73  for (var i = 0; i < nbChild-2; ++i) {
74  table.removeChild(table.lastChild);
75  }
76  }
77 }
78 
79 function clearSelect() {
80  var allTests = document.getElementById("allTests");
81  if (allTests != null) {
82  var nbChild = allTests.childNodes.length;
83  for (var i = 0; i < nbChild - 2; ++i) {
84  allTests.removeChild(allTests.lastChild);
85  }
86  }
87 }
88 
90 {
91  var radioSF = document.getElementById("succFail");
92  var radioS = document.getElementById("succ");
93  return (radioSF != null && radioSF.checked) || (radioS != null && radioS.checked);
94 }
95 
96 function radioDisplayFail()
97 {
98  var radioSF = document.getElementById("succFail");
99  var radioF = document.getElementById("fail");
100  return (radioSF != null && radioSF.checked) || (radioF != null && radioF.checked);
101 }
102 
103 function extractJsonInformations(data) {
104  clearSelect();
105  var testNames = new Array();
106  var buildNumber = -1;
107  var multipleBuilds = false;
108 
109  for (var i = 0; i < jsonData.length; ++i) {
110  var item = jsonData[i];
111  var testName = item["TestName"];
112  if (testName != null && testNames.indexOf(testName) == -1)
113  testNames.push(testName);
114 
115  var curBuildNumber = item["BuildNumber"];
116  multipleBuilds = multipleBuilds || (buildNumber != -1 && buildNumber != curBuildNumber);
117  buildNumber = curBuildNumber;
118  }
119 
120  var allTests = document.getElementById("allTests");
121  if (allTests != null) {
122  for (var i = 0; i < testNames.length; ++i) {
123  var name = testNames[i];
124  allTests.appendChild(addTestSelect(name, name));
125  }
126  }
127 
128  if (testNames.length > 0) {
129  var title = document.getElementById("title");
130  if (title != null) {
131  if (multipleBuilds)
132  title.innerHTML = "Multiple builds";
133  else
134  title.innerHTML = "Build number " + buildNumber;
135  }
136 
137  if (allTests != null) {
138  allTests.selectedIndex = 0;
140  }
141  }
142 }
143 
144 function displayTestResults(displayTestName, displaySuccess, displayFail) {
145  var table = document.getElementById("table");
146  if (table != null) {
147  clearTable();
148  for (var i = 0; i < jsonData.length; ++i) {
149  var item = jsonData[i];
150  var error = item["Error"];
151 
152  if (!displayFail && error != 0)
153  continue;
154  if (!displaySuccess && error == 0)
155  continue;
156 
157  var testName = item["TestName"];
158  if (displayTestName == null || displayTestName == testName) {
159  var newLine = document.createElement("tr");
160 
161  var localBuildFolder = USER_FOLDER;
162  var localGoldFolder = "";
163  if (loadOnServer) {
164  localBuildFolder = BUILD_FOLDER + item["Platform"] + "_" + item["Device"] + "_" + item["Serial"] + "/";
165  localGoldFolder = GOLD_FOLDER+ item["Platform"] + "_" + item["Device"] + "/";
166 
167  if (item["BuildNumber"] > 0)
168  localBuildFolder += item["BuildNumber"] + "/";
169  }
170 
171  var newCellDevice = document.createElement("td");
172  newCellDevice.innerHTML = item["Platform"] + " " + item["Device"];
173  newLine.appendChild(newCellDevice);
174 
175  var newCellTestName = document.createElement("td");
176  newCellTestName.innerHTML = item["TestName"] + " - frame " + item["FrameIndex"];
177  newLine.appendChild(newCellTestName);
178 
179  var newCellBuild = document.createElement("td");
180  newCellBuild.innerHTML = item["BuildNumber"];
181  newLine.appendChild(newCellBuild);
182 
183  newLine.appendChild(createImageCellElement(GOLD_SERVER + localGoldFolder + item["ComputedImage"]));
184 
185  if (error != 0) {
186  newLine.appendChild(createImageCellElement(GOLD_SERVER + localBuildFolder + item["ComputedImage"]));
187  newLine.appendChild(createImageCellElement(GOLD_SERVER + localBuildFolder + item["DiffImage"]));
188  newLine.appendChild(createImageCellElement(GOLD_SERVER + localBuildFolder + item["NormDiffImage"]));
189  }
190  else {
191  newLine.appendChild(createImageCellElement(null));
192  newLine.appendChild(createImageCellElement(null));
193  newLine.appendChild(createImageCellElement(null));
194  }
195 
196  var newCellError = document.createElement("td");
197  newCellError.innerHTML = error;
198  if (error == 0) {
199  newCellError.className = "success";
200  }
201  else {
202  newCellError.className = "fail";
203  }
204  newLine.appendChild(newCellError);
205 
206  table.appendChild(newLine);
207  }
208  }
209  }
210 }
211 
212 function createImageCellElement(imageName) {
213  var newCell = document.createElement("td");
214  newCell.className = "imageCell";
215  if (imageName == null) {
216  newCell.className += " noImage";
217  }
218  else {
219  var img = document.createElement("img");
220  img.src = imageName;
221  newCell.appendChild(img);
222  }
223  return newCell;
224 }
225 
226 function addTestSelect(testValue, testName) {
227  var newOpt = document.createElement("option");
228  newOpt.value = testValue;
229  newOpt.innerHTML = testName;
230  return newOpt;
231 }
232 
233 /////////////////////////
234 // SET EVENTS
235 /////////////////////////
236 document.getElementById('files').addEventListener('change', handleFileSelect, false);
237 document.getElementById("allTests").addEventListener("change", selectTest, false);
238 document.getElementById("succFail").addEventListener("change", radioChange, false);
239 document.getElementById("succ").addEventListener("change", radioChange, false);
240 document.getElementById("fail").addEventListener("change", radioChange, false);
241 document.getElementById("localLoad").addEventListener("change", loadLocalChange, false);
function radioDisplaySuccess()
Definition: tableBuilder.js:89
function updateFilter(selectBox)
Definition: tableBuilder.js:48
function addTestSelect(testValue, testName)
var USER_FOLDER
Definition: tableBuilder.js:6
document handleFileSelect
var jsonData
Definition: tableBuilder.js:12
function parseJsonText(fileText)
Definition: tableBuilder.js:20
function createImageCellElement(imageName)
document selectTest
var BUILD_FOLDER
Definition: tableBuilder.js:5
function extractJsonInformations(data)
var nbFileToRead
Definition: tableBuilder.js:13
var loadOnServer
Definition: tableBuilder.js:15
var nbFileRead
Definition: tableBuilder.js:14
function clearSelect()
Definition: tableBuilder.js:79
var GOLD_SERVER
Definition: tableBuilder.js:4
function radioDisplayFail()
Definition: tableBuilder.js:96
document radioChange
var GOLD_FOLDER
Definition: tableBuilder.js:7
function clearTable()
Definition: tableBuilder.js:68
function displayTestResults(displayTestName, displaySuccess, displayFail)
document loadLocalChange