Mercurial > hg > webaudioevaluationtool
comparison ape.js @ 1048:7a8fcf04aad3
Merge
author | Brecht De Man <BrechtDeMan@users.noreply.github.com> |
---|---|
date | Mon, 29 Jun 2015 19:04:40 +0100 |
parents | 8ab5f8969856 e74327737152 |
children | b7fd0296c6ab |
comparison
equal
deleted
inserted
replaced
885:ba83143187d6 | 1048:7a8fcf04aad3 |
---|---|
145 } | 145 } |
146 } | 146 } |
147 return state; | 147 return state; |
148 }; | 148 }; |
149 | 149 |
150 Interface.prototype.checkScaleRange = function() | |
151 { | |
152 var audioObjs = audioEngineContext.audioObjects; | |
153 var audioHolder = testState.stateMap[testState.stateIndex]; | |
154 var interfaces = audioHolder.interfaces; | |
155 | |
156 var minRanking = audioObjs[0].interfaceDOM.getValue(); | |
157 var maxRanking = minRanking; | |
158 | |
159 var minScale; | |
160 var maxScale; | |
161 for (var i=0; i<interfaces[0].options.length; i++) | |
162 { | |
163 if (interfaces[0].options[i].check == "scalerange") { | |
164 minScale = interfaces[0].options[i].min; | |
165 maxScale = interfaces[0].options[i].max; | |
166 } | |
167 } | |
168 | |
169 for (var i=1; i<audioObjs.length; i++){ | |
170 if (audioObjs[i].specification.type != 'outsidereference') { | |
171 var ranking = audioObjs[i].interfaceDOM.getValue(); | |
172 if (ranking < minRanking) { minRanking = ranking;} | |
173 if (ranking > maxRanking) { maxRanking = ranking;} | |
174 } | |
175 } | |
176 if (minRanking > minScale || maxRanking < maxScale) { | |
177 alert('Please use the full width of the scale'); | |
178 return false; | |
179 } else { | |
180 return true; | |
181 } | |
182 }; | |
183 | |
150 // Bindings for audioObjects | 184 // Bindings for audioObjects |
151 | 185 |
152 // Create the top div for the Title element | 186 // Create the top div for the Title element |
153 var titleAttr = specification.title; | 187 var titleAttr = specification.title; |
154 var title = document.createElement('div'); | 188 var title = document.createElement('div'); |
262 var feedbackHolder = document.getElementById('feedbackHolder'); | 296 var feedbackHolder = document.getElementById('feedbackHolder'); |
263 var canvas = document.getElementById('slider'); | 297 var canvas = document.getElementById('slider'); |
264 feedbackHolder.innerHTML = null; | 298 feedbackHolder.innerHTML = null; |
265 canvas.innerHTML = null; | 299 canvas.innerHTML = null; |
266 | 300 |
267 //var playbackHolder = document.createElement('div'); | 301 var playbackHolder = document.createElement('div'); |
268 //playbackHolder.style.width = "100%"; | 302 playbackHolder.style.width = "100%"; |
269 //playbackHolder.align = 'center'; | 303 playbackHolder.align = 'center'; |
270 //playbackHolder.appendChild(interfaceContext.playhead.object); | 304 playbackHolder.appendChild(interfaceContext.playhead.object); |
271 //feedbackHolder.appendChild(playbackHolder); | 305 feedbackHolder.appendChild(playbackHolder); |
272 // Setup question title | 306 // Setup question title |
273 var interfaceObj = audioHolderObject.interfaces; | 307 var interfaceObj = audioHolderObject.interfaces; |
274 var commentBoxPrefix = "Comment on track"; | 308 var commentBoxPrefix = "Comment on track"; |
275 if (interfaceObj.length != 0) { | 309 if (interfaceObj.length != 0) { |
276 interfaceObj = interfaceObj[0]; | 310 interfaceObj = interfaceObj[0]; |
321 | 355 |
322 currentTestHolder = document.createElement('audioHolder'); | 356 currentTestHolder = document.createElement('audioHolder'); |
323 currentTestHolder.id = audioHolderObject.id; | 357 currentTestHolder.id = audioHolderObject.id; |
324 currentTestHolder.repeatCount = audioHolderObject.repeatCount; | 358 currentTestHolder.repeatCount = audioHolderObject.repeatCount; |
325 | 359 |
326 var randomise = audioHolderObject.randomiseOrder; | |
327 | |
328 var audioElements = audioHolderObject.audioElements; | |
329 currentTrackOrder = []; | |
330 if (randomise) { | |
331 audioHolderObject.audioElements = randomiseOrder(audioHolderObject.audioElements); | |
332 } | |
333 | |
334 // Delete any previous audioObjects associated with the audioEngine | 360 // Delete any previous audioObjects associated with the audioEngine |
335 audioEngineContext.audioObjects = []; | 361 audioEngineContext.audioObjects = []; |
336 interfaceContext.deleteCommentBoxes(); | 362 interfaceContext.deleteCommentBoxes(); |
337 interfaceContext.deleteCommentQuestions(); | 363 interfaceContext.deleteCommentQuestions(); |
338 | 364 |
366 | 392 |
367 $(audioHolderObject.commentQuestions).each(function(index,element) { | 393 $(audioHolderObject.commentQuestions).each(function(index,element) { |
368 var node = interfaceContext.createCommentQuestion(element); | 394 var node = interfaceContext.createCommentQuestion(element); |
369 feedbackHolder.appendChild(node.holder); | 395 feedbackHolder.appendChild(node.holder); |
370 }); | 396 }); |
397 | |
398 // Construct outside reference; | |
399 if (audioHolderObject.outsideReference != null) { | |
400 var outsideReferenceHolder = document.createElement('div'); | |
401 outsideReferenceHolder.id = 'outside-reference'; | |
402 outsideReferenceHolderspan = document.createElement('span'); | |
403 outsideReferenceHolderspan.textContent = 'Reference'; | |
404 outsideReferenceHolder.appendChild(outsideReferenceHolderspan); | |
405 | |
406 var audioObject = audioEngineContext.newTrack(audioHolderObject.outsideReference); | |
407 | |
408 outsideReferenceHolder.onclick = function() | |
409 { | |
410 audioEngineContext.play(audioEngineContext.audioObjects.length-1); | |
411 $('.track-slider').removeClass('track-slider-playing'); | |
412 $('.comment-div').removeClass('comment-box-playing'); | |
413 if (event.srcElement.nodeName == 'DIV') { | |
414 $(event.srcElement).addClass('track-slider-playing'); | |
415 } else { | |
416 $(event.srcElement.parentElement).addClass('track-slider-playing'); | |
417 } | |
418 }; | |
419 | |
420 document.getElementById('interface-buttons').appendChild(outsideReferenceHolder); | |
421 } | |
371 | 422 |
372 | 423 |
373 testWaitIndicator(); | 424 testWaitIndicator(); |
374 } | 425 } |
375 | 426 |
406 //document.getElementById('track-slider-'+index).style.backgroundColor = "#FF0000"; | 457 //document.getElementById('track-slider-'+index).style.backgroundColor = "#FF0000"; |
407 $('.track-slider').removeClass('track-slider-playing'); | 458 $('.track-slider').removeClass('track-slider-playing'); |
408 $(element).addClass('track-slider-playing'); | 459 $(element).addClass('track-slider-playing'); |
409 $('.comment-div').removeClass('comment-box-playing'); | 460 $('.comment-div').removeClass('comment-box-playing'); |
410 $('#comment-div-'+id).addClass('comment-box-playing'); | 461 $('#comment-div-'+id).addClass('comment-box-playing'); |
462 var outsideReference = document.getElementById('outside-reference'); | |
463 if (outsideReference != undefined) | |
464 $(outsideReference).removeClass('track-slider-playing'); | |
411 } | 465 } |
412 }; | 466 }; |
413 | 467 |
414 this.exportXMLDOM = function(audioObject) { | 468 this.exportXMLDOM = function(audioObject) { |
415 // Called by the audioObject holding this element. Must be present | 469 // Called by the audioObject holding this element. Must be present |
443 audioEngineContext.audioObjects[id].metric.moved(time,convSliderPosToRate(ev.srcElement)); | 497 audioEngineContext.audioObjects[id].metric.moved(time,convSliderPosToRate(ev.srcElement)); |
444 } | 498 } |
445 | 499 |
446 function buttonSubmitClick() // TODO: Only when all songs have been played! | 500 function buttonSubmitClick() // TODO: Only when all songs have been played! |
447 { | 501 { |
448 var checks = specification.commonInterface.options; | 502 var checks = testState.currentStateMap[testState.currentIndex].interfaces[0].options; |
449 var canContinue = true; | 503 var canContinue = true; |
450 | 504 |
451 // Check that the anchor and reference objects are correctly placed | 505 // Check that the anchor and reference objects are correctly placed |
452 var audioObjs = audioEngineContext.audioObjects; | 506 if (interfaceContext.checkHiddenAnchor() == false) {return;} |
453 var audioHolder = testState.stateMap[testState.stateIndex]; | 507 if (interfaceContext.checkHiddenReference() == false) {return;} |
454 var anchorId = null; | |
455 var referenceId = null; | |
456 for (var i=0; i<audioObjs.length; i++) { | |
457 if (audioObjs[i].specification.anchor == true && anchorId == null) {anchorId = i;} | |
458 if (audioObjs[i].specification.reference == true && referenceId == null) {referenceId = i;} | |
459 } | |
460 if (anchorId != null) { | |
461 if (audioObjs[anchorId].specification.marker != null) { | |
462 if (audioObjs[anchorId].interfaceDOM.getValue() > audioObjs[anchorId].specification.marker) | |
463 { | |
464 // Anchor is not set below | |
465 console.log('Anchor node not below marker value'); | |
466 alert('Please keep listening'); | |
467 return; | |
468 } | |
469 } else { | |
470 // No marker value given, ensure it is the minimum value | |
471 var anchorVal = audioObjs[anchorId].interfaceDOM.getValue(); | |
472 for (var i=0; i<audioObjs.length; i++) { | |
473 if (i != anchorId) { | |
474 if (anchorVal > audioObjs[i].interfaceDOM.getValue()) { | |
475 // Anchor not the minimum | |
476 console.log('No marker set, anchor node not the minimum'); | |
477 alert('Please keep listening'); | |
478 return; | |
479 } | |
480 } | |
481 } | |
482 } | |
483 } | |
484 if (referenceId != null) { | |
485 if (audioObjs[referenceId].specification.marker != null) { | |
486 if (audioObjs[referenceId].interfaceDOM.getValue() < audioObjs[referenceId].specification.marker) | |
487 { | |
488 // Anchor is not set below | |
489 console.log('Reference node not above marker value'); | |
490 alert('Please keep listening'); | |
491 return; | |
492 } | |
493 } else { | |
494 // No marker value given, ensure it is the minimum value | |
495 var referenceVal = audioObjs[referenceId].interfaceDOM.getValue(); | |
496 for (var i=0; i<audioObjs.length; i++) { | |
497 if (i != referenceId) { | |
498 if (referenceVal > audioObjs[i].interfaceDOM.getValue()) { | |
499 // Anchor not the minimum | |
500 console.log('No marker set, reference node not the maximum'); | |
501 alert('Please keep listening'); | |
502 return; | |
503 } | |
504 } | |
505 } | |
506 } | |
507 } | |
508 | 508 |
509 for (var i=0; i<checks.length; i++) { | 509 for (var i=0; i<checks.length; i++) { |
510 if (checks[i].type == 'check') | 510 if (checks[i].type == 'check') |
511 { | 511 { |
512 switch(checks[i].check) { | 512 switch(checks[i].check) { |
529 case 'fragmentComments': | 529 case 'fragmentComments': |
530 // Check all fragment sliders have been moved. | 530 // Check all fragment sliders have been moved. |
531 var checkState = interfaceContext.checkAllCommented(); | 531 var checkState = interfaceContext.checkAllCommented(); |
532 if (checkState == false) {canContinue = false;} | 532 if (checkState == false) {canContinue = false;} |
533 break; | 533 break; |
534 } | 534 case 'scalerange': |
535 | 535 // Check the scale is used to its full width outlined by the node |
536 } | 536 var checkState = interfaceContext.checkScaleRange(); |
537 if (checkState == false) {canContinue = false;} | |
538 break; | |
539 } | |
540 | |
541 } | |
542 if (!canContinue) {break;} | |
537 } | 543 } |
538 | 544 |
539 if (canContinue) { | 545 if (canContinue) { |
540 if (audioEngineContext.status == 1) { | 546 if (audioEngineContext.status == 1) { |
541 var playback = document.getElementById('playback-button'); | 547 var playback = document.getElementById('playback-button'); |
616 xmlDoc.appendChild(metric); | 622 xmlDoc.appendChild(metric); |
617 var audioObjects = audioEngineContext.audioObjects; | 623 var audioObjects = audioEngineContext.audioObjects; |
618 for (var i=0; i<audioObjects.length; i++) | 624 for (var i=0; i<audioObjects.length; i++) |
619 { | 625 { |
620 var audioElement = audioEngineContext.audioObjects[i].exportXMLDOM(); | 626 var audioElement = audioEngineContext.audioObjects[i].exportXMLDOM(); |
627 audioElement.setAttribute('presentedId',i); | |
621 xmlDoc.appendChild(audioElement); | 628 xmlDoc.appendChild(audioElement); |
622 } | 629 } |
623 | 630 |
624 $(interfaceContext.commentQuestions).each(function(index,element){ | 631 $(interfaceContext.commentQuestions).each(function(index,element){ |
625 var node = element.exportXMLDOM(); | 632 var node = element.exportXMLDOM(); |