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.
This commit is contained in:
		| @@ -346,6 +346,13 @@ Reveal.initialize({ | |||||||
| 	// instead of using the defaultTiming value | 	// instead of using the defaultTiming value | ||||||
| 	totalTime: 0, | 	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 | 	// Enable slide navigation via mouse wheel | ||||||
| 	mouseWheel: false, | 	mouseWheel: false, | ||||||
|  |  | ||||||
|   | |||||||
| @@ -540,6 +540,7 @@ | |||||||
| 					callRevealApi( 'getSlidesAttributes', [], function ( slideAttributes ) { | 					callRevealApi( 'getSlidesAttributes', [], function ( slideAttributes ) { | ||||||
| 						callRevealApi( 'getConfig', [], function ( config ) { | 						callRevealApi( 'getConfig', [], function ( config ) { | ||||||
| 							var totalTime = config.totalTime; | 							var totalTime = config.totalTime; | ||||||
|  | 							var minTimePerSlide = config.minimumTimePerSlide || 0; | ||||||
| 							var defaultTiming = config.defaultTiming; | 							var defaultTiming = config.defaultTiming; | ||||||
| 							if ((defaultTiming == null) && (totalTime == null)) { | 							if ((defaultTiming == null) && (totalTime == null)) { | ||||||
| 								callback(null); | 								callback(null); | ||||||
| @@ -574,6 +575,11 @@ | |||||||
| 								// And now we replace every zero-value timing with that average | 								// And now we replace every zero-value timing with that average | ||||||
| 								timings = timings.map( function(x) { return (x==0 ? timePerSlide : x) } ); | 								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 ); | 							callback( timings ); | ||||||
| 						} ); | 						} ); | ||||||
| 					} ); | 					} ); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user