Mercurial > hg > webaudioevaluationtool
comparison ape.js @ 1467:1360ab96b10b
EXPERIMENTAL! New APE drag interface. Testing for OSX
author | Nicholas Jillings <nickjillings@users.noreply.github.com> |
---|---|
date | Fri, 27 Nov 2015 10:23:47 +0000 |
parents | ffb7f1c1f97c |
children | 758ddd9cde2c |
comparison
equal
deleted
inserted
replaced
1466:a00c7be67424 | 1467:1360ab96b10b |
---|---|
4 */ | 4 */ |
5 | 5 |
6 | 6 |
7 // Once this is loaded and parsed, begin execution | 7 // Once this is loaded and parsed, begin execution |
8 loadInterface(); | 8 loadInterface(); |
9 | |
10 var clicking = -1; | |
9 | 11 |
10 function loadInterface() { | 12 function loadInterface() { |
11 | 13 |
12 // Get the dimensions of the screen available to the page | 14 // Get the dimensions of the screen available to the page |
13 var width = window.innerWidth; | 15 var width = window.innerWidth; |
366 | 368 |
367 var loopPlayback = audioHolderObject.loop; | 369 var loopPlayback = audioHolderObject.loop; |
368 | 370 |
369 audioEngineContext.loopPlayback = loopPlayback; | 371 audioEngineContext.loopPlayback = loopPlayback; |
370 // Create AudioEngine bindings for playback | 372 // Create AudioEngine bindings for playback |
371 audioEngineContext.selectedTrack = function(id) { | |
372 console.log('Deprecated'); | |
373 }; | |
374 | 373 |
375 currentTestHolder = document.createElement('audioHolder'); | 374 currentTestHolder = document.createElement('audioHolder'); |
376 currentTestHolder.id = audioHolderObject.id; | 375 currentTestHolder.id = audioHolderObject.id; |
377 currentTestHolder.repeatCount = audioHolderObject.repeatCount; | 376 currentTestHolder.repeatCount = audioHolderObject.repeatCount; |
378 | 377 |
403 | 402 |
404 canvas.appendChild(audioObject.interfaceDOM.trackSliderObj); | 403 canvas.appendChild(audioObject.interfaceDOM.trackSliderObj); |
405 audioObject.metric.initialised(convSliderPosToRate(audioObject.interfaceDOM.trackSliderObj)); | 404 audioObject.metric.initialised(convSliderPosToRate(audioObject.interfaceDOM.trackSliderObj)); |
406 | 405 |
407 }); | 406 }); |
407 | |
408 $('.track-slider').mousedown(function() { | |
409 clicking = this.getAttribute('trackIndex'); | |
410 }); | |
411 | |
412 $('#slider').mousemove(function(event) { | |
413 event.preventDefault(); | |
414 if (clicking == -1) | |
415 { | |
416 return; | |
417 } | |
418 $("#track-slider-"+clicking).css("left",event.clientX + "px"); | |
419 }); | |
420 | |
421 $(document).mouseup(function(event){ | |
422 if (clicking >= 0) | |
423 { | |
424 var l = $("#track-slider-"+clicking).css("left"); | |
425 var time = audioEngineContext.timer.getTestTime(); | |
426 var rate = convSliderPosToRate(document.getElementById("track-slider-"+clicking)); | |
427 audioEngineContext.audioObjects[clicking].metric.moved(time,rate); | |
428 console.log("slider "+clicking+" moved to "+rate+' ('+time+')'); | |
429 } | |
430 clicking = -1; | |
431 }); | |
432 | |
433 | |
408 if (commentShow) { | 434 if (commentShow) { |
409 interfaceContext.showCommentBoxes(feedbackHolder,true); | 435 interfaceContext.showCommentBoxes(feedbackHolder,true); |
410 } | 436 } |
411 | 437 |
412 $(audioHolderObject.commentQuestions).each(function(index,element) { | 438 $(audioHolderObject.commentQuestions).each(function(index,element) { |
450 this.trackSliderObj.className = 'track-slider track-slider-disabled'; | 476 this.trackSliderObj.className = 'track-slider track-slider-disabled'; |
451 this.trackSliderObj.id = 'track-slider-'+audioObject.id; | 477 this.trackSliderObj.id = 'track-slider-'+audioObject.id; |
452 | 478 |
453 this.trackSliderObj.setAttribute('trackIndex',audioObject.id); | 479 this.trackSliderObj.setAttribute('trackIndex',audioObject.id); |
454 this.trackSliderObj.innerHTML = '<span>'+audioObject.id+'</span>'; | 480 this.trackSliderObj.innerHTML = '<span>'+audioObject.id+'</span>'; |
455 this.trackSliderObj.draggable = true; | |
456 this.trackSliderObj.ondragend = dragEnd; | |
457 | |
458 this.trackSliderObj.ondragstart = function(event){ | |
459 event.dataTransfer.setData('Text',null); | |
460 }; | |
461 | |
462 this.trackSliderObj.ondrop = function(event) | |
463 { | |
464 if(event.stopPropagation) {event.stopPropagation();} | |
465 return false; | |
466 }; | |
467 | 481 |
468 // Onclick, switch playback to that track | 482 // Onclick, switch playback to that track |
469 this.trackSliderObj.onclick = function(event) { | 483 this.trackSliderObj.onclick = function(event) { |
470 // Cannot continue to issue play command until audioObjects reported as ready! | 484 // Cannot continue to issue play command until audioObjects reported as ready! |
471 // Get the track ID from the object ID | 485 // Get the track ID from the object ID |
504 return node; | 518 return node; |
505 }; | 519 }; |
506 this.getValue = function() { | 520 this.getValue = function() { |
507 return convSliderPosToRate(this.trackSliderObj); | 521 return convSliderPosToRate(this.trackSliderObj); |
508 }; | 522 }; |
509 } | |
510 | |
511 function dragEnd(ev) { | |
512 // Function call when a div has been dropped | |
513 var slider = document.getElementById('slider'); | |
514 var marginSize = Number(slider.attributes['marginsize'].value); | |
515 var w = slider.style.width; | |
516 w = Number(w.substr(0,w.length-2)); | |
517 var x | |
518 if (navigator.platform.substr(0,3) == "Win") | |
519 { | |
520 x = ev.screenX; | |
521 x -= Math.abs(window.screenX); | |
522 x = x % window.outerWidth; | |
523 } else | |
524 x = ev.clientX; | |
525 | |
526 if (x >= marginSize && x < w+marginSize) { | |
527 this.style.left = (x)+'px'; | |
528 } else { | |
529 if (x<marginSize) { | |
530 this.style.left = marginSize+'px'; | |
531 } else { | |
532 this.style.left = (w+marginSize) + 'px'; | |
533 } | |
534 } | |
535 var time = audioEngineContext.timer.getTestTime(); | |
536 var id = Number(ev.currentTarget.getAttribute('trackindex')); | |
537 audioEngineContext.audioObjects[id].metric.moved(time,convSliderPosToRate(ev.currentTarget)); | |
538 console.log('slider '+id+' moved to '+convSliderPosToRate(ev.currentTarget)+' ('+time+')'); | |
539 } | 523 } |
540 | 524 |
541 function buttonSubmitClick() | 525 function buttonSubmitClick() |
542 { | 526 { |
543 var checks = testState.currentStateMap[testState.currentIndex].interfaces[0].options; | 527 var checks = testState.currentStateMap[testState.currentIndex].interfaces[0].options; |