Mercurial > hg > webaudioevaluationtool
changeset 51:cada56696a15 Dev_main
Refined metric collection. Rating now correct. Slider scale now fully bounded
author | Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk> |
---|---|
date | Mon, 13 Apr 2015 10:40:37 +0100 |
parents | f1a189a102f0 |
children | 584302307987 |
files | ape.js core.js |
diffstat | 2 files changed, 35 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/ape.js Mon Apr 13 09:58:16 2015 +0100 +++ b/ape.js Mon Apr 13 10:40:37 2015 +0100 @@ -521,13 +521,16 @@ function dragEnd(ev) { // Function call when a div has been dropped var slider = document.getElementById('slider'); - if (ev.x >= 50 && ev.x < window.innerWidth-50) { - this.style.left = (ev.x)+'px'; + var w = slider.style.width; + w = Number(w.substr(0,w.length-2)); + var x = ev.x; + if (x >= 42 && x < w+42) { + this.style.left = (x)+'px'; } else { - if (ev.x<50) { - this.style.left = '50px'; + if (x<42) { + this.style.left = '42px'; } else { - this.style.left = window.innerWidth-50 + 'px'; + this.style.left = (w+42) + 'px'; } } audioEngineContext.metric.sliderMoved(); @@ -604,6 +607,17 @@ } } +function convSliderPosToRate(id) +{ + var w = document.getElementById('slider').style.width; + var maxPix = w.substr(0,w.length-2); + var slider = document.getElementsByClassName('track-slider')[id]; + var pix = slider.style.left; + pix = pix.substr(0,pix.length-2); + var rate = (pix-42)/maxPix; + return rate; +} + function pageXMLSave(testId) { // Saves a specific test page @@ -620,17 +634,13 @@ xmlDoc.appendChild(metric); var trackSliderObjects = document.getElementsByClassName('track-slider'); var commentObjects = document.getElementsByClassName('comment-div'); - var rateMin = 50; - var rateMax = window.innerWidth-50; for (var i=0; i<trackSliderObjects.length; i++) { var audioElement = document.createElement('audioElement'); audioElement.id = currentTrackOrder[i].attributes['id'].value; audioElement.url = currentTrackOrder[i].attributes['url'].value; - var value = document.createElement("value"); - var rate = Number(trackSliderObjects[i].style.left.substr(0,trackSliderObjects[i].style.left.length-2)); - rate = (rate-rateMin)/rateMax; - value.innerHTML = Math.floor(rate*100); + var value = document.createElement('value'); + value.innerHTML = convSliderPosToRate(i); var comment = document.createElement("comment"); var question = document.createElement("question"); var response = document.createElement("response");
--- a/core.js Mon Apr 13 09:58:16 2015 +0100 +++ b/core.js Mon Apr 13 10:40:37 2015 +0100 @@ -299,6 +299,15 @@ this.lastClicked = -1; this.data = -1; + this.initialiseTest = function() + { + var sliders = document.getElementsByClassName('track-slider'); + for (var i=0; i<sliders.length; i++) + { + engine.audioObjects[i].metric.initialised(convSliderPosToRate(i)); + } + }; + this.sliderMoveStart = function(id) { if (this.data == -1) @@ -314,13 +323,10 @@ var time = engine.timer.getTestTime(); var id = this.data; this.data = -1; - var sliderObj = document.getElementsByClassName('track-slider')[id]; - var position = Number(sliderObj.style.left.substr(0,sliderObj.style.left.length-2)); + var position = convSliderPosToRate(id); if (engine.timer.testStarted) { engine.audioObjects[id].metric.moved(time,position); - } else { - engine.audioObjects[id].metric.initialised(position); } }; @@ -347,7 +353,7 @@ this.listenedTimer = 0; this.listenStart = 0; - this.initialPosition = 0; + this.initialPosition = -1; this.movementTracker = []; this.wasListenedTo = false; this.wasMoved = false; @@ -355,7 +361,9 @@ this.initialised = function(position) { - this.initialPosition = position; + if (this.initialPosition == -1) { + this.initialPosition = position; + } }; this.moved = function(time,position)