add api method for retrieving progress
This commit is contained in:
		
							
								
								
									
										85
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										85
									
								
								js/reveal.js
									
									
									
									
									
								
							| @@ -1882,42 +1882,7 @@ var Reveal = (function(){ | |||||||
| 		// Update progress if enabled | 		// Update progress if enabled | ||||||
| 		if( config.progress && dom.progress ) { | 		if( config.progress && dom.progress ) { | ||||||
|  |  | ||||||
| 			var horizontalSlides = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ); | 			dom.progressbar.style.width = getProgress() * window.innerWidth + 'px'; | ||||||
|  |  | ||||||
| 			// The number of past and total slides |  | ||||||
| 			var totalCount = document.querySelectorAll( SLIDES_SELECTOR + ':not(.stack)' ).length; |  | ||||||
| 			var pastCount = 0; |  | ||||||
|  |  | ||||||
| 			// Step through all slides and count the past ones |  | ||||||
| 			mainLoop: for( var i = 0; i < horizontalSlides.length; i++ ) { |  | ||||||
|  |  | ||||||
| 				var horizontalSlide = horizontalSlides[i]; |  | ||||||
| 				var verticalSlides = toArray( horizontalSlide.querySelectorAll( 'section' ) ); |  | ||||||
|  |  | ||||||
| 				for( var j = 0; j < verticalSlides.length; j++ ) { |  | ||||||
|  |  | ||||||
| 					// Stop as soon as we arrive at the present |  | ||||||
| 					if( verticalSlides[j].classList.contains( 'present' ) ) { |  | ||||||
| 						break mainLoop; |  | ||||||
| 					} |  | ||||||
|  |  | ||||||
| 					pastCount++; |  | ||||||
|  |  | ||||||
| 				} |  | ||||||
|  |  | ||||||
| 				// Stop as soon as we arrive at the present |  | ||||||
| 				if( horizontalSlide.classList.contains( 'present' ) ) { |  | ||||||
| 					break; |  | ||||||
| 				} |  | ||||||
|  |  | ||||||
| 				// Don't count the wrapping section for vertical slides |  | ||||||
| 				if( horizontalSlide.classList.contains( 'stack' ) === false ) { |  | ||||||
| 					pastCount++; |  | ||||||
| 				} |  | ||||||
|  |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			dom.progressbar.style.width = ( pastCount / ( totalCount - 1 ) ) * window.innerWidth + 'px'; |  | ||||||
|  |  | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| @@ -2209,6 +2174,51 @@ var Reveal = (function(){ | |||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Returns a value ranging from 0-1 that represents | ||||||
|  | 	 * how far into the presentation we have navigated. | ||||||
|  | 	 */ | ||||||
|  | 	function getProgress() { | ||||||
|  |  | ||||||
|  | 		var horizontalSlides = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ); | ||||||
|  |  | ||||||
|  | 		// The number of past and total slides | ||||||
|  | 		var totalCount = document.querySelectorAll( SLIDES_SELECTOR + ':not(.stack)' ).length; | ||||||
|  | 		var pastCount = 0; | ||||||
|  |  | ||||||
|  | 		// Step through all slides and count the past ones | ||||||
|  | 		mainLoop: for( var i = 0; i < horizontalSlides.length; i++ ) { | ||||||
|  |  | ||||||
|  | 			var horizontalSlide = horizontalSlides[i]; | ||||||
|  | 			var verticalSlides = toArray( horizontalSlide.querySelectorAll( 'section' ) ); | ||||||
|  |  | ||||||
|  | 			for( var j = 0; j < verticalSlides.length; j++ ) { | ||||||
|  |  | ||||||
|  | 				// Stop as soon as we arrive at the present | ||||||
|  | 				if( verticalSlides[j].classList.contains( 'present' ) ) { | ||||||
|  | 					break mainLoop; | ||||||
|  | 				} | ||||||
|  |  | ||||||
|  | 				pastCount++; | ||||||
|  |  | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			// Stop as soon as we arrive at the present | ||||||
|  | 			if( horizontalSlide.classList.contains( 'present' ) ) { | ||||||
|  | 				break; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			// Don't count the wrapping section for vertical slides | ||||||
|  | 			if( horizontalSlide.classList.contains( 'stack' ) === false ) { | ||||||
|  | 				pastCount++; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		return pastCount / ( totalCount - 1 ); | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Checks if this presentation is running inside of the | 	 * Checks if this presentation is running inside of the | ||||||
| 	 * speaker notes window. | 	 * speaker notes window. | ||||||
| @@ -3399,6 +3409,9 @@ var Reveal = (function(){ | |||||||
| 		getState: getState, | 		getState: getState, | ||||||
| 		setState: setState, | 		setState: setState, | ||||||
|  |  | ||||||
|  | 		// Presentation progress on range of 0-1 | ||||||
|  | 		getProgress: getProgress, | ||||||
|  |  | ||||||
| 		// Returns the indices of the current, or specified, slide | 		// Returns the indices of the current, or specified, slide | ||||||
| 		getIndices: getIndices, | 		getIndices: getIndices, | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								js/reveal.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								js/reveal.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Reference in New Issue
	
	Block a user