changeset 2872:97a52e326464

Merge branch 'master' into vnext
author Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk>
date Tue, 09 May 2017 16:11:11 +0100
parents 0228ab1777d9 (current diff) cf1a3a529177 (diff)
children fefa7c50d263 033027759cf7
files interfaces/horizontal-sliders.js interfaces/mushra.js js/core.js
diffstat 8 files changed, 44 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/interfaces/AB.js	Tue May 09 14:52:47 2017 +0100
+++ b/interfaces/AB.js	Tue May 09 16:11:11 2017 +0100
@@ -395,6 +395,10 @@
 function buttonSubmitClick() {
     var checks = testState.currentStateMap.interfaces[0].options,
         canContinue = true;
+    
+    if (interfaceContext.checkFragmentMinPlays() === false) {
+    return;
+}
 
     for (var i = 0; i < checks.length; i++) {
         if (checks[i].type == 'check') {
--- a/interfaces/ABX.js	Tue May 09 14:52:47 2017 +0100
+++ b/interfaces/ABX.js	Tue May 09 16:11:11 2017 +0100
@@ -424,6 +424,10 @@
     var checks = testState.currentStateMap.interfaces[0].options,
         canContinue = true;
 
+    if (interfaceContext.checkFragmentMinPlays() === false) {
+        return;
+    }
+
     for (var i = 0; i < checks.length; i++) {
         var checkState = true;
         if (checks[i].type == 'check') {
--- a/interfaces/ape.js	Tue May 09 14:52:47 2017 +0100
+++ b/interfaces/ape.js	Tue May 09 16:11:11 2017 +0100
@@ -750,6 +750,9 @@
     if (interfaceContext.checkHiddenReference() === false) {
         return;
     }
+    if (interfaceContext.checkFragmentMinPlays() === false) {
+        return;
+    }
 
     for (var i = 0; i < checks.length; i++) {
         var checkState = true;
--- a/interfaces/discrete.js	Tue May 09 14:52:47 2017 +0100
+++ b/interfaces/discrete.js	Tue May 09 16:11:11 2017 +0100
@@ -482,6 +482,9 @@
     if (interfaceContext.checkHiddenReference() === false) {
         return;
     }
+    if (interfaceContext.checkFragmentMinPlays() === false) {
+        return;
+    }
 
     for (var i = 0; i < checks.length; i++) {
         var checkState;
--- a/interfaces/horizontal-sliders.js	Tue May 09 14:52:47 2017 +0100
+++ b/interfaces/horizontal-sliders.js	Tue May 09 16:11:11 2017 +0100
@@ -431,6 +431,9 @@
     if (interfaceContext.checkHiddenReference() === false) {
         return;
     }
+    if (interfaceContext.checkFragmentMinPlays() === false) {
+        return;
+    }
 
     for (var i = 0; i < checks.length; i++) {
         var checkState = true;
--- a/interfaces/mushra.js	Tue May 09 14:52:47 2017 +0100
+++ b/interfaces/mushra.js	Tue May 09 16:11:11 2017 +0100
@@ -525,6 +525,9 @@
     if (interfaceContext.checkHiddenReference() === false) {
         return;
     }
+    if (interfaceContext.checkFragmentMinPlays() === false) {
+        return;
+    }
 
     for (var i = 0; i < checks.length; i++) {
         var checkState = true;
--- a/interfaces/timeline.js	Tue May 09 14:52:47 2017 +0100
+++ b/interfaces/timeline.js	Tue May 09 16:11:11 2017 +0100
@@ -496,6 +496,9 @@
     }
     var checks = testState.currentStateMap.interfaces[0].options,
         canContinue = true;
+    if (interfaceContext.checkFragmentMinPlays() === false) {
+        return;
+    }
     for (var i = 0; i < checks.length; i++) {
         var checkState = true;
         if (checks[i].type == 'check') {
--- a/js/core.js	Tue May 09 14:52:47 2017 +0100
+++ b/js/core.js	Tue May 09 16:11:11 2017 +0100
@@ -3333,6 +3333,27 @@
         }
         return state;
     };
+    this.checkFragmentMinPlays = function () {
+        var failedObjects = audioEngineContext.audioObjects.filter(function (a) {
+            var minPlays = a.specification.minNumberPlays || a.specification.parent.minNumberPlays || specification.minNumberPlays;
+            if (minPlays === undefined || a.numberOfPlays >= minPlays) {
+                return false;
+            }
+            return true;
+        });
+        if (failedObjects.length === 0) {
+            return true;
+        }
+        var failedString = [];
+        failedObjects.forEach(function (a) {
+            failedString.push(a.interfaceDOM.getPresentedId());
+        });
+        var str = "You have not played fragments " + failedString.join(", ") + " enough. Please keep listening";
+        interfaceContext.lightbox.post("Message", str);
+        this.storeErrorNode(str);
+        return false;
+    };
+
 
     this.sortFragmentsByScore = function () {
         var elements = audioEngineContext.audioObjects.filter(function (elem) {