# HG changeset patch # User Nicholas Jillings # Date 1458144965 0 # Node ID 85f2fc7a17cadd64a50bcfbb5b626a475ab06d8a # Parent e0934138c6769e17b060a076aa3aec96d2d80124 ABX Implemented. diff -r e0934138c676 -r 85f2fc7a17ca interfaces/ABX.js --- a/interfaces/ABX.js Wed Mar 16 15:17:04 2016 +0000 +++ b/interfaces/ABX.js Wed Mar 16 16:16:05 2016 +0000 @@ -10,6 +10,8 @@ // 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 + // Custom comparator Object Interface.prototype.comparator = null; @@ -100,7 +102,61 @@ 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; + + var interfaceObj = page.interfaces; + if (interfaceObj.length > 1) + { + console.log("WARNING - This interface only supports one node per page. Using first interface node"); + } + interfaceObj = interfaceObj[0]; + + if(interfaceObj.title != null) + { + 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.style.float = "left"; + 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; + } + } + } + interfaceContext.comparator = new comparator(page); + resizeWindow(null); } function comparator(page) @@ -326,12 +382,76 @@ function resizeWindow(event) { - // Called on every window resize event, use this to scale your page properly + document.getElementById('submit').style.left = (window.innerWidth-250)/2 + 'px'; + var numObj = 3; + var boxW = numObj*312; + var diff = window.innerWidth - boxW; + while (diff < 0) + { + numObj = Math.ceil(numObj/2); + boxW = numObj*312; + diff = window.innerWidth - boxW; + } + document.getElementById('box-holders').style.marginLeft = diff/2 + 'px'; + document.getElementById('box-holders').style.marginRight = diff/2 + 'px'; + document.getElementById('box-holders').style.width = boxW + 'px'; } function buttonSubmitClick() { - testState.advanceState(); + var checks = []; + checks = checks.concat(testState.currentStateMap.interfaces[0].options); + checks = checks.concat(specification.interfaces.options); + var canContinue = true; + + for (var i=0; i