# HG changeset patch # User www-data # Date 1464348051 -3600 # Node ID 4718cd881d3a01f710d4156c125510712b8f0db8 # Parent 002be75d71dfbc4fe553e5214b9ac1d8e0f889d6# Parent 3013cf94571676a4e8bf36258b227dfbbd04cf4f Merge branch 'master' of https://github.com/BrechtDeMan/WebAudioEvaluationTool diff -r 002be75d71df -r 4718cd881d3a interfaces/AB.js --- a/interfaces/AB.js Fri May 27 11:20:44 2016 +0100 +++ b/interfaces/AB.js Fri May 27 12:20:51 2016 +0100 @@ -153,6 +153,9 @@ if (node){feedbackHolder.removeChild(node);} } + // Populate the comparator object + interfaceContext.comparator = new comparator(audioHolderObject); + for (var option of interfaceOptions) { if (option.type == "show") @@ -187,30 +190,27 @@ feedbackHolder.appendChild(interfaceContext.volume.object); } break; + case "comments": + var commentHolder = document.createElement('div'); + commentHolder.id = 'commentHolder'; + document.getElementById('testContent').appendChild(commentHolder); + // Generate one comment box per presented page + for (var element of audioEngineContext.audioObjects) + { + interfaceContext.commentBoxes.createCommentBox(element); + } + interfaceContext.commentBoxes.showCommentBoxes(commentHolder,true); + break; } } } - - // Populate the comparator object - interfaceContext.comparator = new comparator(audioHolderObject); - if (audioHolderObject.showElementComments) - { - var commentHolder = document.createElement('div'); - commentHolder.id = 'commentHolder'; - document.getElementById('testContent').appendChild(commentHolder); - // Generate one comment box per presented page - for (var element of audioEngineContext.audioObjects) - { - interfaceContext.commentBoxes.createCommentBox(element); - } - interfaceContext.commentBoxes.showCommentBoxes(commentHolder,true); - } - resizeWindow(null); $(audioHolderObject.commentQuestions).each(function(index,element) { var node = interfaceContext.createCommentQuestion(element); commentHolder.appendChild(node.holder); }); + + resizeWindow(null); } function comparator(audioHolderObject) diff -r 002be75d71df -r 4718cd881d3a interfaces/ape.js --- a/interfaces/ape.js Fri May 27 11:20:44 2016 +0100 +++ b/interfaces/ape.js Fri May 27 12:20:51 2016 +0100 @@ -339,6 +339,12 @@ { feedbackHolder.appendChild(interfaceContext.volume.object); } + } else if (interfaceList[k].options[i].type == 'show' && interfaceList[k].options[i].name == 'comments') { + var commentHolder = document.createElement('div'); + commentHolder.id = 'commentHolder'; + document.getElementById('testContent').appendChild(commentHolder); + interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true); + break; } } } @@ -444,17 +450,51 @@ interfaceContext.releaseObject(); }); - - if (audioHolderObject.showElementComments) { - interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true); - } - - $(audioHolderObject.commentQuestions).each(function(index,element) { + var interfaceList = audioHolderObject.interfaces.concat(specification.interfaces); + for (var k=0; k'; + var inject = document.getElementById('interface-buttons'); + inject.appendChild(pagecountHolder); + } else if (interfaceList[k].options[i].type == 'show' && interfaceList[k].options[i].name == 'volume') { + if (document.getElementById('master-volume-holder') == null) + { + feedbackHolder.appendChild(interfaceContext.volume.object); + } + } else if (interfaceList[k].options[i].type == 'show' && interfaceList[k].options[i].name == 'comments') { + interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true); + break; + } + } + } + + $(audioHolderObject.commentQuestions).each(function(index,element) { var node = interfaceContext.createCommentQuestion(element); feedbackHolder.appendChild(node.holder); }); - //testWaitIndicator(); } diff -r 002be75d71df -r 4718cd881d3a interfaces/discrete.js --- a/interfaces/discrete.js Fri May 27 11:20:44 2016 +0100 +++ b/interfaces/discrete.js Fri May 27 12:20:51 2016 +0100 @@ -130,44 +130,6 @@ { document.getElementById("pageTitle").textContent = interfaceObj.title; } - - var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options); - for (var option of interfaceOptions) - { - if (option.type == "show") - { - switch(option.name) { - case "playhead": - var playbackHolder = document.getElementById('playback-holder'); - if (playbackHolder == null) - { - playbackHolder = document.createElement('div'); - playbackHolder.style.width = "100%"; - playbackHolder.align = 'center'; - playbackHolder.appendChild(interfaceContext.playhead.object); - feedbackHolder.appendChild(playbackHolder); - } - break; - case "page-count": - var pagecountHolder = document.getElementById('page-count'); - if (pagecountHolder == null) - { - pagecountHolder = document.createElement('div'); - pagecountHolder.id = 'page-count'; - } - pagecountHolder.innerHTML = 'Page '+(testState.stateIndex+1)+' of '+testState.stateMap.length+''; - var inject = document.getElementById('interface-buttons'); - inject.appendChild(pagecountHolder); - break; - case "volume": - if (document.getElementById('master-volume-holder') == null) - { - feedbackHolder.appendChild(interfaceContext.volume.object); - } - break; - } - } - } // Delete outside reference document.getElementById("outside-reference-holder").innerHTML = ""; @@ -224,11 +186,52 @@ }); - if (page.showElementComments) + var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options); + for (var option of interfaceOptions) { - interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true); + if (option.type == "show") + { + switch(option.name) { + case "playhead": + var playbackHolder = document.getElementById('playback-holder'); + if (playbackHolder == null) + { + playbackHolder = document.createElement('div'); + playbackHolder.style.width = "100%"; + playbackHolder.align = 'center'; + playbackHolder.appendChild(interfaceContext.playhead.object); + feedbackHolder.appendChild(playbackHolder); + } + break; + case "page-count": + var pagecountHolder = document.getElementById('page-count'); + if (pagecountHolder == null) + { + pagecountHolder = document.createElement('div'); + pagecountHolder.id = 'page-count'; + } + pagecountHolder.innerHTML = 'Page '+(testState.stateIndex+1)+' of '+testState.stateMap.length+''; + var inject = document.getElementById('interface-buttons'); + inject.appendChild(pagecountHolder); + break; + case "volume": + if (document.getElementById('master-volume-holder') == null) + { + feedbackHolder.appendChild(interfaceContext.volume.object); + } + break; + case "comments": + interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true); + break; + } + } } + $(page.commentQuestions).each(function(index,element) { + var node = interfaceContext.createCommentQuestion(element); + commentHolder.appendChild(node.holder); + }); + // Auto-align resizeWindow(null); } diff -r 002be75d71df -r 4718cd881d3a interfaces/horizontal-sliders.js --- a/interfaces/horizontal-sliders.js Fri May 27 11:20:44 2016 +0100 +++ b/interfaces/horizontal-sliders.js Fri May 27 12:20:51 2016 +0100 @@ -130,44 +130,6 @@ { document.getElementById("pageTitle").textContent = interfaceObj.title; } - - var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options); - for (var option of interfaceOptions) - { - if (option.type == "show") - { - switch(option.name) { - case "playhead": - var playbackHolder = document.getElementById('playback-holder'); - if (playbackHolder == null) - { - playbackHolder = document.createElement('div'); - playbackHolder.style.width = "100%"; - playbackHolder.align = 'center'; - playbackHolder.appendChild(interfaceContext.playhead.object); - feedbackHolder.appendChild(playbackHolder); - } - break; - case "page-count": - var pagecountHolder = document.getElementById('page-count'); - if (pagecountHolder == null) - { - pagecountHolder = document.createElement('div'); - pagecountHolder.id = 'page-count'; - } - pagecountHolder.innerHTML = 'Page '+(testState.stateIndex+1)+' of '+testState.stateMap.length+''; - var inject = document.getElementById('interface-buttons'); - inject.appendChild(pagecountHolder); - break; - case "volume": - if (document.getElementById('master-volume-holder') == null) - { - feedbackHolder.appendChild(interfaceContext.volume.object); - } - break; - } - } - } // Delete outside reference document.getElementById("outside-reference-holder").innerHTML = ""; @@ -231,9 +193,45 @@ } }); - if (page.showElementComments) + var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options); + for (var option of interfaceOptions) { - interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true); + if (option.type == "show") + { + switch(option.name) { + case "playhead": + var playbackHolder = document.getElementById('playback-holder'); + if (playbackHolder == null) + { + playbackHolder = document.createElement('div'); + playbackHolder.style.width = "100%"; + playbackHolder.align = 'center'; + playbackHolder.appendChild(interfaceContext.playhead.object); + feedbackHolder.appendChild(playbackHolder); + } + break; + case "page-count": + var pagecountHolder = document.getElementById('page-count'); + if (pagecountHolder == null) + { + pagecountHolder = document.createElement('div'); + pagecountHolder.id = 'page-count'; + } + pagecountHolder.innerHTML = 'Page '+(testState.stateIndex+1)+' of '+testState.stateMap.length+''; + var inject = document.getElementById('interface-buttons'); + inject.appendChild(pagecountHolder); + break; + case "volume": + if (document.getElementById('master-volume-holder') == null) + { + feedbackHolder.appendChild(interfaceContext.volume.object); + } + break; + case "comments": + interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true); + break; + } + } } // Auto-align resizeWindow(null); diff -r 002be75d71df -r 4718cd881d3a interfaces/mushra.js --- a/interfaces/mushra.js Fri May 27 11:20:44 2016 +0100 +++ b/interfaces/mushra.js Fri May 27 12:20:51 2016 +0100 @@ -131,43 +131,6 @@ { document.getElementById("pageTitle").textContent = interfaceObj.title; } - var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options); - for (var option of interfaceOptions) - { - if (option.type == "show") - { - switch(option.name) { - case "playhead": - var playbackHolder = document.getElementById('playback-holder'); - if (playbackHolder == null) - { - playbackHolder = document.createElement('div'); - playbackHolder.style.width = "100%"; - playbackHolder.align = 'center'; - playbackHolder.appendChild(interfaceContext.playhead.object); - feedbackHolder.appendChild(playbackHolder); - } - break; - case "page-count": - var pagecountHolder = document.getElementById('page-count'); - if (pagecountHolder == null) - { - pagecountHolder = document.createElement('div'); - pagecountHolder.id = 'page-count'; - } - pagecountHolder.innerHTML = 'Page '+(testState.stateIndex+1)+' of '+testState.stateMap.length+''; - var inject = document.getElementById('interface-buttons'); - inject.appendChild(pagecountHolder); - break; - case "volume": - if (document.getElementById('master-volume-holder') == null) - { - feedbackHolder.appendChild(interfaceContext.volume.object); - } - break; - } - } - } // Delete outside reference var outsideReferenceHolder = document.getElementById("outside-reference-holder"); @@ -232,9 +195,47 @@ }); - if (audioHolderObject.showElementComments) { - interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true); - } + + var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options); + for (var option of interfaceOptions) + { + if (option.type == "show") + { + switch(option.name) { + case "playhead": + var playbackHolder = document.getElementById('playback-holder'); + if (playbackHolder == null) + { + playbackHolder = document.createElement('div'); + playbackHolder.style.width = "100%"; + playbackHolder.align = 'center'; + playbackHolder.appendChild(interfaceContext.playhead.object); + feedbackHolder.appendChild(playbackHolder); + } + break; + case "page-count": + var pagecountHolder = document.getElementById('page-count'); + if (pagecountHolder == null) + { + pagecountHolder = document.createElement('div'); + pagecountHolder.id = 'page-count'; + } + pagecountHolder.innerHTML = 'Page '+(testState.stateIndex+1)+' of '+testState.stateMap.length+''; + var inject = document.getElementById('interface-buttons'); + inject.appendChild(pagecountHolder); + break; + case "volume": + if (document.getElementById('master-volume-holder') == null) + { + feedbackHolder.appendChild(interfaceContext.volume.object); + } + break; + case "comments": + interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true); + break; + } + } + } $(audioHolderObject.commentQuestions).each(function(index,element) { var node = interfaceContext.createCommentQuestion(element); diff -r 002be75d71df -r 4718cd881d3a js/core.js --- a/js/core.js Fri May 27 11:20:44 2016 +0100 +++ b/js/core.js Fri May 27 12:20:51 2016 +0100 @@ -1677,7 +1677,7 @@ } else { this.outputGain.gain.setValueAtTime(0.0,startTime); } - this.bufferNode.start(startTime); + this.bufferNode.start(startTime,this.specification.startTime || 0, this.specification.stopTime-this.specification.startTime || this.buffer.buffer.duration); this.bufferNode.playbackStartTime = audioEngineContext.timer.getTestTime(); } }; @@ -2488,7 +2488,7 @@ this.outsideReferenceHolder = document.createElement('button'); this.outsideReferenceHolder.className = 'outside-reference'; this.outsideReferenceHolder.setAttribute('track-id',index); - this.outsideReferenceHolder.textContent = "Play Reference"; + this.outsideReferenceHolder.textContent = this.parent.specification.label || "Reference"; this.outsideReferenceHolder.disabled = true; this.outsideReferenceHolder.onclick = function(event) @@ -2511,7 +2511,7 @@ progress = progress.split('.')[0]; this.outsideReferenceHolder.textContent = progress+'%'; } else { - this.outsideReferenceHolder.textContent = "Play Reference"; + this.outsideReferenceHolder.textContent = this.parent.specification.label || "Reference"; } }; this.startPlayback = function() @@ -2536,7 +2536,7 @@ }; this.getPresentedId = function() { - return 'Reference'; + return this.parent.specification.label || "Reference"; }; this.canMove = function() { diff -r 002be75d71df -r 4718cd881d3a js/specification.js --- a/js/specification.js Fri May 27 11:20:44 2016 +0100 +++ b/js/specification.js Fri May 27 12:20:51 2016 +0100 @@ -442,7 +442,6 @@ this.hostURL = undefined; this.randomiseOrder = undefined; this.loop = undefined; - this.showElementComments = undefined; this.outsideReference = null; this.loudness = null; this.label = null; @@ -626,6 +625,9 @@ this.marker = null; this.enforce = false; this.gain = 0.0; + this.label = null; + this.startTime = null; + this.stopTime = null; this.schema = specification.schema.getAllElementsByName('audioelement')[0];; this.parent = null; this.decode = function(parent,xml) diff -r 002be75d71df -r 4718cd881d3a test_create/attributes.json --- a/test_create/attributes.json Fri May 27 11:20:44 2016 +0100 +++ b/test_create/attributes.json Fri May 27 12:20:51 2016 +0100 @@ -13,7 +13,6 @@ "repeatCount": "Repeat Count", "loop": "Loop playback", "synchronous": "Synchronous playback", - "showElementComments": "Show Comment Boxes", "type": "Type", "min": "Minimum", "max": "Maximum", diff -r 002be75d71df -r 4718cd881d3a test_create/test_core.js --- a/test_create/test_core.js Fri May 27 11:20:44 2016 +0100 +++ b/test_create/test_core.js Fri May 27 12:20:51 2016 +0100 @@ -1332,7 +1332,7 @@ span.textContent = "NOTE FOR SAFARI! You cannot right click on the below link and save it as a file, Safari does not like that at all. Instead click on it to open the XML, the Press Cmd+S to open the save dialogue. Make sure you have 'save as Page Source' selected on the bottom of the window. Currently Safari has no plans to support the HTML 'download' attribute which causes this problem"; obj.content.appendChild(span); var link = document.createElement("div"); - link.appendChild(doc.firstElementChild); + link.appendChild(doc.firstChild); var file = [link.innerHTML]; var bb = new Blob(file,{type : 'application/xml'}); var dnlk = window.URL.createObjectURL(bb); @@ -1946,6 +1946,31 @@ this.deleteNode.root.textContent = "Delete Entry"; this.deleteNode.root.addEventListener("click",this.deleteNode,false); this.buttonDOM.appendChild(this.deleteNode.root); + + this.moveToPosition = function(new_index){ + new_index = Math.min(new_index,this.parent.children.length); + var curr_index = this.parent.children.findIndex(function(elem){ + if (elem == this) {return true;} else {return false;} + },this); + // Split at the current location to remove the node and shift all the children up + var tail = this.parent.children.splice(curr_index+1); + this.parent.children.pop(); + this.parent.children = this.parent.children.concat(tail); + + //Split at the new location and insert the node + tail = this.parent.children.splice(new_index); + this.parent.children.push(this); + this.parent.children = this.parent.children.concat(tail); + + // Re-build the specification + this.parent.specification.options = []; + this.parent.childrenDOM.innerHTML = ""; + for (var obj of this.parent.children) { + this.parent.specification.options.push(obj.specification); + this.parent.childrenDOM.appendChild(obj.rootDOM); + } + + } } this.addNode = { root: document.createElement("button"), diff -r 002be75d71df -r 4718cd881d3a tests/examples/AB_example.xml --- a/tests/examples/AB_example.xml Fri May 27 11:20:44 2016 +0100 +++ b/tests/examples/AB_example.xml Fri May 27 12:20:51 2016 +0100 @@ -50,9 +50,10 @@ + - + Comment on fragment Depth @@ -70,7 +71,7 @@ - + Comment on fragment Depth diff -r 002be75d71df -r 4718cd881d3a tests/examples/horizontal_example.xml --- a/tests/examples/horizontal_example.xml Fri May 27 11:20:44 2016 +0100 +++ b/tests/examples/horizontal_example.xml Fri May 27 12:20:51 2016 +0100 @@ -16,9 +16,10 @@ + - + -50 diff -r 002be75d71df -r 4718cd881d3a tests/examples/mushra_example.xml --- a/tests/examples/mushra_example.xml Fri May 27 11:20:44 2016 +0100 +++ b/tests/examples/mushra_example.xml Fri May 27 12:20:51 2016 +0100 @@ -53,7 +53,7 @@ - + Comment on fragment @@ -82,10 +82,11 @@ - + Comment on fragment Example Test Question + Min Max diff -r 002be75d71df -r 4718cd881d3a tests/examples/project.xml --- a/tests/examples/project.xml Fri May 27 11:20:44 2016 +0100 +++ b/tests/examples/project.xml Fri May 27 12:20:51 2016 +0100 @@ -50,9 +50,10 @@ + - + Comment on fragment Preference @@ -88,7 +89,7 @@ - + Comment on fragment Example Test Question diff -r 002be75d71df -r 4718cd881d3a tests/examples/radio_example.xml --- a/tests/examples/radio_example.xml Fri May 27 11:20:44 2016 +0100 +++ b/tests/examples/radio_example.xml Fri May 27 12:20:51 2016 +0100 @@ -1,47 +1,37 @@ - - + + - - testTimer - elementTimer - elementInitialPosition - elementTracker - elementFlagListenedTo - elementFlagMoved - elementListenTracker - - - - - - - - - - - - - (1) Very Annoying - (2) Annoying - (3) Slightly Annoying - (4) Audible but not Annoying - (5) Inaudible - - - - - - - - - - - - - - - - - - - + + testTimer + elementTimer + elementInitialPosition + elementTracker + elementFlagListenedTo + elementFlagMoved + elementListenTracker + + + + + + + + + + + + + + (1) Very Annoying + (2) Annoying + (3) Slightly Annoying + (4) Audible but not Annoying + (5) Inaudible + + + + + + + + diff -r 002be75d71df -r 4718cd881d3a xml/test-schema.xsd --- a/xml/test-schema.xsd Fri May 27 11:20:44 2016 +0100 +++ b/xml/test-schema.xsd Fri May 27 12:20:51 2016 +0100 @@ -81,7 +81,6 @@ - @@ -161,6 +160,7 @@ + @@ -184,6 +184,20 @@ + + + + + + + + + + + + + +