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);