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 }