From 71c336f1442d3af2e29a54c714ccb9a6f3697089 Mon Sep 17 00:00:00 2001 From: Juanfran Date: Wed, 23 Jul 2014 14:03:45 +0200 Subject: [PATCH] US/121 fix multi click animation --- app/coffee/modules/project.coffee | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/app/coffee/modules/project.coffee b/app/coffee/modules/project.coffee index 3e98221c..dd509159 100644 --- a/app/coffee/modules/project.coffee +++ b/app/coffee/modules/project.coffee @@ -17,19 +17,19 @@ module.controller("ProjectController", ProjectController) ProjectsPaginationDirective = () -> itemsPerPage = 7 - nextPage = (element, pageSize) -> + nextPage = (element, pageSize, callback) -> top = parseInt(element.css('top'), 10) newTop = top - pageSize - element.animate({"top": newTop}); + element.animate({"top": newTop}, callback); return newTop - prevPage = (element, pageSize) -> + prevPage = (element, pageSize, callback) -> top = parseInt(element.css('top'), 10) newTop = top + pageSize - element.animate({"top": newTop}); + element.animate({"top": newTop}, callback); return newTop @@ -45,21 +45,37 @@ ProjectsPaginationDirective = () -> container = $el.find("ul") pageSize = $el.find(".pagination-list").height() containerSize = 0 + animationInProgess = false + + animationEnd = () -> + animationInProgess = false prevBtn.on "click", (event) -> event.preventDefault() + if animationInProgess + return + + animationInProgess = true visible(nextBtn) - if -prevPage(container, pageSize) == 0 + newTop = prevPage(container, pageSize, animationEnd) + + if newTop == 0 hide(prevBtn) nextBtn.on "click", (event) -> event.preventDefault() + if animationInProgess + return + + animationInProgess = true visible(prevBtn) - if -nextPage(container, pageSize) + pageSize > containerSize + newTop = nextPage(container, pageSize, animationEnd) + + if -newTop + pageSize > containerSize hide(nextBtn) $scope.$watch 'ctrl.projects', () ->