# HG changeset patch # User www-data # Date 1463750456 -3600 # Node ID ef2e0f925be9d5f2e6c8b3fa93f75aedea92d9f7 # Parent 0cbff12b2eece94ade0e7fc360ae1eff692624d0# Parent 2ddc68898dff8cbebad9c8a71a937172494cf259 Merge branch 'master' of https://github.com/BrechtDeMan/WebAudioEvaluationTool diff -r 0cbff12b2eec -r ef2e0f925be9 index.html --- a/index.html Thu May 19 13:21:03 2016 +0100 +++ b/index.html Fri May 20 14:20:56 2016 +0100 @@ -17,11 +17,7 @@ - - - - - + diff -r 0cbff12b2eec -r ef2e0f925be9 interfaces/AB.js --- a/interfaces/AB.js Thu May 19 13:21:03 2016 +0100 +++ b/interfaces/AB.js Fri May 20 14:20:56 2016 +0100 @@ -5,7 +5,7 @@ // Get the dimensions of the screen available to the page var width = window.innerWidth; var height = window.innerHeight; - interfaceContext.insertPoint.innerHTML = null; // Clear the current schema + interfaceContext.insertPoint.innerHTML = ""; // Clear the current schema // Custom comparator Object Interface.prototype.comparator = null; @@ -325,7 +325,7 @@ }; this.boxHolders = document.getElementById('box-holders'); - this.boxHolders.innerHTML = null; + this.boxHolders.innerHTML = ""; this.comparators = []; this.selected = null; diff -r 0cbff12b2eec -r ef2e0f925be9 interfaces/ABX.js --- a/interfaces/ABX.js Thu May 19 13:21:03 2016 +0100 +++ b/interfaces/ABX.js Fri May 20 14:20:56 2016 +0100 @@ -10,7 +10,7 @@ // Use this to do any one-time page / element construction. For instance, placing any stationary text objects, // holding div's, or setting up any nodes which are present for the entire test sequence - interfaceContext.insertPoint.innerHTML = null; // Clear the current schema + interfaceContext.insertPoint.innerHTML = ""; // Clear the current schema Interface.prototype.checkScaleRange = function(min, max) { var page = testState.getCurrentTestPage(); @@ -126,7 +126,7 @@ function loadTest(page) { // Called each time a new test page is to be build. The page specification node is the only item passed in - document.getElementById('box-holders').innerHTML = null; + document.getElementById('box-holders').innerHTML = ""; var interfaceObj = page.interfaces; if (interfaceObj.length > 1) diff -r 0cbff12b2eec -r ef2e0f925be9 interfaces/ape.js --- a/interfaces/ape.js Thu May 19 13:21:03 2016 +0100 +++ b/interfaces/ape.js Fri May 20 14:20:56 2016 +0100 @@ -266,7 +266,7 @@ feedbackHolder.id = 'feedbackHolder'; testContent.style.zIndex = 1; - interfaceContext.insertPoint.innerHTML = null; // Clear the current schema + interfaceContext.insertPoint.innerHTML = ""; // Clear the current schema // Inject into HTML testContent.appendChild(title); // Insert the title @@ -291,8 +291,8 @@ var feedbackHolder = document.getElementById('feedbackHolder'); var sliderHolder = document.getElementById('slider-holder'); - feedbackHolder.innerHTML = null; - sliderHolder.innerHTML = null; + feedbackHolder.innerHTML = ""; + sliderHolder.innerHTML = ""; // Delete outside reference var outsideReferenceHolder = document.getElementById('outside-reference'); diff -r 0cbff12b2eec -r ef2e0f925be9 interfaces/discrete.js --- a/interfaces/discrete.js Thu May 19 13:21:03 2016 +0100 +++ b/interfaces/discrete.js Fri May 20 14:20:56 2016 +0100 @@ -92,7 +92,7 @@ feedbackHolder.id = 'feedbackHolder'; testContent.style.zIndex = 1; - interfaceContext.insertPoint.innerHTML = null; // Clear the current schema + interfaceContext.insertPoint.innerHTML = ""; // Clear the current schema // Inject into HTML testContent.appendChild(title); // Insert the title @@ -113,7 +113,7 @@ var id = page.id; var feedbackHolder = document.getElementById('feedbackHolder'); - feedbackHolder.innerHTML = null; + feedbackHolder.innerHTML = ""; var interfaceObj = page.interfaces; if (interfaceObj.length > 1) { @@ -170,7 +170,7 @@ } var sliderBox = document.getElementById('slider-holder'); - sliderBox.innerHTML = null; + sliderBox.innerHTML = ""; var commentBoxPrefix = "Comment on track"; if (interfaceObj.commentBoxPrefix != undefined) { @@ -405,9 +405,15 @@ var numObj = document.getElementsByClassName('track-slider').length; var totalHeight = (numObj * 66)-30; document.getElementById('scale-holder').style.width = window.innerWidth-220 + 'px'; + // Cheers edge for making me delete a canvas every resize. var canvas = document.getElementById('scale-canvas'); - canvas.width = window.innerWidth-520; - canvas.height = totalHeight; + var new_canvas = document.createElement("canvas"); + new_canvas.id = 'scale-canvas'; + new_canvas.style.marginLeft = "150px"; + canvas.parentElement.appendChild(new_canvas); + canvas.parentElement.removeChild(canvas); + new_canvas.width = window.innerWidth-520; + new_canvas.height = totalHeight; for (var i in audioEngineContext.audioObjects) { if (audioEngineContext.audioObjects[i].specification.type != 'outside-reference'){ @@ -431,7 +437,7 @@ var height = canvas.height; var width = canvas.width; var textHolder = document.getElementById('scale-text-holder'); - textHolder.innerHTML = null; + textHolder.innerHTML = ""; ctx.fillStyle = "#000000"; ctx.setLineDash([1,4]); for (var scale of scales) diff -r 0cbff12b2eec -r ef2e0f925be9 interfaces/horizontal-sliders.js --- a/interfaces/horizontal-sliders.js Thu May 19 13:21:03 2016 +0100 +++ b/interfaces/horizontal-sliders.js Fri May 20 14:20:56 2016 +0100 @@ -92,7 +92,7 @@ feedbackHolder.id = 'feedbackHolder'; testContent.style.zIndex = 1; - interfaceContext.insertPoint.innerHTML = null; // Clear the current schema + interfaceContext.insertPoint.innerHTML = ""; // Clear the current schema // Inject into HTML testContent.appendChild(title); // Insert the title @@ -113,7 +113,7 @@ var id = page.id; var feedbackHolder = document.getElementById('feedbackHolder'); - feedbackHolder.innerHTML = null; + feedbackHolder.innerHTML = ""; var interfaceObj = page.interfaces; if (interfaceObj.length > 1) @@ -171,7 +171,7 @@ } var sliderBox = document.getElementById('slider-holder'); - sliderBox.innerHTML = null; + sliderBox.innerHTML = ""; var commentBoxPrefix = "Comment on track"; if (interfaceObj.commentBoxPrefix != undefined) { @@ -359,9 +359,15 @@ var numObj = document.getElementsByClassName('track-slider').length; var totalHeight = (numObj * 125)-25; document.getElementById('scale-holder').style.width = window.innerWidth-220 + 'px'; + // Cheers edge for making me delete a canvas every resize. var canvas = document.getElementById('scale-canvas'); - canvas.width = window.innerWidth-420; - canvas.height = totalHeight; + var new_canvas = document.createElement("canvas"); + new_canvas.id = 'scale-canvas'; + new_canvas.style.marginLeft = "100px"; + canvas.parentElement.appendChild(new_canvas); + canvas.parentElement.removeChild(canvas); + new_canvas.width = window.innerWidth-420; + new_canvas.height = totalHeight; for (var i in audioEngineContext.audioObjects) { if (audioEngineContext.audioObjects[i].specification.type != 'outside-reference'){ @@ -384,7 +390,7 @@ var height = canvas.height; var width = canvas.width; var textHolder = document.getElementById('scale-text-holder'); - textHolder.innerHTML = null; + textHolder.innerHTML = ""; ctx.fillStyle = "#000000"; ctx.setLineDash([1,4]); for (var scale of scales) diff -r 0cbff12b2eec -r ef2e0f925be9 interfaces/mushra.css --- a/interfaces/mushra.css Thu May 19 13:21:03 2016 +0100 +++ b/interfaces/mushra.css Fri May 20 14:20:56 2016 +0100 @@ -101,6 +101,13 @@ border: 1px solid #000; } +input[type=range]::-ms-track { + cursor: pointer; + background: #fff; + border-radius: 4px; + border: 1px solid #000; +} + input.track-slider-not-moved[type=range]::-webkit-slider-runnable-track { background: #aaa; } @@ -123,6 +130,16 @@ margin-left: -4px; } +input[type=range]::-ms-thumb { + cursor: pointer; + margin-top: -1px; + margin-left: -4px; +} + +input[type=range]::-ms-tooltip { + visibility:hidden; +} + div#page-count { float: left; margin: 0px 5px; diff -r 0cbff12b2eec -r ef2e0f925be9 interfaces/mushra.js --- a/interfaces/mushra.js Thu May 19 13:21:03 2016 +0100 +++ b/interfaces/mushra.js Fri May 20 14:20:56 2016 +0100 @@ -94,7 +94,7 @@ feedbackHolder.id = 'feedbackHolder'; testContent.style.zIndex = 1; - interfaceContext.insertPoint.innerHTML = null; // Clear the current schema + interfaceContext.insertPoint.innerHTML = ""; // Clear the current schema // Inject into HTML testContent.appendChild(title); // Insert the title @@ -114,7 +114,7 @@ var id = audioHolderObject.id; var feedbackHolder = document.getElementById('feedbackHolder'); - feedbackHolder.innerHTML = null; + feedbackHolder.innerHTML = ""; var interfaceObj = audioHolderObject.interfaces; if (interfaceObj.length > 1) { @@ -170,7 +170,7 @@ } var sliderBox = document.getElementById('slider-holder'); - sliderBox.innerHTML = null; + sliderBox.innerHTML = ""; var commentBoxPrefix = "Comment on track"; if (interfaceObj.commentBoxPrefix != undefined) { @@ -390,9 +390,14 @@ } document.getElementById('scale-holder').style.marginLeft = (diff-100) + 'px'; document.getElementById('scale-text-holder').style.height = window.innerHeight-194 + 'px'; + // Cheers edge for making me delete a canvas every resize. var canvas = document.getElementById('scale-canvas'); - canvas.width = totalWidth; - canvas.height = window.innerHeight-194; + var new_canvas = document.createElement("canvas"); + new_canvas.id = 'scale-canvas'; + canvas.parentElement.appendChild(new_canvas); + canvas.parentElement.removeChild(canvas); + new_canvas.width = totalWidth; + new_canvas.height = window.innerHeight-194; drawScale(); } @@ -407,9 +412,10 @@ var ctx = canvas.getContext("2d"); var height = canvas.height; var width = canvas.width; + ctx.clearRect(0,0,canvas.width,canvas.height); var draw_heights = [24, height-34]; var textHolder = document.getElementById('scale-text-holder'); - textHolder.innerHTML = null; + textHolder.innerHTML = ""; var lastHeight = 0; for (var scale of scales) { diff -r 0cbff12b2eec -r ef2e0f925be9 js/core.js --- a/js/core.js Thu May 19 13:21:03 2016 +0100 +++ b/js/core.js Fri May 20 14:20:56 2016 +0100 @@ -116,7 +116,7 @@ } } -window.onload = function() { +var onload = function() { // Function called once the browser has loaded all files. // This should perform any initial commands such as structure / loading documents @@ -562,7 +562,13 @@ } function randomString(length) { - return Math.round((Math.pow(36, length + 1) - Math.random() * Math.pow(36, length))).toString(36).slice(1); + var str = "" + for (var i=0; i 0){ - if (xml.getAllElementsByTagName("state")[0].textContent == "OK") { + if (this.request.response.length == 0) { + console.log("Error: Server did not respond"); + return; + } + if(xml.getElementsByTagName("state").length > 0){ + if (xml.getElementsByTagName("state")[0].textContent == "OK") { this.key = xml.getAllElementsByTagName("key")[0].textContent; this.parent.root.setAttribute("key",this.key); this.parent.root.setAttribute("state","empty"); @@ -3215,3 +3225,5 @@ return this.root; }; } + +onload(); \ No newline at end of file diff -r 0cbff12b2eec -r ef2e0f925be9 js/loader.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/js/loader.js Fri May 20 14:20:56 2016 +0100 @@ -0,0 +1,29 @@ +// Script to load the relevant JS files if the system supports it + +window.onload = function() { + // First check if the Web Audio API is supported + if (window.AudioContext == undefined && window.webkitAudioContext == undefined) { + // Display unsuported error message + var body = document.getElementsByTagName("body")[0]; + body.innerHTML = "

