Browse Source

added autoSlide option (#59), clear out list of options in index.html's initialize call

Hakim El Hattab 12 years ago
parent
commit
cd3fc43e77
3 changed files with 62 additions and 33 deletions
  1. 10 5
      README.md
  2. 2 17
      index.html
  3. 50 11
      js/reveal.js

+ 10 - 5
README.md

@@ -26,7 +26,7 @@ Markup heirarchy needs to be ``<div id="reveal"> <div class="slides"> <section>`
 
 ### Configuration
 
-At the end of your page, after ``<script src="js/reveal.js"></script>``, you need to initialize reveal by running the following code. Note that all config values are optional.
+At the end of your page, after ``<script src="js/reveal.js"></script>``, you need to initialize reveal by running the following code. Note that all config values are optional and will default as specified below.
 
 ```javascript
 Reveal.initialize({
@@ -36,13 +36,17 @@ Reveal.initialize({
 	// Display a presentation progress bar
 	progress: true,
 
-	// If true; each slide will be pushed to the browser history
-	history: true,
+	// Push each slide change to the browser history
+	history: false,
 
-	// Loops the presentation, defaults to false
+	// Loop the presentation
 	loop: false,
 
-	// Flags if mouse wheel navigation should be enabled
+	// Number of milliseconds between automatically proceeding to the 
+	// next slide, disabled when set to 0
+	autoSlide: 0,
+
+	// Enable slide navigation via mouse wheel
 	mouseWheel: true,
 
 	// Apply a 3D roll to links on hover
@@ -170,6 +174,7 @@ You can change the appearance of the speaker notes by editing the file at `plugi
 - Slide notes by [rmurphey](https://github.com/rmurphey)
 - Bumped up default font-size for code samples
 - Added beige theme
+- Added 'autoSlide' config
 
 #### 1.3
 - Revised keyboard shortcuts, including ESC for overview, N for next, P for previous. Thanks [mahemoff](https://github.com/mahemoff)

+ 2 - 17
index.html

@@ -279,29 +279,14 @@ function linkify( selector ) {
 					// event.previousSlide, event.currentSlide, event.indexh, event.indexv
 				} );
 
+				// Full list of configuration options available here:
+				// https://github.com/hakimel/reveal.js#configuration
 				Reveal.initialize({
-					// Display controls in the bottom right corner
 					controls: true,
-
-					// Display a presentation progress bar
 					progress: true,
-
-					// If true; each slide will be pushed to the browser history
 					history: true,
 
-					// Loops the presentation, defaults to false
-					loop: false,
-
-					// Flags if mouse wheel navigation should be enabled
-					mouseWheel: true,
-
-					// Apply a 3D roll to links on hover
-					rollingLinks: true,
-
-					// UI style
 					theme: query.theme || 'default', // default/neon/beige
-
-					// Transition style
 					transition: query.transition || 'default' // default/cube/page/concave/linear(2d)
 				});
 			} );

+ 50 - 11
js/reveal.js

@@ -16,16 +16,35 @@ var Reveal = (function(){
 		indexh = 0,
 		indexv = 0,
 
-		// Configurations options, can be overridden at initialization time 
+		// Configurations defaults, can be overridden at initialization time 
 		config = {
+			// Display controls in the bottom right corner
 			controls: true,
-			progress: false,
+
+			// Display a presentation progress bar
+			progress: true,
+
+			// Push each slide change to the browser history
 			history: false,
+
+			// Loop the presentation
 			loop: false,
+
+			// Number of milliseconds between automatically proceeding to the 
+			// next slide, disabled when set to 0
+			autoSlide: 0,
+
+			// Enable slide navigation via mouse wheel
 			mouseWheel: true,
+
+			// Apply a 3D roll to links on hover
 			rollingLinks: true,
-			transition: 'default',
-			theme: 'default'
+
+			// UI style
+			theme: 'default', // default/neon/beige
+
+			// Transition style
+			transition: 'default' // default/cube/page/concave/linear(2d)
 		},
 
 		// Slides may hold a data-state attribute which we pick up and apply 
@@ -55,6 +74,9 @@ var Reveal = (function(){
 		// Throttles mouse wheel navigation
 		mouseWheelTimeout = 0,
 
+		// An interval used to automatically move on to the next slide
+		autoSlideTimeout = 0,
+
 		// Delays updates to the URL due to a Chrome thumbnailer bug
 		writeURLTimeout = 0,
 
@@ -107,6 +129,9 @@ var Reveal = (function(){
 		// Read the initial hash
 		readURL();
 
+		// Start auto-sliding if it's enabled
+		cueAutoSlide();
+
 		// Set up hiding of the browser address bar
 		if( navigator.userAgent.match( /(iphone|ipod|android)/i ) ) {
 			// Give the page some scrollable overflow
@@ -121,8 +146,8 @@ var Reveal = (function(){
 	}
 
 	function configure() {
-		// Fall back on the 2D transform theme 'linear'
 		if( supports3DTransforms === false ) {
+			// Fall back on the 2D transform theme 'linear'
 			config.transition = 'linear';
 		}
 
@@ -269,20 +294,21 @@ var Reveal = (function(){
 			case 13: if( overviewIsActive() ) { deactivateOverview(); triggered = true; } break;
 		}
 
+		// If the input resulted in a triggered action we should prevent 
+		// the browsers default behavior
 		if( triggered ) {
 			event.preventDefault();
 		}
 		else if ( event.keyCode === 27 && supports3DTransforms ) {
-			if( overviewIsActive() ) {
-				deactivateOverview();
-			}
-			else {
-				activateOverview();
-			}
+			toggleOverview();
 	
 			event.preventDefault();
 		}
 
+		// If auto-sliding is enabled we need to cue up 
+		// another timeout
+		cueAutoSlide();
+
 	}
 
 	/**
@@ -840,6 +866,15 @@ var Reveal = (function(){
 		
 		return false;
 	}
+
+	function cueAutoSlide() {
+		clearTimeout( autoSlideTimeout );
+
+		// Cue the next auto-slide if enabled
+		if( config.autoSlide ) {
+			autoSlideTimeout = setTimeout( navigateNext, config.autoSlide );
+		}
+	}
 	
 	/**
 	 * Triggers a navigation to the specified indices.
@@ -909,6 +944,10 @@ var Reveal = (function(){
 		if( nextFragment() === false ) {
 			availableRoutes().down ? navigateDown() : navigateRight();
 		}
+
+		// If auto-sliding is enabled we need to cue up 
+		// another timeout
+		cueAutoSlide();
 	}
 
 	/**