add api method for retrieving progress
This commit is contained in:
parent
8c32e2e967
commit
6e9a33cf1f
2 changed files with 52 additions and 39 deletions
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
Loading…
Reference in a new issue