Mercurial > hg > webaudioevaluationtool
comparison interfaces/ape.js @ 2391:521e828089eb
Fix for #77
author | Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk> |
---|---|
date | Wed, 25 May 2016 16:31:50 +0100 |
parents | 5b23f2e05207 |
children | dc13bd68ea34 |
comparison
equal
deleted
inserted
replaced
2390:32f077f5849a | 2391:521e828089eb |
---|---|
414 var time = audioEngineContext.timer.getTestTime(); | 414 var time = audioEngineContext.timer.getTestTime(); |
415 var rate = convSliderPosToRate(obj); | 415 var rate = convSliderPosToRate(obj); |
416 audioEngineContext.audioObjects[id].metric.moved(time,rate); | 416 audioEngineContext.audioObjects[id].metric.moved(time,rate); |
417 interfaceContext.interfaceSliders[interfaceID].metrics[trackID].moved(time,rate); | 417 interfaceContext.interfaceSliders[interfaceID].metrics[trackID].moved(time,rate); |
418 console.log("slider "+id+" moved to "+rate+' ('+time+')'); | 418 console.log("slider "+id+" moved to "+rate+' ('+time+')'); |
419 obj.setAttribute("slider-value",convSliderPosToRate(obj)); | |
419 } else { | 420 } else { |
420 var id = Number(obj.attributes['trackIndex'].value); | 421 var id = Number(obj.attributes['trackIndex'].value); |
421 //audioEngineContext.metric.sliderPlayed(id); | 422 //audioEngineContext.metric.sliderPlayed(id); |
422 audioEngineContext.play(id); | 423 audioEngineContext.play(id); |
423 } | 424 } |
494 event.preventDefault(); | 495 event.preventDefault(); |
495 event.dataTransfer.effectAllowed = 'none'; | 496 event.dataTransfer.effectAllowed = 'none'; |
496 event.dataTransfer.dropEffect = 'copy'; | 497 event.dataTransfer.dropEffect = 'copy'; |
497 return false; | 498 return false; |
498 },false); | 499 },false); |
499 var sliderMargin = document.createAttribute('marginsize'); | |
500 sliderMargin.nodeValue = 42; // Set default margins to 42px either side | |
501 // Must have a known EXACT width, as this is used later to determine the ratings | |
502 var w = (Number(sliderMargin.nodeValue)+8)*2; | |
503 this.canvas.style.width = window.innerWidth - w +"px"; | |
504 this.canvas.style.marginLeft = sliderMargin.nodeValue +'px'; | |
505 this.canvas.setAttributeNode(sliderMargin); | |
506 this.sliderDOM.appendChild(this.canvas); | 500 this.sliderDOM.appendChild(this.canvas); |
507 | 501 |
508 // Create the div to hold any scale objects | 502 // Create the div to hold any scale objects |
509 this.scale = document.createElement('div'); | 503 this.scale = document.createElement('div'); |
510 this.scale.className = 'sliderScale'; | 504 this.scale.className = 'sliderScale'; |
511 this.scale.id = 'sliderScaleHolder-'+this.id; | 505 this.scale.id = 'sliderScaleHolder-'+this.id; |
512 this.scale.align = 'left'; | 506 this.scale.align = 'left'; |
513 this.sliderDOM.appendChild(this.scale); | 507 this.sliderDOM.appendChild(this.scale); |
514 var positionScale = this.canvas.style.width.substr(0,this.canvas.style.width.length-2); | 508 var positionScale = this.canvas.style.width.substr(0,this.canvas.style.width.length-2); |
515 var offset = Number(this.canvas.attributes['marginsize'].value); | 509 var offset = 50; |
516 var dest = document.getElementById("slider-holder").appendChild(this.sliderDOM); | 510 var dest = document.getElementById("slider-holder").appendChild(this.sliderDOM); |
517 for (var scaleObj of interfaceObject.scales) | 511 for (var scaleObj of interfaceObject.scales) |
518 { | 512 { |
519 var position = Number(scaleObj.position)*0.01; | 513 var position = Number(scaleObj.position)*0.01; |
520 var pixelPosition = (position*$(this.canvas).width())+offset; | 514 var pixelPosition = (position*$(this.canvas).width())+offset; |
521 var scaleDOM = document.createElement('span'); | 515 var scaleDOM = document.createElement('span'); |
516 scaleDOM.className = "ape-marker-text"; | |
522 scaleDOM.textContent = scaleObj.text; | 517 scaleDOM.textContent = scaleObj.text; |
523 scaleDOM.setAttribute('value',position) | 518 scaleDOM.setAttribute('value',position) |
524 this.scale.appendChild(scaleDOM); | 519 this.scale.appendChild(scaleDOM); |
525 scaleDOM.style.left = Math.floor((pixelPosition-($(scaleDOM).width()/2)))+'px'; | 520 scaleDOM.style.left = Math.floor((pixelPosition-($(scaleDOM).width()/2)))+'px'; |
526 } | 521 } |
535 if (this.name != undefined) { | 530 if (this.name != undefined) { |
536 trackObj.setAttribute('interface-name',this.name); | 531 trackObj.setAttribute('interface-name',this.name); |
537 } else { | 532 } else { |
538 trackObj.setAttribute('interface-name',this.id); | 533 trackObj.setAttribute('interface-name',this.id); |
539 } | 534 } |
540 var offset = Number(this.canvas.attributes['marginsize'].value); | 535 var offset = 50; |
541 // Distribute it randomnly | 536 // Distribute it randomnly |
542 var w = window.innerWidth - (offset+8)*2; | 537 var w = window.innerWidth - (offset+8)*2; |
543 w = Math.random()*w; | 538 w = Math.random()*w; |
544 w = Math.floor(w+(offset+8)); | 539 w = Math.floor(w+(offset+8)); |
545 trackObj.style.left = w+'px'; | 540 trackObj.style.left = w+'px'; |
547 this.sliders.push(trackObj); | 542 this.sliders.push(trackObj); |
548 this.metrics.push(new metricTracker(this)); | 543 this.metrics.push(new metricTracker(this)); |
549 var labelHolder = document.createElement("span"); | 544 var labelHolder = document.createElement("span"); |
550 labelHolder.textContent = label; | 545 labelHolder.textContent = label; |
551 trackObj.appendChild(labelHolder); | 546 trackObj.appendChild(labelHolder); |
552 this.metrics[this.metrics.length-1].initialise(convSliderPosToRate(trackObj)); | 547 var rate = convSliderPosToRate(trackObj); |
548 this.metrics[this.metrics.length-1].initialise(rate); | |
549 trackObj.setAttribute("slider-value",rate); | |
553 return trackObj; | 550 return trackObj; |
554 }; | 551 }; |
555 | 552 |
556 this.resize = function(event) | 553 this.resize = function(event) |
557 { | 554 { |
558 var holdValues = []; | 555 var width = window.innerWidth; |
559 for (var index = 0; index < this.sliders.length; index++) | |
560 { | |
561 holdValues.push(convSliderPosToRate(this.sliders[index])); | |
562 } | |
563 var width = event.target.innerWidth; | |
564 var sliderDiv = this.canvas; | 556 var sliderDiv = this.canvas; |
565 var sliderScaleDiv = this.scale; | 557 var sliderScaleDiv = this.scale; |
566 var marginsize = Number(sliderDiv.attributes['marginsize'].value); | 558 var width = $(sliderDiv).width(); |
567 var w = (marginsize+8)*2; | 559 var marginsize = 50; |
568 sliderDiv.style.width = width - w + 'px'; | |
569 var width = width - w; | |
570 // Move sliders into new position | 560 // Move sliders into new position |
571 for (var index = 0; index < this.sliders.length; index++) | 561 for (var index = 0; index < this.sliders.length; index++) |
572 { | 562 { |
573 var pos = holdValues[index]; | 563 var pix = Number(this.sliders[index].getAttribute("slider-value")) * width; |
574 var pix = pos * width; | 564 this.sliders[index].style.left = (pix+marginsize)+'px'; |
575 this.sliders[index].style.left = pix+marginsize+'px'; | |
576 } | 565 } |
577 | 566 |
578 // Move scale labels | 567 // Move scale labels |
579 for (var index = 0; index < this.scale.children.length; index++) | 568 for (var index = 0; index < this.scale.children.length; index++) |
580 { | 569 { |
820 } | 809 } |
821 | 810 |
822 function convSliderPosToRate(trackSlider) | 811 function convSliderPosToRate(trackSlider) |
823 { | 812 { |
824 var slider = trackSlider.parentElement; | 813 var slider = trackSlider.parentElement; |
825 var w = slider.style.width; | 814 var maxPix = $(slider).width(); |
826 var marginsize = Number(slider.attributes['marginsize'].value); | 815 var marginsize = 50; |
827 var maxPix = w.substr(0,w.length-2); | |
828 var pix = trackSlider.style.left; | 816 var pix = trackSlider.style.left; |
829 pix = pix.substr(0,pix.length-2); | 817 pix = pix.substr(0,pix.length-2); |
830 var rate = (pix-marginsize)/maxPix; | 818 var rate = (pix-marginsize)/maxPix; |
831 return rate; | 819 return rate; |
832 } | 820 } |