fix loader

stable
Juanfran 2014-08-19 09:08:22 +02:00
parent ad752c0d21
commit 1c09279a2f
3 changed files with 35 additions and 28 deletions

View File

@ -54,7 +54,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, tgLoade
{templateUrl: "/partials/wiki-edit.html"}) {templateUrl: "/partials/wiki-edit.html"})
# Issues # 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", $routeProvider.when("/project/:pslug/issues/:issueref",
{templateUrl: "/partials/issues-detail.html"}) {templateUrl: "/partials/issues-detail.html"})

View File

@ -3,7 +3,7 @@ sizeFormat = @.taiga.sizeFormat
module = angular.module("taigaCommon") module = angular.module("taigaCommon")
LoaderDirective = (tgLoader) -> LoaderDirective = (tgLoader, $rootscope) ->
link = ($scope, $el, $attrs) -> link = ($scope, $el, $attrs) ->
tgLoader.onStart () -> tgLoader.onStart () ->
$(document.body).addClass("loader-active") $(document.body).addClass("loader-active")
@ -13,16 +13,21 @@ LoaderDirective = (tgLoader) ->
$(document.body).removeClass("loader-active") $(document.body).removeClass("loader-active")
$el.removeClass("active") $el.removeClass("active")
$scope.$on "$routeChangeSuccess", () -> $rootscope.$on "$routeChangeSuccess", (e) ->
tgLoader.start() tgLoader.start()
$rootscope.$on "$locationChangeSuccess", (e) ->
tgLoader.reset()
return { return {
link: link link: link
} }
module.directive("tgLoader", ["tgLoader", LoaderDirective]) module.directive("tgLoader", ["tgLoader", "$rootScope", LoaderDirective])
Loader = () -> Loader = () ->
forceDisabled = false
defaultLog = { defaultLog = {
request: { request: {
count: 0, count: 0,
@ -43,35 +48,40 @@ Loader = () ->
log = _.merge({}, defaultLog) log = _.merge({}, defaultLog)
config = _.merge({}, defaultConfig) config = _.merge({}, defaultConfig)
reset = () ->
log = _.merge({}, defaultLog)
config = _.merge({}, defaultConfig)
@.add = (auto = false) -> @.add = (auto = false) ->
return () -> return () ->
config.auto = auto if !forceDisabled
config.enabled = true config.auto = auto
config.enabled = true
@.$get = ["$rootScope", ($rootscope) -> @.$get = ["$rootScope", ($rootscope) ->
interval = null interval = null
startLoadTime = 0 startLoadTime = 0
return { return {
reset: () ->
reset()
pageLoaded: () -> pageLoaded: () ->
if config.enabled reset()
log = _.merge({}, defaultLog)
config = _.merge({}, defaultConfig)
endTime = new Date().getTime() endTime = new Date().getTime()
diff = endTime - startLoadTime diff = endTime - startLoadTime
if diff < config.minTime if diff < config.minTime
timeout = config.minTime - diff timeout = config.minTime - diff
else else
timeout = 0 timeout = 0
setTimeout ( -> setTimeout ( ->
$rootscope.$broadcast("loader:end"); $rootscope.$broadcast("loader:end");
), timeout ), timeout
start: () -> start: () ->
config.enabled = false
if config.enabled if config.enabled
if config.auto if config.auto
interval = setInterval ( -> interval = setInterval ( ->
@ -100,14 +110,11 @@ Loader = () ->
log.response.count++ log.response.count++
log.response.time = new Date().getTime() log.response.time = new Date().getTime()
isEneabled: () -> preventLoading: () ->
config.enabled == true forceDisabled = true
disabled: () -> disablePreventLoading: () ->
config.enabled = false forceDisabled = false
enabled: () ->
config.enabled = true
} }
] ]

View File

@ -121,7 +121,7 @@ ProjectsNavigationDirective = ($rootscope, animationFrame, $timeout, tgLoader) -
$(document.body) $(document.body)
.removeClass("loading-project open-projects-nav") .removeClass("loading-project open-projects-nav")
tgLoader.enabled() tgLoader.disablePreventLoading()
), timeout ), timeout
renderProjects = ($el, projects) -> renderProjects = ($el, projects) ->
@ -153,7 +153,7 @@ ProjectsNavigationDirective = ($rootscope, animationFrame, $timeout, tgLoader) -
$(document.body) $(document.body)
.addClass('loading-project') .addClass('loading-project')
tgLoader.disabled() tgLoader.preventLoading()
loadingStart = new Date().getTime() loadingStart = new Date().getTime()