# HG changeset patch # User Nicholas Jillings # Date 1449829347 0 # Node ID 1e176e95ef33b10a2f26888e8c63a66ffb0461c1 # Parent 0ec386b7392167315f54a1c8399ab9cb6216f850# Parent 18dc725bb5c222e67a50610c09eeb8d44e7d4add Merge diff -r 18dc725bb5c2 -r 1e176e95ef33 ape.js --- a/ape.js Tue Dec 08 22:13:14 2015 +0100 +++ b/ape.js Fri Dec 11 10:22:27 2015 +0000 @@ -18,39 +18,6 @@ var testContent = document.createElement('div'); testContent.id = 'testContent'; - - - // Create APE specific metric functions - audioEngineContext.metric.initialiseTest = function() - { - }; - - audioEngineContext.metric.sliderMoved = function() - { - var id = this.data; - this.data = -1; - var position = convSliderPosToRate(id); - console.log('slider ' + id + ': '+ position + ' (' + time + ')'); // DEBUG/SAFETY: show position and slider id - if (audioEngineContext.timer.testStarted) - { - audioEngineContext.audioObjects[id].metric.moved(time,position); - } - }; - - audioEngineContext.metric.sliderPlayed = function(id) - { - var time = audioEngineContext.timer.getTestTime(); - if (audioEngineContext.timer.testStarted) - { - if (this.lastClicked >= 0) - { - audioEngineContext.audioObjects[this.lastClicked].metric.listening(time); - } - this.lastClicked = id; - audioEngineContext.audioObjects[id].metric.listening(time); - } - console.log('slider ' + id + ' played (' + time + ')'); // DEBUG/SAFETY: show played slider id - }; // Bindings for interfaceContext Interface.prototype.checkAllPlayed = function() @@ -206,6 +173,9 @@ return this.objectMoved; }; + // Bindings for slider interfaces + Interface.prototype.interfaceSliders = []; + // Bindings for audioObjects // Create the top div for the Title element @@ -281,6 +251,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 +261,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); + this.metrics.push(new metricTracker(this)); + this.metrics[this.metrics.length-1].initialPosition = convSliderPosToRate(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 saves + // Get the current information in store (remember to appendChild your data to it) + var audioelements = store.getElementsByTagName("audioelement"); + for (var i=0; i