comparison interfaces/ape.js @ 2168:af79a7f6a38b

Possible fix for #1673 and #1674
author Nicholas Jillings <nickjillings@users.noreply.github.com>
date Mon, 21 Mar 2016 14:31:43 +0000
parents 686f1fb84d7c
children ea5e6e480866
comparison
equal deleted inserted replaced
2167:251c167bf42e 2168:af79a7f6a38b
352 // Construct outside reference; 352 // Construct outside reference;
353 var orNode = new outsideReferenceDOM(audioObject,index,document.getElementById('interface-buttons')); 353 var orNode = new outsideReferenceDOM(audioObject,index,document.getElementById('interface-buttons'));
354 audioObject.bindInterface(orNode); 354 audioObject.bindInterface(orNode);
355 } else { 355 } else {
356 // Create a slider per track 356 // Create a slider per track
357 var sliderNode = new sliderObject(audioObject,interfaceObj); 357 var sliderNode = new sliderObject(audioObject,interfaceObj,index);
358 audioObject.bindInterface(sliderNode); 358 audioObject.bindInterface(sliderNode);
359 interfaceContext.commentBoxes.createCommentBox(audioObject); 359 interfaceContext.commentBoxes.createCommentBox(audioObject);
360 } 360 }
361 }); 361 });
362 362
512 scaleDOM.setAttribute('value',position) 512 scaleDOM.setAttribute('value',position)
513 this.scale.appendChild(scaleDOM); 513 this.scale.appendChild(scaleDOM);
514 scaleDOM.style.left = Math.floor((pixelPosition-($(scaleDOM).width()/2)))+'px'; 514 scaleDOM.style.left = Math.floor((pixelPosition-($(scaleDOM).width()/2)))+'px';
515 } 515 }
516 516
517 this.createSliderObject = function(audioObject) 517 this.createSliderObject = function(audioObject,label)
518 { 518 {
519 var trackObj = document.createElement('div'); 519 var trackObj = document.createElement('div');
520 trackObj.align = "center"; 520 trackObj.align = "center";
521 trackObj.className = 'track-slider track-slider-disabled track-slider-'+audioObject.id; 521 trackObj.className = 'track-slider track-slider-disabled track-slider-'+audioObject.id;
522 trackObj.id = 'track-slider-'+this.id+'-'+audioObject.id; 522 trackObj.id = 'track-slider-'+this.id+'-'+audioObject.id;
533 w = Math.floor(w+(offset+8)); 533 w = Math.floor(w+(offset+8));
534 trackObj.style.left = w+'px'; 534 trackObj.style.left = w+'px';
535 this.canvas.appendChild(trackObj); 535 this.canvas.appendChild(trackObj);
536 this.sliders.push(trackObj); 536 this.sliders.push(trackObj);
537 this.metrics.push(new metricTracker(this)); 537 this.metrics.push(new metricTracker(this));
538 var label = document.createElement("label"); 538 var labelHolder = document.createElement("span");
539 switch(audioObject.specification.parent.label) { 539 labelHolder.textContent = label;
540 case "letter": 540 trackObj.appendChild(labelHolder);
541 label.textContent = String.fromCharCode(97 + this.metrics.length-1);
542 break;
543 case "capital":
544 label.textContent = String.fromCharCode(65 + this.metrics.length-1);
545 break;
546 case "none":
547 label.textContent = "";
548 break;
549 default:
550 label.textContent = ""+this.metrics.length;
551 break;
552 }
553 trackObj.appendChild(label);
554 this.metrics[this.metrics.length-1].initialise(convSliderPosToRate(trackObj)); 541 this.metrics[this.metrics.length-1].initialise(convSliderPosToRate(trackObj));
555 return trackObj; 542 return trackObj;
556 }; 543 };
557 544
558 this.resize = function(event) 545 this.resize = function(event)
586 scaleObj.style.left = Math.floor((pixelPosition-($(scaleObj).width()/2)))+'px'; 573 scaleObj.style.left = Math.floor((pixelPosition-($(scaleObj).width()/2)))+'px';
587 } 574 }
588 }; 575 };
589 } 576 }
590 577
591 function sliderObject(audioObject,interfaceObjects) { 578 function sliderObject(audioObject,interfaceObjects,index) {
592 // Create a new slider object; 579 // Create a new slider object;
593 this.parent = audioObject; 580 this.parent = audioObject;
594 this.trackSliderObjects = []; 581 this.trackSliderObjects = [];
582 this.label = null;
583 switch(audioObject.specification.parent.label) {
584 case "letter":
585 this.label = String.fromCharCode(97 + index);
586 break;
587 case "capital":
588 this.label = String.fromCharCode(65 + index);
589 break;
590 case "none":
591 this.label = "";
592 break;
593 default:
594 this.label = ""+(index+1);
595 break;
596 }
595 for (var i=0; i<interfaceContext.interfaceSliders.length; i++) 597 for (var i=0; i<interfaceContext.interfaceSliders.length; i++)
596 { 598 {
597 var trackObj = interfaceContext.interfaceSliders[i].createSliderObject(audioObject); 599 var trackObj = interfaceContext.interfaceSliders[i].createSliderObject(audioObject,this.label);
598 this.trackSliderObjects.push(trackObj); 600 this.trackSliderObjects.push(trackObj);
599 } 601 }
600 602
601 // Onclick, switch playback to that track 603 // Onclick, switch playback to that track
602 604
651 this.getValue = function() { 653 this.getValue = function() {
652 return convSliderPosToRate(this.trackSliderObjects[0]); 654 return convSliderPosToRate(this.trackSliderObjects[0]);
653 }; 655 };
654 this.getPresentedId = function() 656 this.getPresentedId = function()
655 { 657 {
656 return this.trackSliderObjects[0].children[0].textContent; 658 return this.label;
657 }; 659 };
658 this.canMove = function() 660 this.canMove = function()
659 { 661 {
660 return true; 662 return true;
661 }; 663 };