Mercurial > hg > webaudioevaluationtool
diff js/core.js @ 3013:5acdaf4c14c3
Merge branch 'vnext' into Dev_main
author | Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk> |
---|---|
date | Wed, 06 Sep 2017 14:50:13 +0100 |
parents | a10cbbccc4f3 3342bc1f3256 |
children | 664065577426 |
line wrap: on
line diff
--- a/js/core.js Fri Aug 04 11:27:55 2017 +0200 +++ b/js/core.js Wed Sep 06 14:50:13 2017 +0100 @@ -677,9 +677,10 @@ var table = document.createElement("table"); table.className = "popup-option-list"; table.border = "0"; + 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'); @@ -695,20 +696,37 @@ tr = document.createElement('div'); tr.setAttribute('name', 'option'); tr.className = "popup-option-checbox"; - if (node.response[index] !== undefined) { - if (node.response[index].checked === true) { + var resp = undefined; + if (node.response.length > 0) { + resp = node.response.find(function (a) { + return a.name == option.name; + }); + } + if (resp !== undefined) { + if (resp.checked === true) { input.checked = "true"; } + } else { + node.response.push({ + "name": option.name, + "text": option.text, + "checked": false + }); } index++; }); + if (node.specification.randomise) { + nodelist = randomiseOrder(nodelist); + } + nodelist.forEach(function (e) { + table.appendChild(e); + }); this.popupResponse.appendChild(table); } function processCheckbox(node) { console.log("Checkbox: " + node.specification.statement); var inputs = this.popupResponse.getElementsByTagName('input'); - node.response = []; var numChecked = 0, i; for (i = 0; i < node.specification.options.length; i++) { @@ -738,10 +756,9 @@ } } for (i = 0; i < node.specification.options.length; i++) { - node.response.push({ - name: node.specification.options[i].name, - text: node.specification.options[i].text, - checked: inputs[i].checked + node.response.forEach(function (a) { + var input = this.popupResponse.querySelector("#" + a.name); + a.checked = input.checked; }); console.log(node.specification.options[i].name + ": " + inputs[i].checked); } @@ -781,12 +798,10 @@ var table = document.createElement("table"); table.className = "popup-option-list"; table.border = "0"; - if (node.response === null || node.response.length === 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'); @@ -802,8 +817,16 @@ td.appendChild(span); tr = document.createElement('div'); tr.setAttribute('name', 'option'); - tr.className = "popup-option-checbox"; - table.appendChild(tr); + tr.className = "popup-option-checkbox"; + if (node.response.name === option.name) { + input.checked = true; + } + }); + if (node.specification.randomise) { + nodelist = randomiseOrder(nodelist); + } + nodelist.forEach(function (e) { + table.appendChild(e); }); this.popupResponse.appendChild(table); } @@ -1968,13 +1991,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);