changeset 907:1b6f4304dedc

audioObjects.metric object export their XML rather than ape.js
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Thu, 04 Jun 2015 11:01:19 +0100
parents 6d37dd0f1dc7
children 40f9b1725279
files ape.js core.js
diffstat 2 files changed, 81 insertions(+), 64 deletions(-) [+]
line wrap: on
line diff
--- a/ape.js	Thu Jun 04 10:43:06 2015 +0100
+++ b/ape.js	Thu Jun 04 11:01:19 2015 +0100
@@ -75,6 +75,8 @@
         console.log('slider ' + id + ' played (' + time + ')'); // DEBUG/SAFETY: show played slider id
 	};
 	
+	// Bindings for audioObjects
+	
 	// Create the top div for the Title element
 	var titleAttr = xmlSetup[0].attributes['title'];
 	var title = document.createElement('div');
@@ -353,6 +355,7 @@
 			trackComment.appendChild(br);
 			trackComment.appendChild(trackCommentBox);
 			feedbackHolder.appendChild(trackComment);
+			audioEngineContext.audioObjects[index].commentDOM = trackCommentBox;
 		}
 		
 		// Create a slider per track
@@ -399,6 +402,9 @@
 			}
 		};
 		
+		// Attach binding
+		audioEngineContext.audioObjects[index].sliderDOM = trackSliderObj;
+		
 		canvas.appendChild(trackSliderObj);
 		audioEngineContext.audioObjects[index].metric.initialised(convSliderPosToRate(index));
         
@@ -561,7 +567,7 @@
 	{
 		var audioElement = document.createElement('audioElement');
 		audioElement.id = currentTrackOrder[i].attributes['id'].value;
-		audioElement.url = currentTrackOrder[i].attributes['url'].value;
+		audioElement.setAttribute('url',currentTrackOrder[i].attributes['url'].value);
 		var value = document.createElement('value');
 		value.innerHTML = convSliderPosToRate(i);
 		if (commentShow) {
@@ -577,67 +583,8 @@
 		}
 		audioElement.appendChild(value);
 		// Check for any per element metrics
-		var metric = document.createElement('metric');
-		var elementMetric = audioEngineContext.audioObjects[i].metric;
-		if (audioEngineContext.metric.enableElementTimer) {
-			var elementTimer = document.createElement('metricResult');
-			elementTimer.id = 'elementTimer';
-			elementTimer.textContent = elementMetric.listenedTimer;
-			metric.appendChild(elementTimer);
-		}
-		if (audioEngineContext.metric.enableElementTracker) {
-			var elementTrackerFull = document.createElement('metricResult');
-			elementTrackerFull.id = 'elementTrackerFull';
-			var data = elementMetric.movementTracker;
-			for (var k=0; k<data.length; k++)
-			{
-				var timePos = document.createElement('timePos');
-				timePos.id = k;
-				var time = document.createElement('time');
-				time.textContent = data[k][0];
-				var position = document.createElement('position');
-				position.textContent = data[k][1];
-				timePos.appendChild(time);
-				timePos.appendChild(position);
-				elementTrackerFull.appendChild(timePos);
-			}
-			metric.appendChild(elementTrackerFull);
-		}
-		if (audioEngineContext.metric.enableElementListenTracker) {
-			var elementListenTracker = document.createElement('metricResult');
-			elementListenTracker.id = 'elementListenTracker';
-			var obj = elementMetric.listenTracker;
-			for (var k=0; k<obj.length; k++) {
-				elementListenTracker.appendChild(obj[k]);
-			}
-			metric.appendChild(elementListenTracker);
-		}
-		if (audioEngineContext.metric.enableElementInitialPosition) {
-			var elementInitial = document.createElement('metricResult');
-			elementInitial.id = 'elementInitialPosition';
-			elementInitial.textContent = elementMetric.initialPosition;
-			metric.appendChild(elementInitial);
-		}
-		if (audioEngineContext.metric.enableFlagListenedTo) {
-			var flagListenedTo = document.createElement('metricResult');
-			flagListenedTo.id = 'elementFlagListenedTo';
-			flagListenedTo.textContent = elementMetric.wasListenedTo;
-			metric.appendChild(flagListenedTo);
-		}
-		if (audioEngineContext.metric.enableFlagMoved) {
-			var flagMoved = document.createElement('metricResult');
-			flagMoved.id = 'elementFlagMoved';
-			flagMoved.textContent = elementMetric.wasMoved;
-			metric.appendChild(flagMoved);
-		}
-		if (audioEngineContext.metric.enableFlagComments) {
-			var flagComments = document.createElement('metricResult');
-			flagComments.id = 'elementFlagComments';
-			if (response.textContent.length == 0) {flag.textContent = 'false';}
-			else {flag.textContet = 'true';}
-			metric.appendChild(flagComments);
-		}
-		audioElement.appendChild(metric);
+		
+		audioElement.appendChild(audioEngineContext.audioObjects[i].metric.exportXMLDOM());
 		xmlDoc.appendChild(audioElement);
 	}
 	var commentQuestion = document.getElementsByClassName('commentQuestion');
