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()}})
$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) ->

View File

@ -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()
}
]

View File

@ -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)