Mercurial > hg > webaudioevaluationtool
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; |