automatic loader close

stable
Juanfran 2015-05-04 08:13:28 +02:00
parent 7e98130323
commit ad2d1d766f
3 changed files with 52 additions and 13 deletions

View File

@ -42,7 +42,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
{templateUrl: "home/home-page.html", resolve: {loader: tgLoaderProvider.add()}}) {templateUrl: "home/home-page.html", resolve: {loader: tgLoaderProvider.add()}})
$routeProvider.when("/projects/", $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/", $routeProvider.when("/project/:pslug/",
{templateUrl: "project/project.html"}) {templateUrl: "project/project.html"})
@ -206,6 +206,25 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$httpProvider.interceptors.push("authHttpIntercept") $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. # If there is an error in the version throw a notify error.
# IMPROVEiMENT: Move this version error handler to USs, issues and tasks repository # IMPROVEiMENT: Move this version error handler to USs, issues and tasks repository
versionCheckHttpIntercept = ($q) -> versionCheckHttpIntercept = ($q) ->

View File

@ -57,18 +57,22 @@ Loader = () ->
defaultConfig = { defaultConfig = {
enabled: false, enabled: false,
minTime: 300 minTime: 300,
auto: false
} }
config = _.merge({}, defaultConfig) config = _.merge({}, defaultConfig)
@.add = () -> @.add = (auto = false) ->
return () -> return () ->
if !forceDisabled if !forceDisabled
config.enabled = true config.enabled = true
config.auto = auto
@.$get = ["$rootScope", ($rootscope) -> @.$get = ["$rootScope", ($rootscope) ->
startLoadTime = 0 startLoadTime = 0
requestCount = 0
lastResponseDate = 0
reset = () -> reset = () ->
config = _.merge({}, defaultConfig) config = _.merge({}, defaultConfig)
@ -86,6 +90,23 @@ Loader = () ->
timeout(timeoutValue, -> $rootscope.$broadcast("loader:end")) 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 = () -> start = () ->
startLoadTime = new Date().getTime() startLoadTime = new Date().getTime()
$rootscope.$broadcast("loader:start") $rootscope.$broadcast("loader:start")
@ -98,6 +119,8 @@ Loader = () ->
if config.enabled if config.enabled
start() start()
autoClose() if config.auto
onStart: (fn) -> onStart: (fn) ->
$rootscope.$on("loader:start", fn) $rootscope.$on("loader:start", fn)
@ -109,6 +132,12 @@ Loader = () ->
disablePreventLoading: () -> disablePreventLoading: () ->
forceDisabled = false forceDisabled = false
logRequest: () ->
requestCount++
logResponse: () ->
requestCount--
lastResponseDate = new Date().getTime()
} }
] ]

View File

@ -21,15 +21,6 @@ class ProjectsPageController extends taiga.Controller
if !@auth.isAuthenticated() if !@auth.isAuthenticated()
@location.path(@navUrls.resolve("login")) @location.path(@navUrls.resolve("login"))
#Projects @appTitle.set(@translate.instant("PROJECT.SECTION_PROJECTS"))
promise = @projectsService.fetchProjects()
# On Success
promise.then =>
@appTitle.set(@translate.instant("PROJECT.SECTION_PROJECTS"))
# Finally
promise.finally tgLoader.pageLoaded
angular.module("taigaProjects").controller("ProjectsPage", ProjectsPageController) angular.module("taigaProjects").controller("ProjectsPage", ProjectsPageController)