From 1c09279a2f34f64be739861fadaf811340d08807 Mon Sep 17 00:00:00 2001 From: Juanfran Date: Tue, 19 Aug 2014 09:08:22 +0200 Subject: [PATCH] fix loader --- app/coffee/app.coffee | 2 +- app/coffee/modules/common/loader.coffee | 57 ++++++++++++++----------- app/coffee/modules/nav.coffee | 4 +- 3 files changed, 35 insertions(+), 28 deletions(-) diff --git a/app/coffee/app.coffee b/app/coffee/app.coffee index 1e08fed9..745b3338 100644 --- a/app/coffee/app.coffee +++ b/app/coffee/app.coffee @@ -54,7 +54,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, tgLoade {templateUrl: "/partials/wiki-edit.html"}) # Issues - $routeProvider.when("/project/:pslug/issues/", {templateUrl: "/partials/issues.html", resolve: {loader: tgLoaderProvider.add()}}) + $routeProvider.when("/project/:pslug/issues", {templateUrl: "/partials/issues.html", resolve: {loader: tgLoaderProvider.add()}}) $routeProvider.when("/project/:pslug/issues/:issueref", {templateUrl: "/partials/issues-detail.html"}) diff --git a/app/coffee/modules/common/loader.coffee b/app/coffee/modules/common/loader.coffee index 9fb558eb..f9bfef93 100644 --- a/app/coffee/modules/common/loader.coffee +++ b/app/coffee/modules/common/loader.coffee @@ -3,7 +3,7 @@ sizeFormat = @.taiga.sizeFormat module = angular.module("taigaCommon") -LoaderDirective = (tgLoader) -> +LoaderDirective = (tgLoader, $rootscope) -> link = ($scope, $el, $attrs) -> tgLoader.onStart () -> $(document.body).addClass("loader-active") @@ -13,16 +13,21 @@ LoaderDirective = (tgLoader) -> $(document.body).removeClass("loader-active") $el.removeClass("active") - $scope.$on "$routeChangeSuccess", () -> + $rootscope.$on "$routeChangeSuccess", (e) -> tgLoader.start() + $rootscope.$on "$locationChangeSuccess", (e) -> + tgLoader.reset() + return { link: link } -module.directive("tgLoader", ["tgLoader", LoaderDirective]) +module.directive("tgLoader", ["tgLoader", "$rootScope", LoaderDirective]) Loader = () -> + forceDisabled = false + defaultLog = { request: { count: 0, @@ -43,35 +48,40 @@ Loader = () -> log = _.merge({}, defaultLog) config = _.merge({}, defaultConfig) + reset = () -> + log = _.merge({}, defaultLog) + config = _.merge({}, defaultConfig) + @.add = (auto = false) -> return () -> - config.auto = auto - config.enabled = true + if !forceDisabled + config.auto = auto + config.enabled = true @.$get = ["$rootScope", ($rootscope) -> interval = null startLoadTime = 0 return { + reset: () -> + reset() + pageLoaded: () -> - if config.enabled - log = _.merge({}, defaultLog) - config = _.merge({}, defaultConfig) + reset() - endTime = new Date().getTime() - diff = endTime - startLoadTime + endTime = new Date().getTime() + diff = endTime - startLoadTime - if diff < config.minTime - timeout = config.minTime - diff - else - timeout = 0 + if diff < config.minTime + timeout = config.minTime - diff + else + timeout = 0 - setTimeout ( -> - $rootscope.$broadcast("loader:end"); - ), timeout + setTimeout ( -> + $rootscope.$broadcast("loader:end"); + ), timeout start: () -> - config.enabled = false if config.enabled if config.auto interval = setInterval ( -> @@ -100,14 +110,11 @@ Loader = () -> log.response.count++ log.response.time = new Date().getTime() - isEneabled: () -> - config.enabled == true + preventLoading: () -> + forceDisabled = true - disabled: () -> - config.enabled = false - - enabled: () -> - config.enabled = true + disablePreventLoading: () -> + forceDisabled = false } ] diff --git a/app/coffee/modules/nav.coffee b/app/coffee/modules/nav.coffee index fc40170c..13296750 100644 --- a/app/coffee/modules/nav.coffee +++ b/app/coffee/modules/nav.coffee @@ -121,7 +121,7 @@ ProjectsNavigationDirective = ($rootscope, animationFrame, $timeout, tgLoader) - $(document.body) .removeClass("loading-project open-projects-nav") - tgLoader.enabled() + tgLoader.disablePreventLoading() ), timeout renderProjects = ($el, projects) -> @@ -153,7 +153,7 @@ ProjectsNavigationDirective = ($rootscope, animationFrame, $timeout, tgLoader) - $(document.body) .addClass('loading-project') - tgLoader.disabled() + tgLoader.preventLoading() loadingStart = new Date().getTime()