Mercurial > hg > webaudioevaluationtool
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 }; |