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

View File

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