Mercurial > hg > webaudioevaluationtool
diff 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 |
line wrap: on
line diff
--- a/test_create/test_core.js Mon Jun 26 12:52:42 2017 +0100 +++ b/test_create/test_core.js Tue Jun 27 13:07:41 2017 +0100 @@ -83,6 +83,11 @@ $s.globalSchema = specification.getSchema(); }); $s.specification = specification; + $s.selectedTestPrototype = undefined; + $s.setTestPrototype = function (obj) { + $s.selectedTestPrototype = obj; + $w.specification.interface = obj.interface; + } $s.addPage = function () { $s.specification.createNewPage(); @@ -132,7 +137,10 @@ var obj = $s.testSpecifications.interfaces.find(function (i) { return i.name == name; }); - specification.interface = obj.interface; + if (obj === undefined) { + throw ("Cannot find specification"); + } + $s.setTestPrototype(obj); }; // Get the test interface specifications $s.file = undefined; @@ -191,6 +199,10 @@ } } }; + + $s.configure = function () {} + + $s.$watch("selectedTestPrototype", $s.configure); }]); AngularInterface.controller("survey", ['$scope', '$element', '$window', function ($s, $e, $w) { @@ -283,6 +295,7 @@ $s.interface.options.splice(index, 1); } }; + $s.scales = []; $s.removeScale = function (scale) { var index = $s.interface.scales.findIndex(function (s) { return s == scale; @@ -305,9 +318,62 @@ scale.scales.forEach(function (s) { $s.interface.scales.push(s); }); - $s.selectedScale = "Scale: " + scale.name; + $s.selectedScale = scale.name; }; - $s.selectedScale = "Scale: Custom"; + $s.selectedScale = undefined; + + $s.configure = function () { + if ($s.selectedTestPrototype === undefined) { + return; + } + if ($s.selectedTestPrototype.checks && $s.selectedTestPrototype.checks.length >= 1) { + $s.selectedTestPrototype.checks.forEach(function (entry) { + var dom = $e[0].querySelector("[name=\"" + entry.name + "\"] input"); + if (entry.support == "none") { + dom.checked = false; + dom.disabled = true; + } + }); + } + if ($s.selectedTestPrototype.show && $s.selectedTestPrototype.show.length >= 1) { + $s.selectedTestPrototype.show.forEach(function (entry) { + var dom = $e[0].querySelector("[name=\"" + entry.name + "\"] input"); + if (entry.support == "none") { + dom.checked = false; + dom.disabled = true; + } + }); + } + if ($s.interface !== specification.interfaces) { + // Page specific interface nodes + if ($s.selectedTestPrototype.hasScales !== undefined && ($s.selectedTestPrototype.hasScales == "false" || $s.selectedTestPrototype.hasScales == false)) { + var elem = $e[0].querySelector("[name=\"scale-selection\"]") + elem.style.visibility = "hidden"; + elem.style.height = "0px"; + } + if ($s.selectedTestPrototype.scales && $s.selectedTestPrototype.show.length >= 1) { + $s.scales = []; + $s.selectedTestPrototype.scales.forEach(function (scalename) { + var obj = $s.testSpecifications.scales.find(function (a) { + return a.name == scalename; + }); + $s.scales.push(obj); + }); + if ($s.selectedTestPrototype.scales.includes($s.selectedScale) == false) { + $s.clearScales(); + } + if ($s.scales.length == 1) { + $s.clearScales(); + $s.useScales($s.scales[0]); + } + } else { + $s.scales = $s.testSpecifications.scales; + } + } + }; + + $s.$watch("selectedTestPrototype", $s.configure); + $s.configure(); }]); AngularInterface.controller("page", ['$scope', '$element', '$window', function ($s, $e, $w) { $s.addInterface = function () {