changeset 2924:4ae62d4c5c6d

Potential fix for #226. WIP for #225
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Wed, 06 Sep 2017 13:40:23 +0100
parents 029b0ebc299a
children 21d548eb40f1
files js/core.js tests/examples/APE_example.xml
diffstat 2 files changed, 20 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/js/core.js	Wed Sep 06 12:17:14 2017 +0100
+++ b/js/core.js	Wed Sep 06 13:40:23 2017 +0100
@@ -678,9 +678,10 @@
         table.className = "popup-option-list";
         table.border = "0";
         node.response = [];
+        var nodelist = [];
         node.specification.options.forEach(function (option, index) {
             var tr = document.createElement("tr");
-            table.appendChild(tr);
+            nodelist.push(tr);
             var td = document.createElement("td");
             tr.appendChild(td);
             var input = document.createElement('input');
@@ -703,6 +704,12 @@
             }
             index++;
         });
+        if (node.specification.randomise) {
+            nodelist = randomiseOrder(nodelist);
+        }
+        nodelist.forEach(function (e) {
+            table.appendChild(e);
+        });
         this.popupResponse.appendChild(table);
     }
 
@@ -1969,13 +1976,15 @@
                 // Safari does not like using 'this' to reference the calling object!
                 //event.currentTarget.owner.metric.stopListening(audioEngineContext.timer.getTestTime(),event.currentTarget.owner.getCurrentPosition());
                 if (event.currentTarget !== null) {
-                    event.currentTarget.owner.stop(audioContext.currentTime + 1);
+                    event.currentTarget.owner.stop(audioContext.currentTime + 0.1);
                 }
             };
             this.outputGain.gain.cancelScheduledValues(audioContext.currentTime);
             if (!audioEngineContext.loopPlayback || !audioEngineContext.synchPlayback) {
                 this.metric.startListening(audioEngineContext.timer.getTestTime());
-                this.outputGain.gain.linearRampToValueAtTime(this.onplayGain, startTime + specification.crossFade);
+                if (this.outputGain.gain.value !== this.onplayGain) {
+                    this.outputGain.gain.linearRampToValueAtTime(this.onplayGain, startTime + Number(specification.crossFade));
+                }
                 this.interfaceDOM.startPlayback();
             } else {
                 this.outputGain.gain.linearRampToValueAtTime(0.0, startTime);
--- a/tests/examples/APE_example.xml	Wed Sep 06 12:17:14 2017 +0100
+++ b/tests/examples/APE_example.xml	Wed Sep 06 13:40:23 2017 +0100
@@ -2,24 +2,24 @@
     <waet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="test-schema.xsd">
         <setup interface="APE" projectReturn="save.php" randomiseOrder='true' poolSize="2" loudness="-23" calibration="true">
             <survey location="before">
-                <surveyentry type="question" id="sessionId" mandatory="true">
+                <surveyquestion id="sessionId" mandatory="true">
                     <statement>Please enter your name.</statement>
                     <conditional check="equals" value="John" jumpToOnPass="test-intro" jumpToOnFail="checkboxtest" />
-                </surveyentry>
-                <surveyentry type="checkbox" id="checkboxtest" mandatory="true" min="2" max="4">
+                </surveyquestion>
+                <surveycheckbox id="checkboxtest" mandatory="true" min="2" max="4" randomise="true">
                     <statement>Please select with which activities you have any experience (example checkbox question)</statement>
                     <option name="musician">Playing a musical instrument</option>
                     <option name="soundengineer">Recording or mixing audio</option>
                     <option name="developer">Developing audio software</option>
                     <option name="hwdesigner">Designing or building audio hardware</option>
                     <option name="researcher">Research in the field of audio</option>
-                </surveyentry>
-                <surveyentry type="question" id="instrument" mandatory="false">
+                </surveycheckbox>
+                <surveyquestion id="instrument" mandatory="false">
                     <statement>What instrument did you play</statement>
-                </surveyentry>
-                <surveyentry type="statement" id="test-intro">
+                </surveyquestion>
+                <surveystatement id="test-intro">
                     <statement>This is an example of an 'APE'-style test, with two pages, using the test stimuli in 'example_eval/'.</statement>
-                </surveyentry>
+                </surveystatement>
             </survey>
             <survey location="after">
                 <surveyentry type="question" id="location" mandatory="true" boxsize="large">