Sorry! Your browser is not supported :(

Your browser does not support the HTML5 Web Audio API. Please use one of the following supported browsers instead.

"; + var table = document.createElement("table"); + table.border = "0"; + table.innerHTML = "Chromev10 or newer"; + table.innerHTML += "Firefoxv25 or newerSafari (OSX) v6 or newer, OSX only"; + table.innerHTML += "Safari (iOS)iOS 6.1 or newer"; + table.innerHTML += "Edge12 or newer"; + body.appendChild(table); + } else { + var head = document.getElementsByTagName("head")[0]; + var src_list = ['js/specification.js', 'js/core.js', 'js/loudness.js', 'js/xmllint.js', 'js/WAVE.js']; + for (var i=0; i attributes this.interface = null; this.projectReturn = null; this.returnURL = null; this.randomiseOrder = null; - this.testPages = null; + this.poolSize = null; + this.loudness = null; + this.sampleRate = null; + this.calibration = null; + this.crossFade = null; + this.preSilence = null; + this.postSilence = null; + + // nodes + this.metrics = null; + this.preTest = undefined; + this.postTest = undefined; this.pages = []; - this.metrics = null; this.interfaces = null; - this.loudness = null; this.errors = []; this.schema = null; this.exitText = "Thank you."; @@ -75,9 +85,8 @@ var schemaSetup = this.schema.getAllElementsByName('setup')[0]; // First decode the attributes var attributes = schemaSetup.getAllElementsByTagName('xs:attribute'); - for (var i in attributes) + for (var i=0; i") file.close(); @@ -136,7 +139,7 @@ varLen = int(self.headers['Content-Length']) postVars = self.rfile.read(varLen) print("Saving file key "+key) - file = open('../saves/save-'+key+'.xml','w') + file = open('../saves/save-'+key+'.xml','wb') file.write(postVars) file.close() try: @@ -149,7 +152,11 @@ self.send_response(200) self.send_header("Content-type", "text/xml") self.end_headers() - self.wfile.write('OK"saves/'+curFileName+'"') + reply = 'OK"saves/'+curFileName+'"' + if sys.version_info[0] == 2: + self.wfile.write(reply) + elif sys.version_info[0] == 3: + self.wfile.write(bytes(reply, "utf-8")) curSaveIndex += 1 curFileName = 'test-'+str(curSaveIndex)+'.xml' diff -r 0cbff12b2eec -r ef2e0f925be9 test.html --- a/test.html Thu May 19 13:21:03 2016 +0100 +++ b/test.html Fri May 20 14:20:56 2016 +0100 @@ -17,11 +17,7 @@ - - - - - +