Mercurial > hg > webaudioevaluationtool
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)