Mercurial > hg > webaudioevaluationtool
changeset 837:31d02b334ba8
Feature #1266: Checks for fragments fully played implemented
author | Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk> |
---|---|
date | Wed, 02 Dec 2015 12:05:08 +0000 |
parents | 1640c08ae2e8 |
children | 0920172d9478 |
files | ape.js core.js |
diffstat | 2 files changed, 54 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/ape.js Wed Dec 02 11:26:45 2015 +0000 +++ b/ape.js Wed Dec 02 12:05:08 2015 +0000 @@ -571,9 +571,8 @@ break; case 'fragmentFullPlayback': // Check all fragments have been played to their full length - var checkState = interfaceContext.checkAllPlayed(); + var checkState = interfaceContext.checkFragmentsFullyPlayed(); if (checkState == false) {canContinue = false;} - console.log('NOTE: fragmentFullPlayback not currently implemented, performing check fragmentPlayed instead'); break; case 'fragmentMoved': // Check all fragment sliders have been moved.
--- a/core.js Wed Dec 02 11:26:45 2015 +0000 +++ b/core.js Wed Dec 02 12:05:08 2015 +0000 @@ -2186,4 +2186,57 @@ } return true; }; + + this.checkFragmentsFullyPlayed = function () + { + // Checks the entire file has been played back + // NOTE ! This will return true IF playback is Looped!!! + if (audioEngineContext.loopPlayback) + { + console.log("WARNING - Looped source: Cannot check fragments are fully played"); + return true; + } + var check_pass = true; + var error_obj = []; + for (var i = 0; i<audioEngineContext.audioObjects.length; i++) + { + var object = audioEngineContext.audioObjects[i]; + var time = object.buffer.duration; + var metric = object.metric; + var passed = false; + for (var j=0; j<metric.listenTracker.length; j++) + { + var bt = metric.listenTracker[j].getElementsByTagName('buffertime'); + var start_time = Number(bt[0].getAttribute('start')); + var stop_time = Number(bt[0].getAttribute('stop')); + var delta = stop_time - start_time; + if (delta >= time) + { + passed = true; + break; + } + } + if (passed == false) + { + check_pass = false; + console.log("Continue listening to track-"+i); + error_obj.push(i); + } + } + if (check_pass == false) + { + var str_start = "You have not listened to fragments "; + for (var i=0; i<error_obj.length; i++) + { + str_start += error_obj[i]; + if (i != error_obj.length-1) + { + str_start += ', '; + } + } + str_start += ". Please keep listening"; + console.log("[ALERT]: "+str_start); + alert(str_start); + } + }; } \ No newline at end of file