Mercurial > hg > webaudioevaluationtool
changeset 669:c8eb821710fa
audioElement id's tracked from input to output for randomisation.
author | Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk> |
---|---|
date | Fri, 10 Apr 2015 17:18:45 +0100 |
parents | 6455bee85090 |
children | 77c974fd7e60 |
files | ape.js core.js example_eval/project.xml |
diffstat | 3 files changed, 57 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/ape.js Fri Apr 10 16:21:57 2015 +0100 +++ b/ape.js Fri Apr 10 17:18:45 2015 +0100 @@ -51,8 +51,8 @@ }); // New check if we need to randomise the test order - var randomise = xmlSetup.attributes['randomiseOrder']; - if (randomise != undefine) { + var randomise = xmlSetup[0].attributes['randomiseOrder']; + if (randomise != undefined) { randomise = Boolean(randomise.value); } else { randomise = false; @@ -207,9 +207,23 @@ return; } } - // Find all the audioElements from the audioHolder + + var randomise = textXML.attributes['randomiseOrder']; + if (randomise != undefined) {randomise = randomise.value;} + else {randomise = false;} + var audioElements = $(textXML).find('audioElements'); audioElements.each(function(index,element){ + // Find any blind-repeats + // Not implemented yet, but just incase + currentTrackOrder[index] = element; + }); + if (randomise) { + // TODO: Randomise order + } + + // Find all the audioElements from the audioHolder + $(currentTrackOrder).each(function(index,element){ // Find URL of track // In this jQuery loop, variable 'this' holds the current audioElement. @@ -460,8 +474,7 @@ function testEnded(testId) { - var xmlDoc = interfaceXMLSave(); - testResultsHolders; + pageXMLSave(testId); if (testXMLSetups.length-1 > testId) { // Yes we have another test to perform @@ -495,33 +508,41 @@ var testXML = testXMLSetups[testId]; xmlDoc.id = testXML.id; xmlDoc.repeatCount = testXML.attributes['repeatCount'].value; - + var trackSliderObjects = document.getElementsByClassName('track-slider'); + var commentObjects = document.getElementsByClassName('comment-div'); + var rateMin = 50; + var rateMax = window.innerWidth-50; + for (var i=0; i<trackSliderObjects.length; i++) + { + var audioElement = document.createElement('audioElement'); + audioElement.id = currentTrackOrder[i].attributes['id'].value; + audioElement.url = currentTrackOrder[i].attributes['url'].value; + var value = document.createElement("value"); + var rate = Number(trackSliderObjects[i].style.left.substr(0,trackSliderObjects[i].style.left.length-2)); + rate = (rate-rateMin)/rateMax; + value.innerHTML = Math.floor(rate*100); + var comment = document.createElement("comment"); + var question = document.createElement("question"); + var response = document.createElement("response"); + question.textContent = commentObjects[i].children[0].textContent; + response.textContent = commentObjects[i].children[2].value; + comment.appendChild(question); + comment.appendChild(response); + audioElement.appendChild(value); + audioElement.appendChild(comment); + xmlDoc.appendChild(audioElement); + } + testResultsHolders[testId] = xmlDoc; } // Only other global function which must be defined in the interface class. Determines how to create the XML document. function interfaceXMLSave(){ // Create the XML string to be exported with results var xmlDoc = document.createElement("BrowserEvaluationResult"); - var trackSliderObjects = document.getElementsByClassName('track-slider'); - var commentObjects = document.getElementsByClassName('trackComment'); - var rateMin = 50; - var rateMax = window.innerWidth-50; - for (var i=0; i<trackSliderObjects.length; i++) + for (var i=0; i<testResultsHolders.length; i++) { - var trackObj = document.createElement("audioElement"); - trackObj.id = i; - trackObj.url = audioEngineContext.audioObjects[i].url; - var slider = document.createElement("Rating"); - var rate = Number(trackSliderObjects[i].style.left.substr(0,trackSliderObjects[i].style.left.length-2)); - rate = (rate-rateMin)/rateMax; - slider.innerHTML = Math.floor(rate*100); - var comment = document.createElement("Comment"); - comment.innerHTML = commentObjects[i].value; - trackObj.appendChild(slider); - trackObj.appendChild(comment); - xmlDoc.appendChild(trackObj); + xmlDoc.appendChild(testResultsHolders[i]); } - // Append Pre/Post Questions xmlDoc.appendChild(preTestQuestions); xmlDoc.appendChild(postTestQuestions);
--- a/core.js Fri Apr 10 16:21:57 2015 +0100 +++ b/core.js Fri Apr 10 17:18:45 2015 +0100 @@ -25,6 +25,7 @@ var testXMLSetups = []; // Hold the parsed test instances var testResultsHolders =[]; // Hold the results from each test for publishing to XML +var currentTrackOrder = []; // Hold the current XML tracks in their (randomised) order var currentTestHolder; // Hold an intermediate results during test - metrics var audioEngineContext; // The custome AudioEngine object var projectReturn; // Hold the URL for the return
--- a/example_eval/project.xml Fri Apr 10 16:21:57 2015 +0100 +++ b/example_eval/project.xml Fri Apr 10 17:18:45 2015 +0100 @@ -18,17 +18,17 @@ </Metric> </setup> <audioHolder id='0' hostURL="example_eval/" sampleRate="44100" randomiseOrder='true' repeatCount='1'> - <audioElements url="0.wav" ID="0"/> - <audioElements url="1.wav"/> - <audioElements url="2.wav"/> - <audioElements url="3.wav"/> - <audioElements url="4.wav"/> - <audioElements url="5.wav"/> - <audioElements url="6.wav"/> - <audioElements url="7.wav"/> - <audioElements url="8.wav"/> - <audioElements url="9.wav"/> - <audioElements url="10.wav"/> + <audioElements url="0.wav" id="0"/> + <audioElements url="1.wav" id="1"/> + <audioElements url="2.wav" id="2"/> + <audioElements url="3.wav" id="3"/> + <audioElements url="4.wav" id="4"/> + <audioElements url="5.wav" id="5"/> + <audioElements url="6.wav" id="6"/> + <audioElements url="7.wav" id="7"/> + <audioElements url="8.wav" id="8"/> + <audioElements url="9.wav" id="9"/> + <audioElements url="10.wav" id="10"/> <CommentQuestion id='mixingExperiance'>What is your mixing experiance</CommentQuestion> <PreTest> <statement>Start the Test 3</statement>