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>