# HG changeset patch # User Nicholas Jillings # Date 1501578566 -3600 # Node ID e2b241c88b74aefe80779780eef9bc293149678b # Parent 9c26e579e64d6794f962ad9c8f6c7e9e16c7ef50 ITU-R BS.1116 compliant template diff -r 9c26e579e64d -r e2b241c88b74 interfaces/mushra.js --- a/interfaces/mushra.js Tue Aug 01 09:13:57 2017 +0100 +++ b/interfaces/mushra.js Tue Aug 01 10:09:26 2017 +0100 @@ -179,7 +179,7 @@ audioObject.bindInterface(orNode); } else { // Create a slider per track - var label = interfaceContext.getLabel(labelType, index, audioHolderObject.labelStart); + var label = element.label || interfaceContext.getLabel(labelType, index, audioHolderObject.labelStart); var sliderObj = new sliderObject(audioObject, label); if (typeof audioHolderObject.initialPosition === "number") { diff -r 9c26e579e64d -r e2b241c88b74 js/core.js --- a/js/core.js Tue Aug 01 09:13:57 2017 +0100 +++ b/js/core.js Tue Aug 01 10:09:26 2017 +0100 @@ -1216,6 +1216,39 @@ this.currentStore = null; this.initialise = function () { + function randomiseElements(page) { + // Get the elements which are fixed / labelled + var fixed = [], + or = [], + remainder = []; + page.audioElements.forEach(function (a) { + if (a.label.length > 0 || a.postion !== undefined) { + fixed.push(a); + } else if (a.type === "outside-reference") { + or.push(a); + } else { + remainder.push(a); + } + }) + if (page.poolSize > 0 || page.randomiseOrder) { + page.randomiseOrder = true; + if (page.poolSize === 0) { + page.poolSize = page.audioElements.length; + } + page.poolSize -= fixed.length; + remainder = pickSubPool(remainder, page.poolSize); + } + // Randomise the remainders + if (page.randomiseOrder) { + remainder = randomiseOrder(remainder); + } + fixed = fixed.concat(remainder); + page.audioElements = fixed.concat(or); + page.audioElements.forEach(function (a, i) { + a.position = i; + }); + } + // Get the data from Specification var pagePool = []; specification.pages.forEach(function (page) { @@ -1253,17 +1286,7 @@ page.presentedId = i; this.stateMap.push(page); var elements = page.audioElements; - if (page.poolSize > 0 || page.randomiseOrder) { - page.randomiseOrder = true; - if (page.poolSize === 0) { - page.poolSize = elements.length; - } - elements = pickSubPool(elements, page.poolSize); - } - if (page.randomiseOrder) { - elements = randomiseOrder(elements); - } - page.audioElements = elements; + randomiseElements(page); storage.createTestPageStore(page); audioEngineContext.loadPageData(page); }, this); @@ -1325,23 +1348,6 @@ popup.hidePopup(); if (this.currentStateMap === null) { this.currentStateMap = this.stateMap[this.stateIndex]; - // Find and extract the outside reference - var elements = [], - ref = []; - var elem = this.currentStateMap.audioElements.pop(); - while (elem) { - if (elem.type == "outside-reference") { - ref.push(elem); - } else { - elements.push(elem); - } - elem = this.currentStateMap.audioElements.pop(); - } - elements = elements.reverse(); - if (this.currentStateMap.randomiseOrder) { - elements = randomiseOrder(elements); - } - this.currentStateMap.audioElements = elements.concat(ref); this.currentStore = storage.testPages[this.stateIndex]; if (this.currentStateMap.preTest !== undefined) { diff -r 9c26e579e64d -r e2b241c88b74 test_create/test_core.js --- a/test_create/test_core.js Tue Aug 01 09:13:57 2017 +0100 +++ b/test_create/test_core.js Tue Aug 01 10:09:26 2017 +0100 @@ -440,7 +440,7 @@ }]); AngularInterface.controller("page", ['$scope', '$element', '$window', function ($s, $e, $w) { $s.schema = $w.specification.schema.querySelector("element[name=\"page\"]"); - $s.page.label = "default"; + $s.page.label = $s.page.label || "default"; $s.addInterface = function () { $s.page.addInterface(); }; diff -r 9c26e579e64d -r e2b241c88b74 tests/templates/itur1116.xml --- a/tests/templates/itur1116.xml Tue Aug 01 09:13:57 2017 +0100 +++ b/tests/templates/itur1116.xml Tue Aug 01 10:09:26 2017 +0100 @@ -13,6 +13,11 @@ + + + + + Quality Imperceptible Perceptible but not annoying @@ -21,18 +26,20 @@ Very annoying - - - - Quality - - + Quality + + Imperceptible + Perceptible but not annoying + Slightly annoying + Annoying + Very annoying +