Mercurial > hg > webaudioevaluationtool
changeset 1013:3a77fed8a32c
Feature #1261: Enabled with new <metricEnabled> flag in specification XML. Returns <event> nodes with <testTime> and <bufferTime>
author | Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk> |
---|---|
date | Wed, 03 Jun 2015 11:12:29 +0100 |
parents | 4df1b4e7596f |
children | 4a0bfa7bef24 |
files | ape.js core.js example_eval/project.xml |
diffstat | 3 files changed, 55 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/ape.js Mon Jun 01 17:00:45 2015 +0100 +++ b/ape.js Wed Jun 03 11:12:29 2015 +0100 @@ -92,6 +92,9 @@ case 'elementTracker': sessionMetrics.prototype.enableElementTracker = true; break; + case 'elementListenTracker': + sessionMetrics.prototype.enableElementListenTracker = true; + break; case 'elementInitalPosition': sessionMetrics.prototype.enableElementInitialPosition = true; break; @@ -673,6 +676,15 @@ } 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';
--- a/core.js Mon Jun 01 17:00:45 2015 +0100 +++ b/core.js Wed Jun 03 11:12:29 2015 +0100 @@ -562,6 +562,27 @@ this.metric.stopListening(audioEngineContext.timer.getTestTime()); } }; + + this.getCurrentPosition = function() { + var time = audioEngineContext.timer.getTestTime(); + if (this.bufferNode != undefined) { + if (this.bufferNode.loop == true) { + if (audioEngineContext.status == 1) { + return time%this.buffer.duration; + } else { + return 0; + } + } else { + if (this.metric.listenHold) { + return time - this.metric.listenStart; + } else { + return 0; + } + } + } else { + return 0; + } + }; this.constructTrack = function(url) { var request = new XMLHttpRequest(); @@ -658,6 +679,7 @@ this.listenHold = false; this.initialPosition = -1; this.movementTracker = []; + this.listenTracker =[]; this.wasListenedTo = false; this.wasMoved = false; this.hasComments = false; @@ -683,6 +705,16 @@ this.wasListenedTo = true; this.listenStart = time; this.listenHold = true; + + var evnt = document.createElement('event'); + var testTime = document.createElement('testTime'); + testTime.setAttribute('start',time); + var bufferTime = document.createElement('bufferTime'); + bufferTime.setAttribute('start',this.parent.getCurrentPosition()); + evnt.appendChild(testTime); + evnt.appendChild(bufferTime); + this.listenTracker.push(evnt); + console.log('slider ' + this.parent.id + ' played (' + time + ')'); // DEBUG/SAFETY: show played slider id } }; @@ -691,9 +723,17 @@ { if (this.listenHold == true) { - this.listenedTimer += (time - this.listenStart); + var diff = time - this.listenStart; + this.listenedTimer += (diff); this.listenStart = 0; this.listenHold = false; + + var evnt = this.listenTracker[this.listenTracker.length-1]; + var testTime = evnt.getElementsByTagName('testTime')[0]; + var bufferTime = evnt.getElementsByTagName('bufferTime')[0]; + testTime.setAttribute('stop',time); + bufferTime.setAttribute('stop',this.parent.getCurrentPosition()); + console.log('slider ' + this.parent.id + ' played for (' + diff + ')'); // DEBUG/SAFETY: show played slider id } }; }
--- a/example_eval/project.xml Mon Jun 01 17:00:45 2015 +0100 +++ b/example_eval/project.xml Wed Jun 03 11:12:29 2015 +0100 @@ -16,9 +16,10 @@ <metricEnable>elementTracker</metricEnable> <metricEnable>elementFlagListenedTo</metricEnable> <metricEnable>elementFlagMoved</metricEnable> + <metricEnable>elementListenTracker</metricEnable> </Metric> </setup> - <audioHolder id='0' hostURL="example_eval/" sampleRate="44100" randomiseOrder='true' repeatCount='0' loop='false' elementComments='true'> + <audioHolder id='0' hostURL="example_eval/" sampleRate="44100" randomiseOrder='true' repeatCount='0' loop='true' elementComments='true'> <interface> <title>Example Test Question</title> <scale position="0">Min</scale>