changeset 2651:22efb2d04bc9

#6: Added for rest
author Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk>
date Thu, 19 Jan 2017 16:44:47 +0000
parents 41b7fcd245da
children d75db08e5801
files interfaces/AB.js interfaces/ABX.js interfaces/ape.js interfaces/discrete.js interfaces/horizontal-sliders.js interfaces/timeline.js
diffstat 6 files changed, 83 insertions(+), 96 deletions(-) [+]
line wrap: on
line diff
--- a/interfaces/AB.js	Thu Jan 19 16:24:00 2017 +0000
+++ b/interfaces/AB.js	Thu Jan 19 16:44:47 2017 +0000
@@ -135,7 +135,7 @@
 
 function loadTest(audioHolderObject) {
     var feedbackHolder = document.getElementById('feedbackHolder');
-    var interfaceObj = audioHolderObject.interfaces;
+    var interfaceObj = interfaceContext.getCombinedInterfaces(audioHolderObject);
     if (interfaceObj.length > 1) {
         console.log("WARNING - This interface only supports one <interface> node per page. Using first interface node");
     }
@@ -157,7 +157,7 @@
         document.getElementById("pageTitle").textContent = interfaceObj.title;
     }
 
-    var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options);
+    var interfaceOptions = interfaceObj.options;
     // Clear the interfaceElements
     {
         var node = document.getElementById('playback-holder');
@@ -395,10 +395,8 @@
 }
 
 function buttonSubmitClick() {
-    var checks = [];
-    checks = checks.concat(testState.currentStateMap.interfaces[0].options);
-    checks = checks.concat(specification.interfaces.options);
-    var canContinue = true;
+    var checks = testState.currentStateMap.interfaces[0].options,
+        canContinue = true;
 
     for (var i = 0; i < checks.length; i++) {
         if (checks[i].type == 'check') {
--- a/interfaces/ABX.js	Thu Jan 19 16:24:00 2017 +0000
+++ b/interfaces/ABX.js	Thu Jan 19 16:44:47 2017 +0000
@@ -137,7 +137,7 @@
     // Called each time a new test page is to be build. The page specification node is the only item passed in
     document.getElementById('box-holders').innerHTML = "";
 
-    var interfaceObj = page.interfaces;
+    var interfaceObj = interfaceContext.getCombinedInterfaces(page);
     if (interfaceObj.length > 1) {
         console.log("WARNING - This interface only supports one <interface> node per page. Using first interface node");
     }
@@ -157,7 +157,7 @@
 
     interfaceContext.comparator = new comparator(page);
 
-    var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options);
+    var interfaceOptions = interfaceObj.options;
     for (var option of interfaceOptions) {
         if (option.type == "show") {
             switch (option.name) {
@@ -430,10 +430,8 @@
 }
 
 function buttonSubmitClick() {
-    var checks = [];
-    checks = checks.concat(testState.currentStateMap.interfaces[0].options);
-    checks = checks.concat(specification.interfaces.options);
-    var canContinue = true;
+    var checks = testState.currentStateMap.interfaces[0].options,
+        canContinue = true;
 
     for (var i = 0; i < checks.length; i++) {
         if (checks[i].type == 'check') {
--- a/interfaces/ape.js	Thu Jan 19 16:24:00 2017 +0000
+++ b/interfaces/ape.js	Thu Jan 19 16:44:47 2017 +0000
@@ -286,46 +286,47 @@
     // Delete outside reference
     document.getElementById("outside-reference-holder").innerHTML = "";
 
-    var interfaceObj = audioHolderObject.interfaces;
+    var interfaceObj = interfaceContext.getCombinedInterfaces(audioHolderObject);
     for (var k = 0; k < interfaceObj.length; k++) {
         // Create the div box to center align
         interfaceContext.interfaceSliders.push(new interfaceSliderHolder(interfaceObj[k]));
     }
-
-    var interfaceList = audioHolderObject.interfaces.concat(specification.interfaces);
-    for (var k = 0; k < interfaceList.length; k++) {
-        for (var i = 0; i < interfaceList[k].options.length; i++) {
-            if (interfaceList[k].options[i].type == 'show' && interfaceList[k].options[i].name == 'playhead') {
-                var playbackHolder = document.getElementById('playback-holder');
-                if (playbackHolder == null) {
-                    playbackHolder = document.createElement('div');
-                    playbackHolder.style.width = "100%";
-                    playbackHolder.align = 'center';
-                    playbackHolder.appendChild(interfaceContext.playhead.object);
-                    feedbackHolder.appendChild(playbackHolder);
+    interfaceObj.forEach(function (interface) {
+        for (var option of interface.options) {
+            if (option.type == "show") {
+                switch (option.name) {
+                    case "playhead":
+                        var playbackHolder = document.getElementById('playback-holder');
+                        if (playbackHolder == null) {
+                            playbackHolder = document.createElement('div');
+                            playbackHolder.style.width = "100%";
+                            playbackHolder.align = 'center';
+                            playbackHolder.appendChild(interfaceContext.playhead.object);
+                            feedbackHolder.insertBefore(playbackHolder, feedbackHolder.firstElementChild);
+                        }
+                        break;
+                    case "page-count":
+                        var pagecountHolder = document.getElementById('page-count');
+                        if (pagecountHolder == null) {
+                            pagecountHolder = document.createElement('div');
+                            pagecountHolder.id = 'page-count';
+                        }
+                        pagecountHolder.innerHTML = '<span>Page ' + (testState.stateIndex + 1) + ' of ' + testState.stateMap.length + '</span>';
+                        var inject = document.getElementById('interface-buttons');
+                        inject.appendChild(pagecountHolder);
+                        break;
+                    case "volume":
+                        if (document.getElementById('master-volume-holder') == null) {
+                            feedbackHolder.appendChild(interfaceContext.volume.object);
+                        }
+                        break;
+                    case "comments":
+                        interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder, true);
+                        break;
                 }
-            } else if (interfaceList[k].options[i].type == 'show' && interfaceList[k].options[i].name == 'page-count') {
-                var pagecountHolder = document.getElementById('page-count');
-                if (pagecountHolder == null) {
-                    pagecountHolder = document.createElement('div');
-                    pagecountHolder.id = 'page-count';
-                }
-                pagecountHolder.innerHTML = '<span>Page ' + (testState.stateIndex + 1) + ' of ' + testState.stateMap.length + '</span>';
-                var inject = document.getElementById('interface-buttons');
-                inject.appendChild(pagecountHolder);
-            } else if (interfaceList[k].options[i].type == 'show' && interfaceList[k].options[i].name == 'volume') {
-                if (document.getElementById('master-volume-holder') == null) {
-                    feedbackHolder.appendChild(interfaceContext.volume.object);
-                }
-            } else if (interfaceList[k].options[i].type == 'show' && interfaceList[k].options[i].name == 'comments') {
-                var commentHolder = document.createElement('div');
-                commentHolder.id = 'commentHolder';
-                document.getElementById('testContent').appendChild(commentHolder);
-                interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder, true);
-                break;
             }
         }
-    }
+    });
 
     var commentBoxPrefix = "Comment on fragment";
 
@@ -736,10 +737,8 @@
 }
 
 function buttonSubmitClick() {
-    var checks = [];
-    checks = checks.concat(testState.currentStateMap.interfaces[0].options);
-    checks = checks.concat(specification.interfaces.options);
-    var canContinue = true;
+    var checks = testState.currentStateMap.interfaces[0].options,
+        canContinue = true;
 
     // Check that the anchor and reference objects are correctly placed
     if (interfaceContext.checkHiddenAnchor() == false) {
--- a/interfaces/discrete.js	Thu Jan 19 16:24:00 2017 +0000
+++ b/interfaces/discrete.js	Thu Jan 19 16:44:47 2017 +0000
@@ -120,7 +120,7 @@
 
     var feedbackHolder = document.getElementById('feedbackHolder');
     feedbackHolder.innerHTML = "";
-    var interfaceObj = page.interfaces;
+    var interfaceObj = interfaceContext.getCombinedInterfaces(page);
     if (interfaceObj.length > 1) {
         console.log("WARNING - This interface only supports one <interface> node per page. Using first interface node");
     }
@@ -147,36 +147,7 @@
     }
     var loopPlayback = page.loop;
 
-    // Find all the audioElements from the audioHolder
-    var index = 0;
-    var interfaceScales = testState.currentStateMap.interfaces[0].scales;
-    var labelType = page.label;
-    if (labelType == "default") {
-        labelType = "number";
-    }
-    $(page.audioElements).each(function (pageIndex, element) {
-        // Find URL of track
-        // In this jQuery loop, variable 'this' holds the current audioElement.
-
-        var audioObject = audioEngineContext.newTrack(element);
-        if (element.type == 'outside-reference') {
-            // Construct outside reference;
-            var orNode = new interfaceContext.outsideReferenceDOM(audioObject, index, document.getElementById("outside-reference-holder"));
-            audioObject.bindInterface(orNode);
-        } else {
-            // Create a slider per track
-            var label = interfaceContext.getLabel(labelType, index, page.labelStart);
-            var sliderObj = new discreteObject(audioObject, label, interfaceScales);
-            sliderBox.appendChild(sliderObj.holder);
-            audioObject.bindInterface(sliderObj);
-            interfaceContext.commentBoxes.createCommentBox(audioObject);
-            index += 1;
-        }
-
-    });
-
-    var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options);
-    for (var option of interfaceOptions) {
+    for (var option of interfaceObj.options) {
         if (option.type == "show") {
             switch (option.name) {
                 case "playhead":
@@ -211,6 +182,34 @@
         }
     }
 
+    // Find all the audioElements from the audioHolder
+    var index = 0;
+    var interfaceScales = page.interfaces[0].scales;
+    var labelType = page.label;
+    if (labelType == "default") {
+        labelType = "number";
+    }
+    $(page.audioElements).each(function (pageIndex, element) {
+        // Find URL of track
+        // In this jQuery loop, variable 'this' holds the current audioElement.
+
+        var audioObject = audioEngineContext.newTrack(element);
+        if (element.type == 'outside-reference') {
+            // Construct outside reference;
+            var orNode = new interfaceContext.outsideReferenceDOM(audioObject, index, document.getElementById("outside-reference-holder"));
+            audioObject.bindInterface(orNode);
+        } else {
+            // Create a slider per track
+            var label = interfaceContext.getLabel(labelType, index, page.labelStart);
+            var sliderObj = new discreteObject(audioObject, label, interfaceScales);
+            sliderBox.appendChild(sliderObj.holder);
+            audioObject.bindInterface(sliderObj);
+            interfaceContext.commentBoxes.createCommentBox(audioObject);
+            index += 1;
+        }
+
+    });
+
     $(page.commentQuestions).each(function (index, element) {
         var node = interfaceContext.createCommentQuestion(element);
         feedbackHolder.appendChild(node.holder);
@@ -443,10 +442,8 @@
 
 function buttonSubmitClick() // TODO: Only when all songs have been played!
 {
-    var checks = [];
-    checks = checks.concat(testState.currentStateMap.interfaces[0].options);
-    checks = checks.concat(specification.interfaces.options);
-    var canContinue = true;
+    var checks = testState.currentStateMap.interfaces[0].options,
+        canContinue = true;
 
     // Check that the anchor and reference objects are correctly placed
     if (interfaceContext.checkHiddenAnchor() == false) {
--- a/interfaces/horizontal-sliders.js	Thu Jan 19 16:24:00 2017 +0000
+++ b/interfaces/horizontal-sliders.js	Thu Jan 19 16:44:47 2017 +0000
@@ -120,7 +120,7 @@
     var feedbackHolder = document.getElementById('feedbackHolder');
     feedbackHolder.innerHTML = "";
 
-    var interfaceObj = page.interfaces;
+    var interfaceObj = interfaceContext.getCombinedInterfaces(page);
     if (interfaceObj.length > 1) {
         console.log("WARNING - This interface only supports one <interface> node per page. Using first interface node");
     }
@@ -186,8 +186,7 @@
         }
 
     });
-    var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options);
-    for (var option of interfaceOptions) {
+    for (var option of interfaceObj.options) {
         if (option.type == "show") {
             switch (option.name) {
                 case "playhead":
@@ -395,10 +394,8 @@
 
 function buttonSubmitClick() // TODO: Only when all songs have been played!
 {
-    var checks = [];
-    checks = checks.concat(testState.currentStateMap.interfaces[0].options);
-    checks = checks.concat(specification.interfaces.options);
-    var canContinue = true;
+    var checks = testState.currentStateMap.interfaces[0].options,
+        canContinue = true;
 
     // Check that the anchor and reference objects are correctly placed
     if (interfaceContext.checkHiddenAnchor() == false) {
--- a/interfaces/timeline.js	Thu Jan 19 16:24:00 2017 +0000
+++ b/interfaces/timeline.js	Thu Jan 19 16:44:47 2017 +0000
@@ -83,7 +83,7 @@
     // Called each time a new test page is to be build. The page specification node is the only item passed in
     var content = document.getElementById("timeline-test-content");
     content.innerHTML = "";
-    var interfaceObj = page.interfaces;
+    var interfaceObj = interfaceContext.getCombinedInterfaces(page);
     if (interfaceObj.length > 1) {
         console.log("WARNING - This interface only supports one <interface> node per page. Using first interface node");
     }
@@ -474,10 +474,8 @@
         interfaceContext.lightbox.post("Warning", 'You have not started the test! Please click play on a sample to begin the test!');
         return;
     }
-    var checks = [];
-    checks = checks.concat(testState.currentStateMap.interfaces[0].options);
-    checks = checks.concat(specification.interfaces.options);
-    var canContinue = true;
+    var checks = testState.currentStateMap.interfaces[0],
+        canContinue = true;
     for (var i = 0; i < checks.length; i++) {
         var checkState = true;
         if (checks[i].type == 'check') {