--- a/core.js	Thu Jun 04 10:43:06 2015 +0100
+++ b/core.js	Thu Jun 04 11:01:19 2015 +0100
@@ -594,6 +594,10 @@
 	this.url = null; // Hold the URL given for the output back to the results.
 	this.metric = new metricTracker(this);
 	
+	// Bindings for GUI
+	this.sliderDOM = null;
+	this.commentDOM = null;
+	
 	// Create a buffer and external gain control to allow internal patching of effects and volume leveling.
 	this.bufferNode = undefined;
 	this.outputGain = audioContext.createGain();
@@ -611,14 +615,14 @@
 	this.loopStart = function() {
 		this.outputGain.gain.value = 1.0;
 		this.metric.startListening(audioEngineContext.timer.getTestTime());
-	}
+	};
 	
 	this.loopStop = function() {
 		if (this.outputGain.gain.value != 0.0) {
 			this.outputGain.gain.value = 0.0;
 			this.metric.stopListening(audioEngineContext.timer.getTestTime());
 		}
-	}
+	};
 	
 	this.play = function(startTime) {
 		this.bufferNode = audioContext.createBufferSource();
@@ -818,6 +822,72 @@
 			console.log('slider ' + this.parent.id + ' played for (' + diff + ')'); // DEBUG/SAFETY: show played slider id
 		}
 	};
+	
+	this.exportXMLDOM = function() {
+		var root = document.createElement('metric');
+		if (audioEngineContext.metric.enableElementTimer) {
+			var mElementTimer = document.createElement('metricresult');
+			mElementTimer.setAttribute('name','enableElementTimer');
+			mElementTimer.textContent = this.listenedTimer;
+			root.appendChild(mElementTimer);
+		}
+		if (audioEngineContext.metric.enableElementTracker) {
+			var elementTrackerFull = document.createElement('metricResult');
+			elementTrackerFull.setAttribute('name','elementTrackerFull');
+			for (var k=0; k<this.movementTracker.length; k++)
+			{
+				var timePos = document.createElement('timePos');
+				timePos.id = k;
+				var time = document.createElement('time');
+				time.textContent = this.movementTracker[k][0];
+				var position = document.createElement('position');
+				position.textContent = this.movementTracker[k][1];
+				timePos.appendChild(time);
+				timePos.appendChild(position);
+				elementTrackerFull.appendChild(timePos);
+			}
+			root.appendChild(elementTrackerFull);
+		}
+		if (audioEngineContext.metric.enableElementListenTracker) {
+			var elementListenTracker = document.createElement('metricResult');
+			elementListenTracker.setAttribute('name','elementListenTracker');
+			for (var k=0; k<this.listenTracker.length; k++) {
+				elementListenTracker.appendChild(this.listenTracker[k]);
+			}
+			root.appendChild(elementListenTracker);
+		}
+		if (audioEngineContext.metric.enableElementInitialPosition) {
+			var elementInitial = document.createElement('metricResult');
+			elementInitial.setAttribute('name','elementInitialPosition');
+			elementInitial.textContent = this.initialPosition;
+			root.appendChild(elementInitial);
+		}
+		if (audioEngineContext.metric.enableFlagListenedTo) {
+			var flagListenedTo = document.createElement('metricResult');
+			flagListenedTo.setAttribute('name','elementFlagListenedTo');
+			flagListenedTo.textContent = this.wasListenedTo;
+			root.appendChild(flagListenedTo);
+		}
+		if (audioEngineContext.metric.enableFlagMoved) {
+			var flagMoved = document.createElement('metricResult');
+			flagMoved.setAttribute('name','elementFlagMoved');
+			flagMoved.textContent = this.wasMoved;
+			root.appendChild(flagMoved);
+		}
+		if (audioEngineContext.metric.enableFlagComments) {
+			var flagComments = document.createElement('metricResult');
+			flagComments.setAttribute('name','elementFlagComments');
+			if (this.parent.commentDOM == null)
+				{flag.textContent = 'false';}
+			else if (this.parent.commentDOM.textContent.length == 0) 
+				{flag.textContent = 'false';}
+			else 
+				{flag.textContet = 'true';}
+			root.appendChild(flagComments);
+		}
+		
+		return root;
+	};
 }
 
 function randomiseOrder(input)