Mercurial > hg > webaudioevaluationtool
changeset 2704:3a0be105ee85
#180. Fixed checkScaleRange
author | Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk> |
---|---|
date | Mon, 13 Mar 2017 13:29:28 +0000 |
parents | 536cb44c7292 |
children | 7b1dfb582637 |
files | interfaces/ape.js js/core.js |
diffstat | 2 files changed, 39 insertions(+), 28 deletions(-) [+] |
line wrap: on
line diff
--- a/interfaces/ape.js Mon Mar 13 11:53:36 2017 +0000 +++ b/interfaces/ape.js Mon Mar 13 13:29:28 2017 +0000 @@ -101,17 +101,17 @@ max: scaleRange.max }; })(); - var outsideBounds = sliderHolder.sliders.some(function (elem) { - var a = convSliderPosToRate(elem); - if (a <= scales.min) { - return true; + var range = sliderHolder.sliders.reduce(function (a, b) { + var v = convSliderPosToRate(b) * 100.0; + return { + min: Math.min(a.min, v), + max: Math.max(a.max, v) } - if (a >= scales.max) { - return true; - } - return false; + }, { + min: 100, + max: 0 }); - if (!outsideBounds) { + if (range.min >= scales.min || range.max <= scales.max) { state = false; str += 'On axis "' + sliderHolder.interfaceObject.title + '" you have not used the full width of the scale. '; }
--- a/js/core.js Mon Mar 13 11:53:36 2017 +0000 +++ b/js/core.js Mon Mar 13 13:29:28 2017 +0000 @@ -3288,31 +3288,42 @@ } return true; }; - this.checkScaleRange = function (min, max) { + this.checkScaleRange = function () { var page = testState.getCurrentTestPage(); - var audioObjects = audioEngineContext.audioObjects; + var interfaceObject = page.interfaces; var state = true; var str = "Please keep listening. "; - var minRanking = Infinity; - var maxRanking = -Infinity; - audioEngineContext.audioObjects.forEach(function (ao) { - var rank = ao.interfaceDOM.getValue(); - if (rank < minRanking) { - minRanking = rank; + if (interfaceObject === undefined) { + return true; + } + interfaceObject = interfaceObject[0]; + var scales = (function () { + var scaleRange = interfaceObject.options.find(function (a) { + return a.name == "scalerange"; + }); + return { + min: scaleRange.min, + max: scaleRange.max + }; + })(); + var range = audioEngineContext.audioObjects.reduce(function (a, b) { + var v = b.interfaceDOM.getValue(); + return { + min: Math.min(a.min, v), + max: Math.max(a.max, v) } - if (rank > maxRanking) { - maxRanking = rank; - } - }, this); - if (minRanking * 100 > min) { - str += "At least one fragment must be below the " + min + " mark."; + }, { + min: 100, + max: 0 + }); + if (range.min > scales.min) { + str += "At least one fragment must be below the " + range.min + " mark."; + state = false; + } else if (range.max < sacles.max) { + str += "At least one fragment must be above the " + range.max + " mark."; state = false; } - if (maxRanking * 100 < max) { - str += "At least one fragment must be above the " + max + " mark."; - state = false; - } - if (!state) { + if (state === false) { console.log(str); this.storeErrorNode(str); interfaceContext.lightbox.post("Error", str);