convert loader to a factory

stable
Juanfran 2015-05-21 12:06:41 +02:00
parent 946d86e687
commit 3d76d225c7
2 changed files with 50 additions and 54 deletions

View File

@ -35,9 +35,7 @@ taiga.generateUniqueSessionIdentifier = ->
taiga.sessionId = taiga.generateUniqueSessionIdentifier()
configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEventsProvider, tgLoaderProvider,
$compileProvider, $translateProvider) ->
configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEventsProvider, $compileProvider, $translateProvider) ->
$routeProvider.when("/",
{
templateUrl: "home/home.html",
@ -579,7 +577,6 @@ module.config([
"$httpProvider",
"$provide",
"$tgEventsProvider",
"tgLoaderProvider",
"$compileProvider",
"$translateProvider",
configure

View File

@ -46,74 +46,73 @@ LoaderDirective = (tgLoader, $rootscope) ->
module.directive("tgLoader", ["tgLoader", "$rootScope", LoaderDirective])
Loader = () ->
Loader = ($rootscope) ->
config = {
minTime: 300
}
@.$get = ["$rootScope", ($rootscope) ->
startLoadTime = 0
requestCount = 0
lastResponseDate = 0
pageLoaded = (force = false) ->
if startLoadTime
timeoutValue = 0
if !force
endTime = new Date().getTime()
diff = endTime - startLoadTime
if diff < config.minTime
timeoutValue = config.minTime - diff
timeout(timeoutValue, -> $rootscope.$broadcast("loader:end"))
startLoadTime = 0
requestCount = 0
lastResponseDate = 0
pageLoaded = (force = false) ->
if startLoadTime
timeoutValue = 0
autoClose = () ->
maxAuto = 5000
timeoutAuto = setTimeout (() ->
pageLoaded()
if !force
endTime = new Date().getTime()
diff = endTime - startLoadTime
clearInterval(intervalAuto)
), maxAuto
if diff < config.minTime
timeoutValue = config.minTime - diff
timeout(timeoutValue, -> $rootscope.$broadcast("loader:end"))
startLoadTime = 0
requestCount = 0
lastResponseDate = 0
autoClose = () ->
maxAuto = 5000
timeoutAuto = setTimeout (() ->
intervalAuto = setInterval (() ->
if lastResponseDate && requestCount == 0
pageLoaded()
clearInterval(intervalAuto)
), maxAuto
clearTimeout(timeoutAuto)
), 50
intervalAuto = setInterval (() ->
if lastResponseDate && requestCount == 0
pageLoaded()
start = () ->
startLoadTime = new Date().getTime()
$rootscope.$broadcast("loader:start")
clearInterval(intervalAuto)
clearTimeout(timeoutAuto)
), 50
return {
pageLoaded: pageLoaded
start: start
startWithAutoClose: () ->
start()
autoClose()
onStart: (fn) ->
$rootscope.$on("loader:start", fn)
start = () ->
startLoadTime = new Date().getTime()
$rootscope.$broadcast("loader:start")
onEnd: (fn) ->
$rootscope.$on("loader:end", fn)
return {
pageLoaded: pageLoaded
start: start
startWithAutoClose: () ->
start()
autoClose()
onStart: (fn) ->
$rootscope.$on("loader:start", fn)
logRequest: () ->
requestCount++
onEnd: (fn) ->
$rootscope.$on("loader:end", fn)
logResponse: () ->
requestCount--
lastResponseDate = new Date().getTime()
}
logRequest: () ->
requestCount++
logResponse: () ->
requestCount--
lastResponseDate = new Date().getTime()
}
]
Loader.$inject = ["$rootScope"]
return
module.provider("tgLoader", [Loader])
module.factory("tgLoader", Loader)