Mercurial > hg > webaudioevaluationtool
changeset 469:d39d243e6601 Dev_main
Outside references now have an interfaceDOM. All interfaceDOM objects must respond to canMove() for determining if fixed or not.
author | Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk> |
---|---|
date | Tue, 12 Jan 2016 18:29:55 +0000 |
parents | 44f7a5013b94 |
children | 1330c77d212c |
files | AB.js ape.js core.js mushra.js |
diffstat | 4 files changed, 151 insertions(+), 63 deletions(-) [+] |
line wrap: on
line diff
--- a/AB.js Tue Jan 12 17:26:40 2016 +0000 +++ b/AB.js Tue Jan 12 18:29:55 2016 +0000 @@ -204,9 +204,13 @@ return this.value; }; this.getPresentedId = function() - { - return this.selector.children[0].textContent; - }; + { + return this.selector.children[0].textContent; + }; + this.canMove = function() + { + return false; + }; }; this.boxHolders = document.getElementById('box-holders');
--- a/ape.js Tue Jan 12 17:26:40 2016 +0000 +++ b/ape.js Tue Jan 12 18:29:55 2016 +0000 @@ -335,40 +335,14 @@ $(audioHolderObject.audioElements).each(function(index,element){ // Find URL of track // In this jQuery loop, variable 'this' holds the current audioElement. - + var audioObject = audioEngineContext.newTrack(element); // Check if an outside reference if (element.type == 'outside-reference') { // Construct outside reference; - var outsideReferenceHolder = document.createElement('div'); - outsideReferenceHolder.id = 'outside-reference'; - outsideReferenceHolder.className = 'outside-reference'; - outsideReferenceHolderspan = document.createElement('span'); - outsideReferenceHolderspan.textContent = 'Reference'; - outsideReferenceHolder.appendChild(outsideReferenceHolderspan); - outsideReferenceHolder.setAttribute('track-id',index); - - var audioObject = audioEngineContext.newTrack(element); - - outsideReferenceHolder.onclick = function(event) - { - audioEngineContext.play(event.currentTarget.getAttribute('track-id')); - $('.track-slider').removeClass('track-slider-playing'); - $('.comment-div').removeClass('comment-box-playing'); - if (event.currentTarget.nodeName == 'DIV') { - $(event.currentTarget).addClass('track-slider-playing'); - } else { - $(event.currentTarget.parentElement).addClass('track-slider-playing'); - } - }; - - document.getElementById('interface-buttons').appendChild(outsideReferenceHolder); + var orNode = new outsideReferenceDOM(audioObject,index,document.getElementById('interface-buttons')); + audioObject.bindInterface(orNode); } else { - - // Now load each audio sample. First create the new track by passing the full URL - var trackURL = audioHolderObject.hostURL + element.url; - var audioObject = audioEngineContext.newTrack(element); - var node = interfaceContext.createCommentBox(audioObject); // Create a slider per track var sliderNode = new sliderObject(audioObject,interfaceObj); @@ -652,6 +626,69 @@ { return this.trackSliderObjects[0].children[0].textContent; }; + this.canMove = function() + { + return true; + }; +} + +function outsideReferenceDOM(audioObject,index,inject) +{ + this.parent = audioObject; + this.outsideReferenceHolder = document.createElement('div'); + this.outsideReferenceHolder.id = 'outside-reference'; + this.outsideReferenceHolder.className = 'outside-reference track-slider-disabled'; + var outsideReferenceHolderspan = document.createElement('span'); + outsideReferenceHolderspan.textContent = 'Reference'; + this.outsideReferenceHolder.appendChild(outsideReferenceHolderspan); + this.outsideReferenceHolder.setAttribute('track-id',index); + + this.outsideReferenceHolder.onclick = function(event) + { + audioEngineContext.play(event.currentTarget.getAttribute('track-id')); + $('.track-slider').removeClass('track-slider-playing'); + $('.comment-div').removeClass('comment-box-playing'); + if (event.currentTarget.nodeName == 'DIV') { + $(event.currentTarget).addClass('track-slider-playing'); + } else { + $(event.currentTarget.parentElement).addClass('track-slider-playing'); + } + }; + inject.appendChild(this.outsideReferenceHolder); + this.enable = function() + { + if (this.parent.state == 1) + { + $(this.outsideReferenceHolder).removeClass('track-slider-disabled'); + } + }; + this.updateLoading = function(progress) + { + if (progress != 100) + { + progress = String(progress); + progress = progress.split('.')[0]; + this.outsideReferenceHolder[0].children[0].textContent = progress+'%'; + } else { + this.outsideReferenceHolder[0].children[0].textContent = "Play Reference"; + } + }; + this.exportXMLDOM = function(audioObject) + { + return null; + }; + this.getValue = function() + { + return 0; + }; + this.getPresentedId = function() + { + return 'reference'; + }; + this.canMove = function() + { + return false; + }; } function buttonSubmitClick()
--- a/core.js Tue Jan 12 17:26:40 2016 +0000 +++ b/core.js Tue Jan 12 18:29:55 2016 +0000 @@ -1238,12 +1238,15 @@ this.storeDOM.appendChild(file); if (this.specification.type != 'outside-reference') { var interfaceXML = this.interfaceDOM.exportXMLDOM(this); - if (interfaceXML.length == undefined) { - this.storeDOM.appendChild(interfaceXML); - } else { - for (var i=0; i<interfaceXML.length; i++) - { - this.storeDOM.appendChild(interfaceXML[i]); + if (interfaceXML != null) + { + if (interfaceXML.length == undefined) { + this.storeDOM.appendChild(interfaceXML); + } else { + for (var i=0; i<interfaceXML.length; i++) + { + this.storeDOM.appendChild(interfaceXML[i]); + } } } if (this.commentDOM != null) { @@ -2730,8 +2733,8 @@ if (passed == false) { check_pass = false; - console.log("Continue listening to track-"+i); - error_obj.push(i); + console.log("Continue listening to track-"+audioEngineContext.audioObjects.interfaceDOM.getPresentedId()); + error_obj.push(audioEngineContext.audioObjects.interfaceDOM.getPresentedId()); } } if (check_pass == false) @@ -2754,11 +2757,11 @@ { var str = "You have not moved "; var failed = []; - for (var i in audioEngineContext.audioObjects) + for (var ao of audioEngineContext.audioObjects) { - if(audioEngineContext.audioObjects[i].metric.wasMoved == false && audioEngineContext.audioObjects[i].specification.type != 'outsidereference') + if(ao.metric.wasMoved == false && ao.interfaceDOM.canMove() == true) { - failed.push(audioEngineContext.audioObjects[i].id); + failed.push(ao.interfaceDOM.getPresentedId()); } } if (failed.length == 0) @@ -2784,11 +2787,11 @@ { var str = "You have not played "; var failed = []; - for (var i in audioEngineContext.audioObjects) + for (var ao of audioEngineContext.audioObjects) { - if(audioEngineContext.audioObjects[i].metric.wasListenedTo == false) + if(ao.metric.wasListenedTo == false) { - failed.push(audioEngineContext.audioObjects[i].id); + failed.push(ao.interfaceDOM.getPresentedId()); } } if (failed.length == 0)
--- a/mushra.js Tue Jan 12 17:26:40 2016 +0000 +++ b/mushra.js Tue Jan 12 18:29:55 2016 +0000 @@ -159,23 +159,9 @@ var audioObject = audioEngineContext.newTrack(element); if (element.type == 'outside-reference') { - var outsideReferenceHolder = document.createElement('button'); - outsideReferenceHolder.id = 'outside-reference'; - outsideReferenceHolder.className = 'outside-reference'; - outsideReferenceHolder.setAttribute('track-id',index); - outsideReferenceHolder.textContent = "Play Reference"; - - var audioObject = audioEngineContext.newTrack(element); - - outsideReferenceHolder.onclick = function(event) - { - audioEngineContext.play(event.currentTarget.getAttribute('track-id')); - $('.track-slider').removeClass('track-slider-playing'); - $('.comment-div').removeClass('comment-box-playing'); - $(event.currentTarget).addClass('track-slider-playing'); - }; - - document.getElementById('interface-buttons').appendChild(outsideReferenceHolder); + // Construct outside reference; + var orNode = new outsideReferenceDOM(audioObject,index,document.getElementById('interface-buttons')); + audioObject.bindInterface(orNode); } else { var node = interfaceContext.createCommentBox(audioObject); @@ -296,6 +282,64 @@ { return this.title.textContent; }; + this.canMove = function() + { + return true; + }; +} + +function outsideReferenceDOM(audioObject,index,inject) +{ + this.parent = audioObject; + this.outsideReferenceHolder = document.createElement('button'); + this.outsideReferenceHolder.id = 'outside-reference'; + this.outsideReferenceHolder.className = 'outside-reference'; + this.outsideReferenceHolder.setAttribute('track-id',index); + this.outsideReferenceHolder.textContent = "Play Reference"; + this.outsideReferenceHolder.disabled = true; + + this.outsideReferenceHolder.onclick = function(event) + { + audioEngineContext.play(event.currentTarget.getAttribute('track-id')); + $('.track-slider').removeClass('track-slider-playing'); + $('.comment-div').removeClass('comment-box-playing'); + $(event.currentTarget).addClass('track-slider-playing'); + }; + inject.appendChild(this.outsideReferenceHolder); + this.enable = function() + { + if (this.parent.state == 1) + { + this.outsideReferenceHolder.disabled = false; + } + }; + this.updateLoading = function(progress) + { + if (progress != 100) + { + progress = String(progress); + progress = progress.split('.')[0]; + this.outsideReferenceHolder[0].children[0].textContent = progress+'%'; + } else { + this.outsideReferenceHolder[0].children[0].textContent = "Play Reference"; + } + }; + this.exportXMLDOM = function(audioObject) + { + return null; + }; + this.getValue = function() + { + return 0; + }; + this.getPresentedId = function() + { + return 'reference'; + }; + this.canMove = function() + { + return false; + }; } function resizeWindow(event)