# HG changeset patch # User Nicholas Jillings # Date 1449594934 0 # Node ID 3b97ee830b48c32659a7765f061e2d7b208ab032 # Parent 5995d8fe96eb8e0dbb419d992c3ae0c78b3dbe58 APE: Each slider now a JS object to ease metric tracking. Resize function fixed. diff -r 5995d8fe96eb -r 3b97ee830b48 ape.js --- a/ape.js Tue Dec 08 15:04:59 2015 +0000 +++ b/ape.js Tue Dec 08 17:15:34 2015 +0000 @@ -206,6 +206,9 @@ return this.objectMoved; }; + // Bindings for slider interfaces + Interface.prototype.interfaceSliders = []; + // Bindings for audioObjects // Create the top div for the Title element @@ -281,6 +284,8 @@ var height = window.innerHeight; var id = audioHolderObject.id; + interfaceContext.interfaceSliders = []; + var feedbackHolder = document.getElementById('feedbackHolder'); var sliderHolder = document.getElementById('slider-holder'); feedbackHolder.innerHTML = null; @@ -289,66 +294,7 @@ var interfaceObj = audioHolderObject.interfaces; for (var k=0; k'; - if (interfaceObjects[i].name != undefined) { - trackObj.setAttribute('interface-name',interfaceObjects[i].name); + if (this.name != undefined) { + trackObj.setAttribute('interface-name',this.name); } else { - trackObj.setAttribute('interface-name',i); + trackObj.setAttribute('interface-name',this.id); } - this.trackSliderObjects.push(trackObj); - var slider = document.getElementById("slider-"+trackObj.getAttribute("interface-name")); - var offset = Number(slider.attributes['marginsize'].value); + var offset = Number(this.canvas.attributes['marginsize'].value); // Distribute it randomnly var w = window.innerWidth - (offset+8)*2; w = Math.random()*w; w = Math.floor(w+(offset+8)); trackObj.style.left = w+'px'; - slider.appendChild(trackObj); + this.canvas.appendChild(trackObj); + this.sliders.push(trackObj); + return trackObj; + }; + + this.resize = function(event) + { + var holdValues = []; + for (var index = 0; index < this.sliders.length; index++) + { + holdValues.push(convSliderPosToRate(this.sliders[index])); + } + var width = event.target.innerWidth; + var sliderDiv = this.canvas; + var sliderScaleDiv = this.scale; + var marginsize = Number(sliderDiv.attributes['marginsize'].value); + var w = (marginsize+8)*2; + sliderDiv.style.width = width - w + 'px'; + var width = width - w; + // Move sliders into new position + for (var index = 0; index < this.sliders.length; index++) + { + var pos = holdValues[index]; + var pix = pos * width; + this.sliders[index].style.left = pix+marginsize+'px'; + } + + // Move scale labels + for (var index = 0; index < this.scale.children.length; index++) + { + var scaleObj = this.scale.children[index]; + var position = Number(scaleObj.attributes['value'].value); + var pixelPosition = (position*width)+marginsize; + scaleObj.style.left = Math.floor((pixelPosition-($(scaleObj).width()/2)))+'px'; + } + } +} + +function sliderObject(audioObject,interfaceObjects) { + // Create a new slider object; + this.parent = audioObject; + this.trackSliderObjects = []; + for (var i=0; i