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 };