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)