diff options
author | 2016-11-07 10:36:10 +0200 | |
---|---|---|
committer | 2016-11-07 10:36:10 +0200 | |
commit | 93dc74335a8082e0f54b1da7f6fc6e43ff3c10ee (patch) | |
tree | 3befab98de04fdbb63807c6db1844028ae50d8b6 /doc/backends/deckjs/deck.js/extensions/status/deck.status.js | |
parent | bdd1dea5e21a00b6af1b0ded09e7d528485d5196 (diff) | |
parent | 5925379b5fb30e548f1ba4e804af9865de8903ae (diff) |
Add 'doc/' from commit '5925379b5fb30e548f1ba4e804af9865de8903ae'
git-subtree-dir: doc
git-subtree-mainline: bdd1dea5e21a00b6af1b0ded09e7d528485d5196
git-subtree-split: 5925379b5fb30e548f1ba4e804af9865de8903ae
Diffstat (limited to 'doc/backends/deckjs/deck.js/extensions/status/deck.status.js')
-rw-r--r-- | doc/backends/deckjs/deck.js/extensions/status/deck.status.js | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/doc/backends/deckjs/deck.js/extensions/status/deck.status.js b/doc/backends/deckjs/deck.js/extensions/status/deck.status.js new file mode 100644 index 00000000..dca0734f --- /dev/null +++ b/doc/backends/deckjs/deck.js/extensions/status/deck.status.js @@ -0,0 +1,108 @@ +/*! +Deck JS - deck.status +Copyright (c) 2011-2014 Caleb Troughton +Dual licensed under the MIT license. +https://github.com/imakewebthings/deck.js/blob/master/MIT-license.txt +*/ + +/* +This module adds a (current)/(total) style status indicator to the deck. +*/ +(function($, undefined) { + var $document = $(document); + var rootCounter; + + var updateCurrent = function(event, from, to) { + var options = $.deck('getOptions'); + var currentSlideNumber = to + 1; + if (!options.countNested) { + currentSlideNumber = $.deck('getSlide', to).data('rootSlide'); + } + $(options.selectors.statusCurrent).text(currentSlideNumber); + }; + + var markRootSlides = function() { + var options = $.deck('getOptions'); + var slideTest = $.map([ + options.classes.before, + options.classes.previous, + options.classes.current, + options.classes.next, + options.classes.after + ], function(el, i) { + return '.' + el; + }).join(', '); + + rootCounter = 0; + $.each($.deck('getSlides'), function(i, $slide) { + var $parentSlides = $slide.parentsUntil( + options.selectors.container, + slideTest + ); + + if ($parentSlides.length) { + $slide.data('rootSlide', $parentSlides.last().data('rootSlide')); + } + else { + ++rootCounter; + $slide.data('rootSlide', rootCounter); + } + }); + }; + + var setInitialSlideNumber = function() { + var slides = $.deck('getSlides'); + var $currentSlide = $.deck('getSlide'); + var index; + + $.each(slides, function(i, $slide) { + if ($slide === $currentSlide) { + index = i; + return false; + } + }); + updateCurrent(null, index, index); + }; + + var setTotalSlideNumber = function() { + var options = $.deck('getOptions'); + var slides = $.deck('getSlides'); + + if (options.countNested) { + $(options.selectors.statusTotal).text(slides.length); + } + else { + $(options.selectors.statusTotal).text(rootCounter); + } + }; + + /* + Extends defaults/options. + + options.selectors.statusCurrent + The element matching this selector displays the current slide number. + + options.selectors.statusTotal + The element matching this selector displays the total number of slides. + + options.countNested + If false, only top level slides will be counted in the current and + total numbers. + */ + $.extend(true, $.deck.defaults, { + selectors: { + statusCurrent: '.deck-status-current', + statusTotal: '.deck-status-total' + }, + + countNested: true + }); + + $document.bind('deck.init', function() { + markRootSlides(); + setInitialSlideNumber(); + setTotalSlideNumber(); + }); + $document.bind('deck.change', updateCurrent); +})(jQuery, 'deck'); + |