changeset 1401:fae9a971f6b3

APE: Separate metric trackers for each scale to differentiate movements.
author Nicholas Jillings <nickjillings@users.noreply.github.com>
date Fri, 11 Dec 2015 10:21:48 +0000
parents 8147e19de61b
children abbe484649cf
files ape.js
diffstat 1 files changed, 22 insertions(+), 36 deletions(-) [+]
line wrap: on
line diff
--- a/ape.js	Tue Dec 08 17:15:34 2015 +0000
+++ b/ape.js	Fri Dec 11 10:21:48 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()
@@ -373,6 +340,8 @@
 		event.preventDefault();
 		var obj = interfaceContext.getSelectedObject();
 		if (obj == null) {return;}
+		var interfaceID = obj.parentElement.getAttribute("interfaceid");
+		var trackID = obj.getAttribute("trackindex");
 		if (interfaceContext.hasSelectedObjectMoved() == true)
 		{
 			var l = $(obj).css("left");
@@ -380,6 +349,7 @@
 			var time = audioEngineContext.timer.getTestTime();
 			var rate = convSliderPosToRate(obj);
 			audioEngineContext.audioObjects[id].metric.moved(time,rate);
+			interfaceContext.interfaceSliders[interfaceID].metrics[trackID].moved(time,rate);
 			console.log("slider "+id+" moved to "+rate+' ('+time+')');
 		} else {
 			var id = Number(obj.attributes['trackIndex'].value);
@@ -387,7 +357,6 @@
 			audioEngineContext.play(id);
 	        // Currently playing track red, rest green
 	        
-	        
 	        $('.track-slider').removeClass('track-slider-playing');
 	        var name = ".track-slider-"+obj.getAttribute("trackindex");
 	        $(name).addClass('track-slider-playing');
@@ -442,6 +411,7 @@
 function interfaceSliderHolder(interfaceObject)
 {
 	this.sliders = [];
+	this.metrics = [];
 	this.id = document.getElementsByClassName("sliderCanvasDiv").length;
 	this.name = interfaceObject.name;
 	this.interfaceObject = interfaceObject;
@@ -467,6 +437,7 @@
 		this.canvas.id = 'slider-'+this.name;
 	else
 		this.canvas.id = 'slider-'+this.id;
+	this.canvas.setAttribute("interfaceid",this.id);
 	this.canvas.className = 'slider';
 	this.canvas.align = "left";
 	this.canvas.addEventListener('dragover',function(event){
@@ -529,6 +500,8 @@
 		trackObj.style.left = w+'px';
 		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;
 	};
 	
@@ -680,7 +653,7 @@
 	// Function called when the window has been resized.
 	// MANDATORY FUNCTION
 	
-	// Store the slider marker values
+	// Resize the slider objects
 	for (var i=0; i<interfaceContext.interfaceSliders.length; i++)
 	{
 		interfaceContext.interfaceSliders[i].resize(event);
@@ -691,5 +664,18 @@
 {
 	// MANDATORY
 	// Saves a specific test page
-	// You can use this space to add any extra nodes to your XML saves
+	// You can use this space to add any extra nodes to your XML <audioHolder> saves
+	// Get the current <audioHolder> information in store (remember to appendChild your data to it)
+	var audioelements = store.getElementsByTagName("audioelement");
+	for (var i=0; i<audioelements.length; i++)
+	{
+		// Have to append the metric specific nodes
+		for (var k=0; k<interfaceContext.interfaceSliders.length; k++)
+		{
+			var node = interfaceContext.interfaceSliders[k].metrics[i].exportXMLDOM();
+			node.setAttribute("interface-name",interfaceContext.interfaceSliders[k].name);
+			node.setAttribute("interfaceid",interfaceContext.interfaceSliders[k].id);
+			audioelements[i].appendChild(node);
+		}
+	}
 }
\ No newline at end of file