changeset 2310:426995e02e79

Fix for #43. Added scale range check enforcement
author Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk>
date Fri, 29 Apr 2016 11:40:06 +0100
parents 64be32cd1c31
children dc0663a24604 483bd6573747
files interfaces/AB.js interfaces/ABX.js interfaces/discrete.js interfaces/horizontal-sliders.js interfaces/mushra.js js/core.js
diffstat 6 files changed, 60 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/interfaces/AB.js	Thu Apr 28 16:52:36 2016 +0100
+++ b/interfaces/AB.js	Fri Apr 29 11:40:06 2016 +0100
@@ -388,6 +388,11 @@
 				var checkState = interfaceContext.checkAllCommented();
 				if (checkState == false) {canContinue = false;}
 				break;
+            case 'scalerange':
+                // Check the scale has been used effectively
+                var checkState = interfaceContext.checkScaleRange(checks[i].min,checks[i].max);
+                if (checkState == false) {canContinue = false;}
+				break;
 			default:
 				console.log("WARNING - Check option "+checks[i].check+" is not supported on this interface");
 				break;
--- a/interfaces/ABX.js	Thu Apr 28 16:52:36 2016 +0100
+++ b/interfaces/ABX.js	Fri Apr 29 11:40:06 2016 +0100
@@ -430,6 +430,11 @@
 				var checkState = interfaceContext.checkAllCommented();
 				if (checkState == false) {canContinue = false;}
 				break;
+            case 'scalerange':
+                // Check the scale has been used effectively
+                var checkState = interfaceContext.checkScaleRange(checks[i].min,checks[i].max);
+                if (checkState == false) {canContinue = false;}
+				break;
 			default:
 				console.log("WARNING - Check option "+checks[i].check+" is not supported on this interface");
 				break;
--- a/interfaces/discrete.js	Thu Apr 28 16:52:36 2016 +0100
+++ b/interfaces/discrete.js	Fri Apr 29 11:40:06 2016 +0100
@@ -492,11 +492,11 @@
 				var checkState = interfaceContext.checkAllCommented();
 				if (checkState == false) {canContinue = false;}
 				break;
-			//case 'scalerange':
-				// Check the scale is used to its full width outlined by the node
-				//var checkState = interfaceContext.checkScaleRange();
-				//if (checkState == false) {canContinue = false;}
-			//	break;
+			case 'scalerange':
+                // Check the scale has been used effectively
+                var checkState = interfaceContext.checkScaleRange(checks[i].min,checks[i].max);
+                if (checkState == false) {canContinue = false;}
+				break;
 			default:
 				console.log("WARNING - Check option "+checks[i].check+" is not supported on this interface");
 				break;
--- a/interfaces/horizontal-sliders.js	Thu Apr 28 16:52:36 2016 +0100
+++ b/interfaces/horizontal-sliders.js	Fri Apr 29 11:40:06 2016 +0100
@@ -445,11 +445,11 @@
 				var checkState = interfaceContext.checkAllCommented();
 				if (checkState == false) {canContinue = false;}
 				break;
-			//case 'scalerange':
-				// Check the scale is used to its full width outlined by the node
-				//var checkState = interfaceContext.checkScaleRange();
-				//if (checkState == false) {canContinue = false;}
-			//	break;
+			case 'scalerange':
+                // Check the scale has been used effectively
+                var checkState = interfaceContext.checkScaleRange(checks[i].min,checks[i].max);
+                if (checkState == false) {canContinue = false;}
+				break;
 			default:
 				console.log("WARNING - Check option "+checks[i].check+" is not supported on this interface");
 				break;
--- a/interfaces/mushra.js	Thu Apr 28 16:52:36 2016 +0100
+++ b/interfaces/mushra.js	Fri Apr 29 11:40:06 2016 +0100
@@ -469,11 +469,11 @@
 				var checkState = interfaceContext.checkAllCommented();
 				if (checkState == false) {canContinue = false;}
 				break;
-			//case 'scalerange':
-				// Check the scale is used to its full width outlined by the node
-				//var checkState = interfaceContext.checkScaleRange();
-				//if (checkState == false) {canContinue = false;}
-			//	break;
+			case 'scalerange':
+                // Check the scale has been used effectively
+                var checkState = interfaceContext.checkScaleRange(checks[i].min,checks[i].max);
+                if (checkState == false) {canContinue = false;}
+				break;
 			default:
 				console.log("WARNING - Check option "+checks[i].check+" is not supported on this interface");
 				break;
--- a/js/core.js	Thu Apr 28 16:52:36 2016 +0100
+++ b/js/core.js	Fri Apr 29 11:40:06 2016 +0100
@@ -1095,6 +1095,14 @@
 		pageXMLSave(storePoint.XMLDOM, this.currentStateMap);
         storePoint.complete();
 	};
+    
+    this.getCurrentTestPage = function() {
+        if (this.stateIndex >= 0 && this.stateIndex< this.stateMap.length) {
+            return this.currentStateMap;
+        } else {
+            return null;
+        }
+    }
 }
 
 function AudioEngine(specification) {
@@ -2783,6 +2791,33 @@
         this.storeErrorNode(str);
 		return false;
 	};
+    this.checkScaleRange = function(min, max) {
+        var page = testState.getCurrentTestPage();
+        var audioObjects = audioEngineContext.audioObjects;
+        var state = true;
+        var str = "Please keep listening. ";
+        var minRanking = Infinity;
+        var maxRanking = -Infinity;
+        for (var ao of audioObjects) {
+            var rank = ao.interfaceDOM.getValue();
+            if (rank < minRanking) {minRanking = rank;}
+            if (rank > maxRanking) {maxRanking = rank;}
+        }
+        if (minRanking*100 > min) {
+            str += "At least one fragment must be below the "+min+" mark.";
+            state = false;
+        }
+        if (maxRanking*100 < max) {
+            str += "At least one fragment must be above the "+max+" mark."
+            state = false;
+        }
+        if (!state) {
+            console.log(str);
+            this.storeErrorNode(str);
+            alert(str);
+        }
+        return state;
+    }
     
     this.storeErrorNode = function(errorMessage)
     {