From ad2d1d766f30099aa22bafda1603954ad79a302e Mon Sep 17 00:00:00 2001 From: Juanfran Date: Mon, 4 May 2015 08:13:28 +0200 Subject: [PATCH] automatic loader close --- app/coffee/app.coffee | 21 +++++++++++- app/coffee/modules/common/loader.coffee | 33 +++++++++++++++++-- .../projects/projects-page.controller.coffee | 11 +------ 3 files changed, 52 insertions(+), 13 deletions(-) diff --git a/app/coffee/app.coffee b/app/coffee/app.coffee index b7a4f1a1..d9316682 100644 --- a/app/coffee/app.coffee +++ b/app/coffee/app.coffee @@ -42,7 +42,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven {templateUrl: "home/home-page.html", resolve: {loader: tgLoaderProvider.add()}}) $routeProvider.when("/projects/", - {templateUrl: "projects/projects-page.html", resolve: {loader: tgLoaderProvider.add()}}) + {templateUrl: "projects/projects-page.html", resolve: {loader: tgLoaderProvider.add(true)}}) $routeProvider.when("/project/:pslug/", {templateUrl: "project/project.html"}) @@ -206,6 +206,25 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven $httpProvider.interceptors.push("authHttpIntercept") + + loaderIntercept = (loaderService) -> + return { + request: (config) -> + loaderService.logRequest() + + return config + + response: (response) -> + loaderService.logResponse() + + return response + } + + + $provide.factory("loaderIntercept", ["tgLoader", loaderIntercept]) + + $httpProvider.interceptors.push("loaderIntercept") + # If there is an error in the version throw a notify error. # IMPROVEiMENT: Move this version error handler to USs, issues and tasks repository versionCheckHttpIntercept = ($q) -> diff --git a/app/coffee/modules/common/loader.coffee b/app/coffee/modules/common/loader.coffee index df14802d..01e48791 100644 --- a/app/coffee/modules/common/loader.coffee +++ b/app/coffee/modules/common/loader.coffee @@ -57,18 +57,22 @@ Loader = () -> defaultConfig = { enabled: false, - minTime: 300 + minTime: 300, + auto: false } config = _.merge({}, defaultConfig) - @.add = () -> + @.add = (auto = false) -> return () -> if !forceDisabled config.enabled = true + config.auto = auto @.$get = ["$rootScope", ($rootscope) -> startLoadTime = 0 + requestCount = 0 + lastResponseDate = 0 reset = () -> config = _.merge({}, defaultConfig) @@ -86,6 +90,23 @@ Loader = () -> timeout(timeoutValue, -> $rootscope.$broadcast("loader:end")) + + autoClose = () -> + maxAuto = 5000 + timeoutAuto = setTimeout (() -> + pageLoaded() + + clearInterval(intervalAuto) + ), maxAuto + + intervalAuto = setInterval (() -> + if lastResponseDate && requestCount == 0 + pageLoaded() + + clearInterval(intervalAuto) + clearTimeout(timeoutAuto) + ), 200 + start = () -> startLoadTime = new Date().getTime() $rootscope.$broadcast("loader:start") @@ -98,6 +119,8 @@ Loader = () -> if config.enabled start() + autoClose() if config.auto + onStart: (fn) -> $rootscope.$on("loader:start", fn) @@ -109,6 +132,12 @@ Loader = () -> disablePreventLoading: () -> forceDisabled = false + + logRequest: () -> + requestCount++ + logResponse: () -> + requestCount-- + lastResponseDate = new Date().getTime() } ] diff --git a/app/modules/projects/projects-page.controller.coffee b/app/modules/projects/projects-page.controller.coffee index c91a5880..5e09e837 100644 --- a/app/modules/projects/projects-page.controller.coffee +++ b/app/modules/projects/projects-page.controller.coffee @@ -21,15 +21,6 @@ class ProjectsPageController extends taiga.Controller if !@auth.isAuthenticated() @location.path(@navUrls.resolve("login")) - #Projects - promise = @projectsService.fetchProjects() - - # On Success - promise.then => - @appTitle.set(@translate.instant("PROJECT.SECTION_PROJECTS")) - - # Finally - promise.finally tgLoader.pageLoaded - + @appTitle.set(@translate.instant("PROJECT.SECTION_PROJECTS")) angular.module("taigaProjects").controller("ProjectsPage", ProjectsPageController)