# HG changeset patch # User Nicholas Jillings # Date 1494342685 -3600 # Node ID fefa7c50d2632513960aba04dbca37fcbbd705a8 # Parent 0981212c091f39666142d8e477db0d0a3f9ca0d6# Parent 97a52e326464e07c2ac05011b910ed308341c48e Merge branch 'vnext' into Dev_main diff -r 0981212c091f -r fefa7c50d263 interfaces/AB.js --- a/interfaces/AB.js Tue May 09 14:53:03 2017 +0100 +++ b/interfaces/AB.js Tue May 09 16:11:25 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') { diff -r 0981212c091f -r fefa7c50d263 interfaces/ABX.js --- a/interfaces/ABX.js Tue May 09 14:53:03 2017 +0100 +++ b/interfaces/ABX.js Tue May 09 16:11:25 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') { diff -r 0981212c091f -r fefa7c50d263 interfaces/ape.js --- a/interfaces/ape.js Tue May 09 14:53:03 2017 +0100 +++ b/interfaces/ape.js Tue May 09 16:11:25 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; diff -r 0981212c091f -r fefa7c50d263 interfaces/discrete.js --- a/interfaces/discrete.js Tue May 09 14:53:03 2017 +0100 +++ b/interfaces/discrete.js Tue May 09 16:11:25 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; diff -r 0981212c091f -r fefa7c50d263 interfaces/horizontal-sliders.js --- a/interfaces/horizontal-sliders.js Tue May 09 14:53:03 2017 +0100 +++ b/interfaces/horizontal-sliders.js Tue May 09 16:11:25 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; diff -r 0981212c091f -r fefa7c50d263 interfaces/mushra.js --- a/interfaces/mushra.js Tue May 09 14:53:03 2017 +0100 +++ b/interfaces/mushra.js Tue May 09 16:11:25 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; diff -r 0981212c091f -r fefa7c50d263 interfaces/timeline.js --- a/interfaces/timeline.js Tue May 09 14:53:03 2017 +0100 +++ b/interfaces/timeline.js Tue May 09 16:11:25 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') { diff -r 0981212c091f -r fefa7c50d263 js/core.js --- a/js/core.js Tue May 09 14:53:03 2017 +0100 +++ b/js/core.js Tue May 09 16:11:25 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) {