diff --git a/lib/persona.js b/lib/persona.js index 08776dd..431776a 100644 --- a/lib/persona.js +++ b/lib/persona.js @@ -122,9 +122,49 @@ $(document).ready(function() { function setupPaginator() { function appendPageNumber(ev, data) { var el = data.after ? data.after : data.before, - page = Math.ceil((el.attr('data-index') - 1) / config.postsPerPage); - - el.append('
' + page + '
'); + page = Math.ceil((el.attr('data-index') - 1) / config.postsPerPage), + handle = $('
' + page + '
'); + + el.append(handle); + + handle.tooltip({ + title: 'Slide to paginate', + placement: 'left' + }); + + var dragging = false, originalY = 0; + handle.on('mousedown', function(ev) { + dragging = true; + originalY = ev.screenY; + }); + + $('body').on('mouseup', function() { + dragging = false; + //handle.css('margin-top', '0px'); + }); + + $('body').on('mousemove', function(ev) { + if (!dragging) { + return; + } + + //handle.css('margin-top', (originalY - ev.screenY) + 'px'); + var distance = originalY - ev.screenY, + toPage = page - parseInt(distance / 50, 10); + + if (toPage > ajaxify.data.pageCount) { + toPage = ajaxify.data.pageCount; + } + + if (toPage < 0) { + toPage = 0; + } + + handle.html(toPage); + + }); + + } $(window).on('action:posts.loading', appendPageNumber); diff --git a/modules/paginator.less b/modules/paginator.less index a5cb9fb..a548806 100644 --- a/modules/paginator.less +++ b/modules/paginator.less @@ -11,5 +11,7 @@ border-radius: 50%; color: white; font-size: 11px; + + .user-select(none); } } \ No newline at end of file