From bce787f28c9eb06f50042968576aa84f0d0aa300 Mon Sep 17 00:00:00 2001 From: Gabriel Dunne Date: Thu, 16 May 2013 16:22:54 -0700 Subject: [PATCH] Experimenting with some Pagination. --- data/prelinger.db | Bin 0 -> 4096 bytes public/js/jquery.paginate.js | 110 +++++++++++++++++++++++++++++++++++ public/js/sc.coffee | 25 ++++++++ public/js/sc.js | 53 +++++++++++++++++ 4 files changed, 188 insertions(+) create mode 100644 data/prelinger.db create mode 100644 public/js/jquery.paginate.js create mode 100644 public/js/sc.coffee create mode 100644 public/js/sc.js diff --git a/data/prelinger.db b/data/prelinger.db new file mode 100644 index 0000000000000000000000000000000000000000..4c45e9d5e3b0ee1a98754c76bf2a84e34c7ff6cc GIT binary patch literal 4096 zcmeH|Jx{_w7{~8=2p++?g9EpiK)^%=-!`jhOd}wcn#e>79C}Gxpf4XlKZ3i9le@dS z&h93T&boUv91%=RTwu9NuJ?Oh?z!GSebUBRg@u&#`o3$2qy!QGLU2F`03gF>f=@9N z4nJ)u0)MO-u>QWb!V{2k573M9$rm}K0{>8;j*@Dj0GpxRc4#nk_~+UR=rE#QXVy#{ znYw1_#L^BcI+@AMdA3W7d}sc;p`_Go7T!d0&4EuH=3P>M0%)qv#GPYZV$>}CST{-C zG^(1}Bqw^4Xy?|cQR926dd(`5uFV^2oX0I1bcm&2@Br&lFC24t6}fHCX3nhL>M@6o zUiDWX@+ZkGbVOWu^JSP+RTUcXot(Z;-T0wQ-6eLB9P@hpxPE@rn`v|l&=>kZZ|D_0 zqbKx;9?%_k${`hy3d~snoK{wiK@hoQA7g=gcv;{sP6^z>NrBsVNnjZ#1eP!oxP=vg kn-~h*81?_uUwzKEmB&d1qymdmK=%LQw3jDK1s1KqH;tyAQvd(} literal 0 HcmV?d00001 diff --git a/public/js/jquery.paginate.js b/public/js/jquery.paginate.js new file mode 100644 index 0000000..9dfeb95 --- /dev/null +++ b/public/js/jquery.paginate.js @@ -0,0 +1,110 @@ +/** + * Paginate - jQuery Plugin + * By Federico Cargnelutti + * + * Dual licensed under the MIT and GPL licenses: + * - http://www.opensource.org/licenses/mit-license.php + * - http://www.gnu.org/licenses/gpl.html + * + * Examples and documentation at: + * - http://github.com/fedecarg/jquery-htmlpaginate + * + * Usage: + * + * + * + * + * + * + */ +(function($) { + +$.fn.paginate = function(options) { + + var Paginator = function(self, options) { + + var defaults = { + itemsPerPage: 10, + selector: { + next: self.selector+'-next', + previous: self.selector+'-previous', + pagination: self.selector+'-pagination' + }, + cssClassName: { + disabled: 'disabled' + } + }; + var options = $.extend(defaults, options); + var currentPage = 1; + var numberOfPages = 1; + var numberOfItems = 0; + + var init = function() { + numberOfItems = self.children().size(); + numberOfPages = Math.ceil(numberOfItems / options.itemsPerPage); + if (numberOfPages > 1) { + $(options.selector.pagination).show(); + $(options.selector.previous).addClass(options.cssClassName.disabled); + } + + self.children().hide(); + self.children().slice(0, options.itemsPerPage).show(); + + $(options.selector.previous).click(function(e){ + e.preventDefault(); + previous(); + }); + $(options.selector.next).click(function(e){ + e.preventDefault(); + next(); + }); + + self.show(); + } + + var show = function(page) { + currentPage = page; + startPage = (currentPage - 1) * options.itemsPerPage; + endPage = startPage + options.itemsPerPage; + self.children().hide().slice(startPage, endPage).show(); + + var disabled = options.cssClassName.disabled; + $(options.selector.pagination + ' a').removeClass(disabled); + if (currentPage <= 1) { + $(options.selector.previous).addClass(disabled); + } else if (currentPage == numberOfPages) { + $(options.selector.next).addClass(disabled); + } + }; + + var next = function() { + if (currentPage < numberOfPages){ + show(currentPage + 1); + } + }; + + var previous = function() { + if (currentPage > 1) { + show(currentPage - 1); + } + }; + + init(); + return this; + } + + return new Paginator(this, options); +}; +})(jQuery); diff --git a/public/js/sc.coffee b/public/js/sc.coffee new file mode 100644 index 0000000..c0c28ec --- /dev/null +++ b/public/js/sc.coffee @@ -0,0 +1,25 @@ +extended_json = {} +$ = JQuery + +on_filter_change = () -> + query = $('#filter').val().toLowerCase(); + $('.thumbs li').hide() + d = $.grep(extended_json.clips + (clip, i) -> + clip_id = clip.id.toLowerCase() + clip_desc = clip.description.toLowerCase() if clip.description + if clip_id.indexOf(query) >= 0 or clip_desc.indexOf(query) >= 0 + true + if clip.subject + for subject in clip.subject + if q.toLowerCase().indexOf(query) >= 0 + true + ) + for filter in d + $('.thumbs li#' + filter.id).show() + false + +scrim = (visible, callback) -> + s = $('#script') + if visible = 1 then s.fadeIn(150, callback) + else s.fadeout(150, callback) diff --git a/public/js/sc.js b/public/js/sc.js new file mode 100644 index 0000000..ad785da --- /dev/null +++ b/public/js/sc.js @@ -0,0 +1,53 @@ +// Generated by CoffeeScript 1.6.1 +(function() { + var $, extended_json, on_filter_change, scrim; + + extended_json = {}; + + $ = JQuery; + + on_filter_change = function() { + var d, filter, query, _i, _len; + query = $('#filter').val().toLowerCase(); + $('.thumbs li').hide(); + d = $.grep(extended_json.clips, function(clip, i) { + var clip_desc, clip_id, subject, _i, _len, _ref, _results; + clip_id = clip.id.toLowerCase(); + if (clip.description) { + clip_desc = clip.description.toLowerCase(); + } + if (clip_id.indexOf(query) >= 0 || clip_desc.indexOf(query) >= 0) { + true; + } + if (clip.subject) { + _ref = clip.subject; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + subject = _ref[_i]; + if (q.toLowerCase().indexOf(query) >= 0) { + _results.push(true); + } else { + _results.push(void 0); + } + } + return _results; + } + }); + for (_i = 0, _len = d.length; _i < _len; _i++) { + filter = d[_i]; + $('.thumbs li#' + filter.id).show(); + } + return false; + }; + + scrim = function(visible, callback) { + var s; + s = $('#script'); + if (visible = 1) { + return s.fadeIn(150, callback); + } else { + return s.fadeout(150, callback); + } + }; + +}).call(this); -- 2.34.1