changeset 670:77c974fd7e60

Completed Handling of in-page pre/post responses
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Fri, 10 Apr 2015 17:43:53 +0100
parents c8eb821710fa
children 9ea50bbcaf9a
files ape.js core.js example_eval/project.xml
diffstat 3 files changed, 31 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/ape.js	Fri Apr 10 17:18:45 2015 +0100
+++ b/ape.js	Fri Apr 10 17:43:53 2015 +0100
@@ -208,6 +208,14 @@
 		}
 	}
 	
+	currentTestHolder = document.createElement('audioHolder');
+	currentTestHolder.id = textXML.id;
+	currentTestHolder.repeatCount = textXML.attributes['repeatCount'].value;
+	var currentPreTestHolder = document.createElement('preTest');
+	var currentPostTestHolder = document.createElement('postTest');
+	currentTestHolder.appendChild(currentPreTestHolder);
+	currentTestHolder.appendChild(currentPostTestHolder);
+	
 	var randomise = textXML.attributes['randomiseOrder'];
 	if (randomise != undefined) {randomise = randomise.value;}
 	else {randomise = false;}
@@ -360,11 +368,7 @@
 		var questionResponse = document.getElementById(questionId + 'response');
 		questionHold.id = questionId;
 		questionHold.innerHTML = questionResponse.value;
-		if (currentState == 'preTest') {
-			preTestQuestions.appendChild(questionHold);
-		} else if (currentState = 'postTest') {  
-			postTestQuestions.appendChild(questionHold);
-		}
+		postPopupResponse(questionHold);
 	}
 	index++;
 	if (index < preTest.children.length)
@@ -401,6 +405,25 @@
 	return index;
 }
 
+function postPopupResponse(response)
+{
+	if (currentState == 'preTest') {
+		preTestQuestions.appendChild(response);
+	} else if (currentState == 'postTest') {  
+		postTestQuestions.appendChild(response);
+	} else {
+		// Inside a specific test
+		if (currentState.substr(0,10) == 'testRunPre') {
+			// Pre Test
+			var store = $(currentTestHolder).find('preTest');
+		} else {
+			// Post Test
+			var store = $(currentTestHolder).find('postTest');
+		}
+		store[0].appendChild(response);
+	}
+}
+
 function showPopup()
 {
 	var popupHolder = document.getElementById('popupHolder');
@@ -504,10 +527,7 @@
 function pageXMLSave(testId)
 {
 	// Saves a specific test page
-	var xmlDoc = document.createElement("AudioHolder");
-	var testXML = testXMLSetups[testId];
-	xmlDoc.id = testXML.id;
-	xmlDoc.repeatCount = testXML.attributes['repeatCount'].value;
+	var xmlDoc = currentTestHolder;
 	var trackSliderObjects = document.getElementsByClassName('track-slider');
 	var commentObjects = document.getElementsByClassName('comment-div');
 	var rateMin = 50;
--- a/core.js	Fri Apr 10 17:18:45 2015 +0100
+++ b/core.js	Fri Apr 10 17:43:53 2015 +0100
@@ -26,7 +26,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 currentTestHolder; // Hold any intermediate results during test - metrics
 var audioEngineContext; // The custome AudioEngine object
 var projectReturn; // Hold the URL for the return
 var preTestQuestions = document.createElement('PreTest'); // Store any pre-test question response
--- a/example_eval/project.xml	Fri Apr 10 17:18:45 2015 +0100
+++ b/example_eval/project.xml	Fri Apr 10 17:43:53 2015 +0100
@@ -32,11 +32,10 @@
 		<CommentQuestion id='mixingExperiance'>What is your mixing experiance</CommentQuestion>
 		<PreTest>
 			<statement>Start the Test 3</statement>
-			<statement>Start the Test 2</statement>
-			<statement>Start the Test 1</statement>
 		</PreTest>
 		<PostTest>
 			<statement>Please take a break before the next test</statement>
+			<question id="testComment">How did you find the test</question>
 		</PostTest>
 	</audioHolder>
 </BrowserEvalProjectDocument>
\ No newline at end of file