count vertical slides towards the progress bar (closes #150)
This commit is contained in:
parent
64ebbf80fb
commit
fa3d0c899c
72
js/reveal.js
72
js/reveal.js
|
@ -1,5 +1,5 @@
|
||||||
/*!
|
/*!
|
||||||
* reveal.js 2.2 r39
|
* reveal.js 2.2 r40
|
||||||
* http://lab.hakim.se/reveal-js
|
* http://lab.hakim.se/reveal-js
|
||||||
* MIT licensed
|
* MIT licensed
|
||||||
*
|
*
|
||||||
|
@ -9,7 +9,8 @@ var Reveal = (function(){
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var HORIZONTAL_SLIDES_SELECTOR = '.reveal .slides>section',
|
var SLIDES_SELECTOR = '.reveal .slides section',
|
||||||
|
HORIZONTAL_SLIDES_SELECTOR = '.reveal .slides>section',
|
||||||
VERTICAL_SLIDES_SELECTOR = '.reveal .slides>section.present>section',
|
VERTICAL_SLIDES_SELECTOR = '.reveal .slides>section.present>section',
|
||||||
|
|
||||||
// Configurations defaults, can be overridden at initialization time
|
// Configurations defaults, can be overridden at initialization time
|
||||||
|
@ -469,7 +470,7 @@ var Reveal = (function(){
|
||||||
*/
|
*/
|
||||||
function linkify() {
|
function linkify() {
|
||||||
if( supports3DTransforms && !( 'msPerspective' in document.body.style ) ) {
|
if( supports3DTransforms && !( 'msPerspective' in document.body.style ) ) {
|
||||||
var nodes = document.querySelectorAll( '.reveal .slides section a:not(.image)' );
|
var nodes = document.querySelectorAll( SLIDES_SELECTOR + ' a:not(.image)' );
|
||||||
|
|
||||||
for( var i = 0, len = nodes.length; i < len; i++ ) {
|
for( var i = 0, len = nodes.length; i < len; i++ ) {
|
||||||
var node = nodes[i];
|
var node = nodes[i];
|
||||||
|
@ -491,7 +492,7 @@ var Reveal = (function(){
|
||||||
if( config.center ) {
|
if( config.center ) {
|
||||||
|
|
||||||
// Select all slides, vertical and horizontal
|
// Select all slides, vertical and horizontal
|
||||||
var slides = Array.prototype.slice.call( document.querySelectorAll( '.reveal .slides section' ) );
|
var slides = toArray( document.querySelectorAll( SLIDES_SELECTOR ) );
|
||||||
|
|
||||||
// Determine the minimum top offset for slides
|
// Determine the minimum top offset for slides
|
||||||
var minTop = -dom.wrapper.offsetHeight / 2;
|
var minTop = -dom.wrapper.offsetHeight / 2;
|
||||||
|
@ -583,7 +584,7 @@ var Reveal = (function(){
|
||||||
dom.wrapper.classList.remove( 'overview' );
|
dom.wrapper.classList.remove( 'overview' );
|
||||||
|
|
||||||
// Select all slides
|
// Select all slides
|
||||||
var slides = Array.prototype.slice.call( document.querySelectorAll( '.reveal .slides section' ) );
|
var slides = toArray( document.querySelectorAll( SLIDES_SELECTOR ) );
|
||||||
|
|
||||||
for( var i = 0, len = slides.length; i < len; i++ ) {
|
for( var i = 0, len = slides.length; i < len; i++ ) {
|
||||||
var element = slides[i];
|
var element = slides[i];
|
||||||
|
@ -732,18 +733,11 @@ var Reveal = (function(){
|
||||||
document.documentElement.classList.remove( stateBefore.pop() );
|
document.documentElement.classList.remove( stateBefore.pop() );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update progress if enabled
|
|
||||||
if( config.progress && dom.progress ) {
|
|
||||||
dom.progressbar.style.width = ( indexh / ( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ).length - 1 ) ) * window.innerWidth + 'px';
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the overview is active, re-activate it to update positions
|
// If the overview is active, re-activate it to update positions
|
||||||
if( isOverviewActive() ) {
|
if( isOverviewActive() ) {
|
||||||
activateOverview();
|
activateOverview();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateControls();
|
|
||||||
|
|
||||||
// Update the URL hash after a delay since updating it mid-transition
|
// Update the URL hash after a delay since updating it mid-transition
|
||||||
// is likely to cause visual lag
|
// is likely to cause visual lag
|
||||||
clearTimeout( writeURLTimeout );
|
clearTimeout( writeURLTimeout );
|
||||||
|
@ -780,6 +774,9 @@ var Reveal = (function(){
|
||||||
if( previousSlide ) {
|
if( previousSlide ) {
|
||||||
previousSlide.classList.remove( 'present' );
|
previousSlide.classList.remove( 'present' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateControls();
|
||||||
|
updateProgress();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -798,7 +795,7 @@ var Reveal = (function(){
|
||||||
function updateSlides( selector, index ) {
|
function updateSlides( selector, index ) {
|
||||||
// Select all slides and convert the NodeList result to
|
// Select all slides and convert the NodeList result to
|
||||||
// an array
|
// an array
|
||||||
var slides = Array.prototype.slice.call( document.querySelectorAll( selector ) ),
|
var slides = toArray( document.querySelectorAll( selector ) ),
|
||||||
slidesLength = slides.length;
|
slidesLength = slides.length;
|
||||||
|
|
||||||
if( slidesLength ) {
|
if( slidesLength ) {
|
||||||
|
@ -878,7 +875,48 @@ var Reveal = (function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the state and link pointers of the controls.
|
* Updates the progress bar to reflect the current slide.
|
||||||
|
*/
|
||||||
|
function updateProgress() {
|
||||||
|
// 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';
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the state of all control/navigation arrows.
|
||||||
*/
|
*/
|
||||||
function updateControls() {
|
function updateControls() {
|
||||||
if ( config.controls && dom.controls ) {
|
if ( config.controls && dom.controls ) {
|
||||||
|
@ -1002,14 +1040,14 @@ var Reveal = (function(){
|
||||||
var slideh = isVertical ? slide.parentNode : slide;
|
var slideh = isVertical ? slide.parentNode : slide;
|
||||||
|
|
||||||
// Select all horizontal slides
|
// Select all horizontal slides
|
||||||
var horizontalSlides = Array.prototype.slice.call( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
|
var horizontalSlides = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
|
||||||
|
|
||||||
// Now that we know which the horizontal slide is, get its index
|
// Now that we know which the horizontal slide is, get its index
|
||||||
h = Math.max( horizontalSlides.indexOf( slideh ), 0 );
|
h = Math.max( horizontalSlides.indexOf( slideh ), 0 );
|
||||||
|
|
||||||
// If this is a vertical slide, grab the vertical index
|
// If this is a vertical slide, grab the vertical index
|
||||||
if( isVertical ) {
|
if( isVertical ) {
|
||||||
v = Math.max( Array.prototype.slice.call( slide.parentNode.children ).indexOf( slide ), 0 );
|
v = Math.max( toArray( slide.parentNode.children ).indexOf( slide ), 0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1356,7 +1394,7 @@ var Reveal = (function(){
|
||||||
* ( clickX / presentationWidth ) * numberOfSlides
|
* ( clickX / presentationWidth ) * numberOfSlides
|
||||||
*/
|
*/
|
||||||
function onProgressClick( event ) {
|
function onProgressClick( event ) {
|
||||||
var slidesTotal = Array.prototype.slice.call( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).length;
|
var slidesTotal = toArray( document.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) ).length;
|
||||||
var slideIndex = Math.floor( ( event.clientX / dom.wrapper.offsetWidth ) * slidesTotal );
|
var slideIndex = Math.floor( ( event.clientX / dom.wrapper.offsetWidth ) * slidesTotal );
|
||||||
|
|
||||||
slide( slideIndex );
|
slide( slideIndex );
|
||||||
|
|
174
js/reveal.min.js
vendored
174
js/reveal.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user