comparison interfaces/ABX.js @ 2703:536cb44c7292

Tidied up check on submits for AB/ABX/APE.
author Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk>
date Mon, 13 Mar 2017 11:53:36 +0000
parents 211364181d16
children c74c698795a9
comparison
equal deleted inserted replaced
2702:28e179d4fb9a 2703:536cb44c7292
10 function loadInterface() { 10 function loadInterface() {
11 // Use this to do any one-time page / element construction. For instance, placing any stationary text objects, 11 // Use this to do any one-time page / element construction. For instance, placing any stationary text objects,
12 // holding div's, or setting up any nodes which are present for the entire test sequence 12 // holding div's, or setting up any nodes which are present for the entire test sequence
13 13
14 interfaceContext.insertPoint.innerHTML = ""; // Clear the current schema 14 interfaceContext.insertPoint.innerHTML = ""; // Clear the current schema
15
16 Interface.prototype.checkScaleRange = function (min, max) {
17 var page = testState.getCurrentTestPage();
18 var audioObjects = audioEngineContext.audioObjects;
19 var state = true;
20 var str = "Please keep listening. ";
21 var minRanking = Infinity;
22 var maxRanking = -Infinity;
23 for (var ao of audioObjects) {
24 var rank = ao.interfaceDOM.getValue();
25 if (rank < minRanking) {
26 minRanking = rank;
27 }
28 if (rank > maxRanking) {
29 maxRanking = rank;
30 }
31 }
32 if (maxRanking * 100 < max) {
33 str += "At least one fragment must be selected.";
34 state = false;
35 }
36 if (!state) {
37 console.log(str);
38 this.storeErrorNode(str);
39 interfaceContext.lightbox.post("Message", str);
40 }
41 return state;
42 };
43 15
44 // Custom comparator Object 16 // Custom comparator Object
45 Interface.prototype.comparator = null; 17 Interface.prototype.comparator = null;
46 18
47 // The injection point into the HTML page 19 // The injection point into the HTML page
431 function buttonSubmitClick() { 403 function buttonSubmitClick() {
432 var checks = testState.currentStateMap.interfaces[0].options, 404 var checks = testState.currentStateMap.interfaces[0].options,
433 canContinue = true; 405 canContinue = true;
434 406
435 for (var i = 0; i < checks.length; i++) { 407 for (var i = 0; i < checks.length; i++) {
436 var checkState; 408 var checkState = true;
437 if (checks[i].type == 'check') { 409 if (checks[i].type == 'check') {
438 switch (checks[i].name) { 410 switch (checks[i].name) {
439 case 'fragmentPlayed': 411 case 'fragmentPlayed':
440 // Check if all fragments have been played 412 // Check if all fragments have been played
441 checkState = interfaceContext.checkAllPlayed(); 413 checkState = interfaceContext.checkAllPlayed();
442 if (checkState === false) { 414
443 canContinue = false;
444 }
445 break; 415 break;
446 case 'fragmentFullPlayback': 416 case 'fragmentFullPlayback':
447 // Check all fragments have been played to their full length 417 // Check all fragments have been played to their full length
448 checkState = interfaceContext.checkFragmentsFullyPlayed(); 418 checkState = interfaceContext.checkFragmentsFullyPlayed();
449 if (checkState === false) {
450 canContinue = false;
451 }
452 break; 419 break;
453 case 'fragmentMoved': 420 case 'fragmentMoved':
454 // Check all fragment sliders have been moved. 421 // Check all fragment sliders have been moved.
455 checkState = interfaceContext.checkAllMoved(); 422 checkState = interfaceContext.checkAllMoved();
456 if (checkState === false) {
457 canContinue = false;
458 }
459 break; 423 break;
460 case 'fragmentComments': 424 case 'fragmentComments':
461 // Check all fragment sliders have been moved. 425 // Check all fragment sliders have been moved.
462 checkState = interfaceContext.checkAllCommented();
463 if (checkState === false) {
464 canContinue = false;
465 }
466 break; 426 break;
467 case 'scalerange': 427 case 'scalerange':
468 // Check the scale has been used effectively 428 // Check the scale has been used effectively
469 checkState = interfaceContext.checkScaleRange(checks[i].min, checks[i].max); 429 console.log("WARNING - Check 'scalerange' does not make sense in AB/ABX! Ignoring!");
470 if (checkState === false) {
471 canContinue = false;
472 }
473 break; 430 break;
474 default: 431 default:
475 console.log("WARNING - Check option " + checks[i].check + " is not supported on this interface"); 432 console.log("WARNING - Check option " + checks[i].check + " is not supported on this interface");
476 break; 433 break;
477 } 434 }
478 435
479 } 436 }
480 if (!canContinue) { 437 if (checkState === false) {
438 canContinue = false;
481 break; 439 break;
482 } 440 }
483 } 441 }
442
484 if (canContinue) { 443 if (canContinue) {
485 if (audioEngineContext.status == 1) { 444 if (audioEngineContext.status == 1) {
486 var playback = document.getElementById('playback-button'); 445 var playback = document.getElementById('playback-button');
487 playback.click(); 446 playback.click();
488 // This function is called when the submit button is clicked. Will check for any further tests to perform, or any post-test options 447 // This function is called when the submit button is clicked. Will check for any further tests to perform, or any post-test options