Mercurial > hg > webaudioevaluationtool
comparison test_create/test_core.js @ 2886:c70036f28226
Fixes for #76 and #97
author | Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk> |
---|---|
date | Tue, 27 Jun 2017 13:07:41 +0100 |
parents | 98209bb0fe87 |
children | cedaf7ee1b81 |
comparison
equal
deleted
inserted
replaced
2885:98209bb0fe87 | 2886:c70036f28226 |
---|---|
81 get("xml/test-schema.xsd").then(function (text) { | 81 get("xml/test-schema.xsd").then(function (text) { |
82 specification.processSchema(text); | 82 specification.processSchema(text); |
83 $s.globalSchema = specification.getSchema(); | 83 $s.globalSchema = specification.getSchema(); |
84 }); | 84 }); |
85 $s.specification = specification; | 85 $s.specification = specification; |
86 $s.selectedTestPrototype = undefined; | |
87 $s.setTestPrototype = function (obj) { | |
88 $s.selectedTestPrototype = obj; | |
89 $w.specification.interface = obj.interface; | |
90 } | |
86 | 91 |
87 $s.addPage = function () { | 92 $s.addPage = function () { |
88 $s.specification.createNewPage(); | 93 $s.specification.createNewPage(); |
89 }; | 94 }; |
90 | 95 |
130 }; | 135 }; |
131 $s.initialise = function (name) { | 136 $s.initialise = function (name) { |
132 var obj = $s.testSpecifications.interfaces.find(function (i) { | 137 var obj = $s.testSpecifications.interfaces.find(function (i) { |
133 return i.name == name; | 138 return i.name == name; |
134 }); | 139 }); |
135 specification.interface = obj.interface; | 140 if (obj === undefined) { |
141 throw ("Cannot find specification"); | |
142 } | |
143 $s.setTestPrototype(obj); | |
136 }; | 144 }; |
137 // Get the test interface specifications | 145 // Get the test interface specifications |
138 $s.file = undefined; | 146 $s.file = undefined; |
139 $s.description = ""; | 147 $s.description = ""; |
140 | 148 |
189 if (index >= 0) { | 197 if (index >= 0) { |
190 specification.metrics.enabled.splice(index, 1); | 198 specification.metrics.enabled.splice(index, 1); |
191 } | 199 } |
192 } | 200 } |
193 }; | 201 }; |
202 | |
203 $s.configure = function () {} | |
204 | |
205 $s.$watch("selectedTestPrototype", $s.configure); | |
194 }]); | 206 }]); |
195 | 207 |
196 AngularInterface.controller("survey", ['$scope', '$element', '$window', function ($s, $e, $w) { | 208 AngularInterface.controller("survey", ['$scope', '$element', '$window', function ($s, $e, $w) { |
197 $s.addSurveyEntry = function () { | 209 $s.addSurveyEntry = function () { |
198 $s.survey.addOption(); | 210 $s.survey.addOption(); |
281 } | 293 } |
282 } else if (index >= 0 && !$event.currentTarget.checked) { | 294 } else if (index >= 0 && !$event.currentTarget.checked) { |
283 $s.interface.options.splice(index, 1); | 295 $s.interface.options.splice(index, 1); |
284 } | 296 } |
285 }; | 297 }; |
298 $s.scales = []; | |
286 $s.removeScale = function (scale) { | 299 $s.removeScale = function (scale) { |
287 var index = $s.interface.scales.findIndex(function (s) { | 300 var index = $s.interface.scales.findIndex(function (s) { |
288 return s == scale; | 301 return s == scale; |
289 }); | 302 }); |
290 if (index >= 0) { | 303 if (index >= 0) { |
303 $s.useScales = function (scale) { | 316 $s.useScales = function (scale) { |
304 $s.clearScales(); | 317 $s.clearScales(); |
305 scale.scales.forEach(function (s) { | 318 scale.scales.forEach(function (s) { |
306 $s.interface.scales.push(s); | 319 $s.interface.scales.push(s); |
307 }); | 320 }); |
308 $s.selectedScale = "Scale: " + scale.name; | 321 $s.selectedScale = scale.name; |
309 }; | 322 }; |
310 $s.selectedScale = "Scale: Custom"; | 323 $s.selectedScale = undefined; |
324 | |
325 $s.configure = function () { | |
326 if ($s.selectedTestPrototype === undefined) { | |
327 return; | |
328 } | |
329 if ($s.selectedTestPrototype.checks && $s.selectedTestPrototype.checks.length >= 1) { | |
330 $s.selectedTestPrototype.checks.forEach(function (entry) { | |
331 var dom = $e[0].querySelector("[name=\"" + entry.name + "\"] input"); | |
332 if (entry.support == "none") { | |
333 dom.checked = false; | |
334 dom.disabled = true; | |
335 } | |
336 }); | |
337 } | |
338 if ($s.selectedTestPrototype.show && $s.selectedTestPrototype.show.length >= 1) { | |
339 $s.selectedTestPrototype.show.forEach(function (entry) { | |
340 var dom = $e[0].querySelector("[name=\"" + entry.name + "\"] input"); | |
341 if (entry.support == "none") { | |
342 dom.checked = false; | |
343 dom.disabled = true; | |
344 } | |
345 }); | |
346 } | |
347 if ($s.interface !== specification.interfaces) { | |
348 // Page specific interface nodes | |
349 if ($s.selectedTestPrototype.hasScales !== undefined && ($s.selectedTestPrototype.hasScales == "false" || $s.selectedTestPrototype.hasScales == false)) { | |
350 var elem = $e[0].querySelector("[name=\"scale-selection\"]") | |
351 elem.style.visibility = "hidden"; | |
352 elem.style.height = "0px"; | |
353 } | |
354 if ($s.selectedTestPrototype.scales && $s.selectedTestPrototype.show.length >= 1) { | |
355 $s.scales = []; | |
356 $s.selectedTestPrototype.scales.forEach(function (scalename) { | |
357 var obj = $s.testSpecifications.scales.find(function (a) { | |
358 return a.name == scalename; | |
359 }); | |
360 $s.scales.push(obj); | |
361 }); | |
362 if ($s.selectedTestPrototype.scales.includes($s.selectedScale) == false) { | |
363 $s.clearScales(); | |
364 } | |
365 if ($s.scales.length == 1) { | |
366 $s.clearScales(); | |
367 $s.useScales($s.scales[0]); | |
368 } | |
369 } else { | |
370 $s.scales = $s.testSpecifications.scales; | |
371 } | |
372 } | |
373 }; | |
374 | |
375 $s.$watch("selectedTestPrototype", $s.configure); | |
376 $s.configure(); | |
311 }]); | 377 }]); |
312 AngularInterface.controller("page", ['$scope', '$element', '$window', function ($s, $e, $w) { | 378 AngularInterface.controller("page", ['$scope', '$element', '$window', function ($s, $e, $w) { |
313 $s.addInterface = function () { | 379 $s.addInterface = function () { |
314 $s.page.addInterface(); | 380 $s.page.addInterface(); |
315 }; | 381 }; |