# HG changeset patch # User www-data # Date 1494343263 -3600 # Node ID 7e864b79f169034ed4a9f6e5d9c583e16719eca8 # Parent 8451aaf83c43dd96bb11446dbf9d47ec34684f31# Parent cf1a3a52917793dc24ed6d1016e94daca9414839 Merge branch 'master' of https://github.com/BrechtDeMan/WebAudioEvaluationTool diff -r 8451aaf83c43 -r 7e864b79f169 interfaces/AB.js --- a/interfaces/AB.js Tue May 09 15:20:59 2017 +0100 +++ b/interfaces/AB.js Tue May 09 16:21:03 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 8451aaf83c43 -r 7e864b79f169 interfaces/ABX.js --- a/interfaces/ABX.js Tue May 09 15:20:59 2017 +0100 +++ b/interfaces/ABX.js Tue May 09 16:21:03 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 8451aaf83c43 -r 7e864b79f169 interfaces/ape.js --- a/interfaces/ape.js Tue May 09 15:20:59 2017 +0100 +++ b/interfaces/ape.js Tue May 09 16:21:03 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 8451aaf83c43 -r 7e864b79f169 interfaces/discrete.js --- a/interfaces/discrete.js Tue May 09 15:20:59 2017 +0100 +++ b/interfaces/discrete.js Tue May 09 16:21:03 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 8451aaf83c43 -r 7e864b79f169 interfaces/horizontal-sliders.js --- a/interfaces/horizontal-sliders.js Tue May 09 15:20:59 2017 +0100 +++ b/interfaces/horizontal-sliders.js Tue May 09 16:21:03 2017 +0100 @@ -428,6 +428,9 @@ if (interfaceContext.checkHiddenReference() === false) { return; } + if (interfaceContext.checkFragmentMinPlays() === false) { + return; + } for (var i = 0; i < checks.length; i++) { var checkState = true; diff -r 8451aaf83c43 -r 7e864b79f169 interfaces/mushra.js --- a/interfaces/mushra.js Tue May 09 15:20:59 2017 +0100 +++ b/interfaces/mushra.js Tue May 09 16:21:03 2017 +0100 @@ -492,6 +492,9 @@ if (interfaceContext.checkHiddenReference() === false) { return; } + if (interfaceContext.checkFragmentMinPlays() === false) { + return; + } for (var i = 0; i < checks.length; i++) { var checkState = true; diff -r 8451aaf83c43 -r 7e864b79f169 interfaces/timeline.js --- a/interfaces/timeline.js Tue May 09 15:20:59 2017 +0100 +++ b/interfaces/timeline.js Tue May 09 16:21:03 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 8451aaf83c43 -r 7e864b79f169 js/core.js --- a/js/core.js Tue May 09 15:20:59 2017 +0100 +++ b/js/core.js Tue May 09 16:21:03 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.storeErrorNode = function (errorMessage) { var time = audioEngineContext.timer.getTestTime();