From 23c12d73321469743424264d9625eab72d8eb179 Mon Sep 17 00:00:00 2001 From: Florian Haas Date: Sat, 11 May 2019 22:23:28 +0200 Subject: [PATCH] Notes: Weakly enforce a minimum allocated pacing time per slide When using the totalTime-based pacing calculation, a presenter may inadvertently set totalTime and per-slide data-timing attributes in such a way that the pacing time for some slides is impossibly low or even negative. Add a check to ensure that the pacing on a slide never falls below a configurable minimum, defaulting to 0. Display an alert if the pacing for any slide(s) falls below the threshold. --- README.md | 7 +++++++ plugin/notes/notes.html | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/README.md b/README.md index 557ca4b..9220b2b 100644 --- a/README.md +++ b/README.md @@ -346,6 +346,13 @@ Reveal.initialize({ // instead of using the defaultTiming value totalTime: 0, + // Specify the minimum amount of time you want to allot to + // each slide, if using the totalTime calculation method. If + // the automated time allocation causes slide pacing to fall + // below this threshold, then you will see an alert in the + // speaker notes window + minimumTimePerSlide: 0; + // Enable slide navigation via mouse wheel mouseWheel: false, diff --git a/plugin/notes/notes.html b/plugin/notes/notes.html index b5635bc..fdb81ad 100644 --- a/plugin/notes/notes.html +++ b/plugin/notes/notes.html @@ -540,6 +540,7 @@ callRevealApi( 'getSlidesAttributes', [], function ( slideAttributes ) { callRevealApi( 'getConfig', [], function ( config ) { var totalTime = config.totalTime; + var minTimePerSlide = config.minimumTimePerSlide || 0; var defaultTiming = config.defaultTiming; if ((defaultTiming == null) && (totalTime == null)) { callback(null); @@ -574,6 +575,11 @@ // And now we replace every zero-value timing with that average timings = timings.map( function(x) { return (x==0 ? timePerSlide : x) } ); } + var slidesUnderMinimum = timings.filter( function(x) { return (x < minTimePerSlide) } ).length + if ( slidesUnderMinimum ) { + message = "The pacing time for " + slidesUnderMinimum + " slide(s) is under the configured minimum of " + minTimePerSlide + " seconds. Check the data-timing attribute on individual slides, or consider increasing the totalTime or minimumTimePerSlide configuration options (or removing some slides)."; + alert(message); + } callback( timings ); } ); } );