aboutsummaryrefslogtreecommitdiff
path: root/js/reveal.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/reveal.js')
-rw-r--r--js/reveal.js85
1 files changed, 49 insertions, 36 deletions
diff --git a/js/reveal.js b/js/reveal.js
index aa9f7b1..b2869c0 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -1882,42 +1882,7 @@ var Reveal = (function(){
// Update progress if enabled
if( config.progress && dom.progress ) {
- 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++;
- }
-
- }
-
- dom.progressbar.style.width = ( pastCount / ( totalCount - 1 ) ) * window.innerWidth + 'px';
+ dom.progressbar.style.width = getProgress() * window.innerWidth + 'px';
}
@@ -2210,6 +2175,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
* speaker notes window.
*/
@@ -3399,6 +3409,9 @@ var Reveal = (function(){
getState: getState,
setState: setState,
+ // Presentation progress on range of 0-1
+ getProgress: getProgress,
+
// Returns the indices of the current, or specified, slide
getIndices: getIndices,