comparison ape.js @ 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
comparison
equal deleted inserted replaced
668:6455bee85090 669:c8eb821710fa
49 testXMLSetups[testXMLSetups.length] = element; 49 testXMLSetups[testXMLSetups.length] = element;
50 } 50 }
51 }); 51 });
52 52
53 // New check if we need to randomise the test order 53 // New check if we need to randomise the test order
54 var randomise = xmlSetup.attributes['randomiseOrder']; 54 var randomise = xmlSetup[0].attributes['randomiseOrder'];
55 if (randomise != undefine) { 55 if (randomise != undefined) {
56 randomise = Boolean(randomise.value); 56 randomise = Boolean(randomise.value);
57 } else { 57 } else {
58 randomise = false; 58 randomise = false;
59 } 59 }
60 if (randomise) 60 if (randomise)
205 var errStr = 'Sample rates do not match! Requested '+Number(hostFs)+', got '+audioContext.sampleRate+'. Please set the sample rate to match before completing this test.'; 205 var errStr = 'Sample rates do not match! Requested '+Number(hostFs)+', got '+audioContext.sampleRate+'. Please set the sample rate to match before completing this test.';
206 alert(errStr); 206 alert(errStr);
207 return; 207 return;
208 } 208 }
209 } 209 }
210 // Find all the audioElements from the audioHolder 210
211 var randomise = textXML.attributes['randomiseOrder'];
212 if (randomise != undefined) {randomise = randomise.value;}
213 else {randomise = false;}
214
211 var audioElements = $(textXML).find('audioElements'); 215 var audioElements = $(textXML).find('audioElements');
212 audioElements.each(function(index,element){ 216 audioElements.each(function(index,element){
217 // Find any blind-repeats
218 // Not implemented yet, but just incase
219 currentTrackOrder[index] = element;
220 });
221 if (randomise) {
222 // TODO: Randomise order
223 }
224
225 // Find all the audioElements from the audioHolder
226 $(currentTrackOrder).each(function(index,element){
213 // Find URL of track 227 // Find URL of track
214 // In this jQuery loop, variable 'this' holds the current audioElement. 228 // In this jQuery loop, variable 'this' holds the current audioElement.
215 229
216 // Now load each audio sample. First create the new track by passing the full URL 230 // Now load each audio sample. First create the new track by passing the full URL
217 var trackURL = hostURL + this.attributes['url'].value; 231 var trackURL = hostURL + this.attributes['url'].value;
458 console.log(currentState); 472 console.log(currentState);
459 } 473 }
460 474
461 function testEnded(testId) 475 function testEnded(testId)
462 { 476 {
463 var xmlDoc = interfaceXMLSave(); 477 pageXMLSave(testId);
464 testResultsHolders;
465 if (testXMLSetups.length-1 > testId) 478 if (testXMLSetups.length-1 > testId)
466 { 479 {
467 // Yes we have another test to perform 480 // Yes we have another test to perform
468 testId = (Number(testId)+1); 481 testId = (Number(testId)+1);
469 currentState = 'testRun-'+testId; 482 currentState = 'testRun-'+testId;
493 // Saves a specific test page 506 // Saves a specific test page
494 var xmlDoc = document.createElement("AudioHolder"); 507 var xmlDoc = document.createElement("AudioHolder");
495 var testXML = testXMLSetups[testId]; 508 var testXML = testXMLSetups[testId];
496 xmlDoc.id = testXML.id; 509 xmlDoc.id = testXML.id;
497 xmlDoc.repeatCount = testXML.attributes['repeatCount'].value; 510 xmlDoc.repeatCount = testXML.attributes['repeatCount'].value;
498 511 var trackSliderObjects = document.getElementsByClassName('track-slider');
512 var commentObjects = document.getElementsByClassName('comment-div');
513 var rateMin = 50;
514 var rateMax = window.innerWidth-50;
515 for (var i=0; i<trackSliderObjects.length; i++)
516 {
517 var audioElement = document.createElement('audioElement');
518 audioElement.id = currentTrackOrder[i].attributes['id'].value;
519 audioElement.url = currentTrackOrder[i].attributes['url'].value;
520 var value = document.createElement("value");
521 var rate = Number(trackSliderObjects[i].style.left.substr(0,trackSliderObjects[i].style.left.length-2));
522 rate = (rate-rateMin)/rateMax;
523 value.innerHTML = Math.floor(rate*100);
524 var comment = document.createElement("comment");
525 var question = document.createElement("question");
526 var response = document.createElement("response");
527 question.textContent = commentObjects[i].children[0].textContent;
528 response.textContent = commentObjects[i].children[2].value;
529 comment.appendChild(question);
530 comment.appendChild(response);
531 audioElement.appendChild(value);
532 audioElement.appendChild(comment);
533 xmlDoc.appendChild(audioElement);
534 }
535 testResultsHolders[testId] = xmlDoc;
499 } 536 }
500 537
501 // Only other global function which must be defined in the interface class. Determines how to create the XML document. 538 // Only other global function which must be defined in the interface class. Determines how to create the XML document.
502 function interfaceXMLSave(){ 539 function interfaceXMLSave(){
503 // Create the XML string to be exported with results 540 // Create the XML string to be exported with results
504 var xmlDoc = document.createElement("BrowserEvaluationResult"); 541 var xmlDoc = document.createElement("BrowserEvaluationResult");
505 var trackSliderObjects = document.getElementsByClassName('track-slider'); 542 for (var i=0; i<testResultsHolders.length; i++)
506 var commentObjects = document.getElementsByClassName('trackComment'); 543 {
507 var rateMin = 50; 544 xmlDoc.appendChild(testResultsHolders[i]);
508 var rateMax = window.innerWidth-50; 545 }
509 for (var i=0; i<trackSliderObjects.length; i++)
510 {
511 var trackObj = document.createElement("audioElement");
512 trackObj.id = i;
513 trackObj.url = audioEngineContext.audioObjects[i].url;
514 var slider = document.createElement("Rating");
515 var rate = Number(trackSliderObjects[i].style.left.substr(0,trackSliderObjects[i].style.left.length-2));
516 rate = (rate-rateMin)/rateMax;
517 slider.innerHTML = Math.floor(rate*100);
518 var comment = document.createElement("Comment");
519 comment.innerHTML = commentObjects[i].value;
520 trackObj.appendChild(slider);
521 trackObj.appendChild(comment);
522 xmlDoc.appendChild(trackObj);
523 }
524
525 // Append Pre/Post Questions 546 // Append Pre/Post Questions
526 xmlDoc.appendChild(preTestQuestions); 547 xmlDoc.appendChild(preTestQuestions);
527 xmlDoc.appendChild(postTestQuestions); 548 xmlDoc.appendChild(postTestQuestions);
528 549
529 return xmlDoc; 550 return xmlDoc;