autoclose loader by default

stable
Juanfran 2015-05-21 10:38:29 +02:00
parent 66290a8cc7
commit 946d86e687
12 changed files with 46 additions and 124 deletions

View File

@ -45,9 +45,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
requiresLogin: true
},
title: "PROJECT.WELCOME",
resolve: {
loader: tgLoaderProvider.add(true)
}
loader: true
}
)
@ -58,9 +56,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
requiresLogin: true
},
title: "PROJECT.SECTION_PROJECTS",
resolve: {
loader: tgLoaderProvider.add(true)
},
loader: true,
controller: "ProjectsListing",
controllerAs: "vm"
}
@ -72,9 +68,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
access: {
requiresLogin: true
},
resolve: {
loader: tgLoaderProvider.add(true)
},
loader: true,
controller: "Project",
controllerAs: "vm"
}
@ -91,7 +85,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$routeProvider.when("/project/:pslug/backlog",
{
templateUrl: "backlog/backlog.html",
resolve: {loader: tgLoaderProvider.add()},
loader: true,
section: "backlog"
}
)
@ -99,7 +93,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$routeProvider.when("/project/:pslug/kanban",
{
templateUrl: "kanban/kanban.html",
resolve: {loader: tgLoaderProvider.add()},
loader: true,
section: "kanban"
}
)
@ -108,7 +102,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$routeProvider.when("/project/:pslug/taskboard/:sslug",
{
templateUrl: "taskboard/taskboard.html",
resolve: {loader: tgLoaderProvider.add()},
loader: true,
section: "backlog"
}
)
@ -117,7 +111,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$routeProvider.when("/project/:pslug/us/:usref",
{
templateUrl: "us/us-detail.html",
resolve: {loader: tgLoaderProvider.add()},
loader: true,
section: "backlog-kanban"
}
)
@ -126,7 +120,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$routeProvider.when("/project/:pslug/task/:taskref",
{
templateUrl: "task/task-detail.html",
resolve: {loader: tgLoaderProvider.add()},
loader: true,
section: "backlog-kanban"
}
)
@ -137,7 +131,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$routeProvider.when("/project/:pslug/wiki/:slug",
{
templateUrl: "wiki/wiki.html",
resolve: {loader: tgLoaderProvider.add()},
loader: true,
section: "wiki"
}
)
@ -146,7 +140,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$routeProvider.when("/project/:pslug/team",
{
templateUrl: "team/team.html",
resolve: {loader: tgLoaderProvider.add()},
loader: true,
section: "team"
}
)
@ -155,14 +149,14 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$routeProvider.when("/project/:pslug/issues",
{
templateUrl: "issue/issues.html",
resolve: {loader: tgLoaderProvider.add()},
loader: true,
section: "issues"
}
)
$routeProvider.when("/project/:pslug/issue/:issueref",
{
templateUrl: "issue/issues-detail.html",
resolve: {loader: tgLoaderProvider.add()},
loader: true,
section: "issues"
}
)
@ -295,9 +289,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$routeProvider.when("/profile",
{
templateUrl: "profile/profile.html",
resolve: {
loader: tgLoaderProvider.add(true)
},
loader: true,
access: {
requiresLogin: true
},
@ -309,9 +301,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$routeProvider.when("/profile/:slug",
{
templateUrl: "profile/profile.html",
resolve: {
loader: tgLoaderProvider.add(true)
},
loader: true,
controller: "Profile",
controllerAs: "vm"
}
@ -494,7 +484,7 @@ i18nInit = (lang, $translate) ->
checksley.updateMessages('default', messages)
init = ($log, $rootscope, $auth, $events, $analytics, $translate, $location, $navUrls, $appTitle, projectService) ->
init = ($log, $rootscope, $auth, $events, $analytics, $translate, $location, $navUrls, $appTitle, projectService, loaderService) ->
$log.debug("Initialize application")
# Taiga Plugins
@ -531,6 +521,9 @@ init = ($log, $rootscope, $auth, $events, $analytics, $translate, $location, $na
if next.title
$translate(next.title).then (text) => $appTitle.set(text)
if next.loader
loaderService.startWithAutoClose()
modules = [
# Main Global Modules
"taigaBase",
@ -603,5 +596,6 @@ module.run([
"$tgNavUrls",
"$appTitle",
"tgProjectService",
"tgLoader",
init
])

View File

@ -49,12 +49,11 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F
"$tgNavUrls",
"$tgEvents",
"$tgAnalytics",
"tgLoader",
"$translate"
]
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q,
@location, @appTitle, @navUrls, @events, @analytics, tgLoader, @translate) ->
@location, @appTitle, @navUrls, @events, @analytics, @translate) ->
bindMethods(@)
@scope.sectionName = @translate.instant("BACKLOG.SECTION_NAME")
@ -77,9 +76,6 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F
# On Error
promise.then null, @.onInitialDataError.bind(@)
# Finally
promise.finally tgLoader.pageLoaded
initializeEventHandlers: ->
@scope.$on "usform:bulk:success", =>
@.loadUserstories()

View File

@ -40,12 +40,6 @@ LoaderDirective = (tgLoader, $rootscope) ->
$(document.body).removeClass("loader-active")
$el.removeClass("active")
$rootscope.$on "$routeChangeSuccess", (e) ->
tgLoader.startCurrentPageLoader()
$rootscope.$on "$locationChangeSuccess", (e) ->
tgLoader.reset()
return {
link: link
}
@ -53,30 +47,15 @@ LoaderDirective = (tgLoader, $rootscope) ->
module.directive("tgLoader", ["tgLoader", "$rootScope", LoaderDirective])
Loader = () ->
forceDisabled = false
defaultConfig = {
enabled: false,
minTime: 300,
auto: false
config = {
minTime: 300
}
config = _.merge({}, defaultConfig)
@.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)
pageLoaded = (force = false) ->
if startLoadTime
timeoutValue = 0
@ -90,6 +69,9 @@ Loader = () ->
timeout(timeoutValue, -> $rootscope.$broadcast("loader:end"))
startLoadTime = 0
requestCount = 0
lastResponseDate = 0
autoClose = () ->
maxAuto = 5000
@ -112,27 +94,17 @@ Loader = () ->
$rootscope.$broadcast("loader:start")
return {
reset: reset
pageLoaded: pageLoaded
start: start
startCurrentPageLoader: () ->
if config.enabled
start()
autoClose() if config.auto
startWithAutoClose: () ->
start()
autoClose()
onStart: (fn) ->
$rootscope.$on("loader:start", fn)
onEnd: (fn) ->
$rootscope.$on("loader:end", fn)
preventLoading: () ->
forceDisabled = true
disablePreventLoading: () ->
forceDisabled = false
logRequest: () ->
requestCount++

View File

@ -47,12 +47,11 @@ class IssueDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
"$appTitle",
"$tgAnalytics",
"$tgNavUrls",
"$translate",
"tgLoader"
"$translate"
]
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q, @location,
@log, @appTitle, @analytics, @navUrls, @translate, tgLoader) ->
@log, @appTitle, @analytics, @navUrls, @translate) ->
@scope.issueRef = @params.issueref
@scope.sectionName = @translate.instant("ISSUES.SECTION_NAME")
@.initializeEventHandlers()
@ -67,9 +66,6 @@ class IssueDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
# On Error
promise.then null, @.onInitialDataError.bind(@)
# Finally
promise.finally tgLoader.pageLoaded
initializeEventHandlers: ->
@scope.$on "attachment:create", =>
@rootscope.$broadcast("history:reload")

View File

@ -50,15 +50,12 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
"$appTitle",
"$tgNavUrls",
"$tgEvents",
"$tgAnalytics",
"tgLoader",
"$translate"
"$tgAnalytics"
]
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @urls, @params, @q, @location, @appTitle,
@navUrls, @events, @analytics, tgLoader, @translate) ->
@scope.sectionName = @translate.instant("ISSUES.LIST_SECTION_NAME")
@navUrls, @events, @analytics) ->
@scope.sectionName = "Issues"
@scope.filters = {}
if _.isEmpty(@location.search())
@ -77,9 +74,6 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
# On Error
promise.then null, @.onInitialDataError.bind(@)
# Finally
promise.finally tgLoader.pageLoaded
@scope.$on "issueform:new:success", =>
@analytics.trackEvent("issue", "create", "create issue on issues list", 1)
@.loadIssues()

View File

@ -61,13 +61,11 @@ class KanbanController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
"$appTitle",
"$tgNavUrls",
"$tgEvents",
"$tgAnalytics",
"tgLoader",
"$translate"
"$tgAnalytics"
]
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q, @location,
@appTitle, @navUrls, @events, @analytics, tgLoader, @translate) ->
@appTitle, @navUrls, @events, @analytics) ->
bindMethods(@)
@ -84,9 +82,6 @@ class KanbanController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
# On Error
promise.then null, @.onInitialDataError.bind(@)
# Finally
promise.finally tgLoader.pageLoaded
initializeEventHandlers: ->
@scope.$on "usform:new:success", =>
@.loadUserstories()

View File

@ -44,11 +44,10 @@ class SearchController extends mixOf(taiga.Controller, taiga.PageMixin)
"$q",
"$tgLocation",
"$appTitle",
"$tgNavUrls",
"tgLoader"
"$tgNavUrls"
]
constructor: (@scope, @repo, @rs, @params, @q, @location, @appTitle, @navUrls, @tgLoader) ->
constructor: (@scope, @repo, @rs, @params, @q, @location, @appTitle, @navUrls) ->
@scope.sectionName = "Search"
promise = @.loadInitialData()
@ -63,9 +62,7 @@ class SearchController extends mixOf(taiga.Controller, taiga.PageMixin)
loadSearchData = debounceLeading(100, (t) => @.loadSearchData(t))
@scope.$watch "searchTerm", (term) =>
if not term
@tgLoader.pageLoaded()
else
if term
loadSearchData(term)
loadFilters: ->
@ -90,9 +87,6 @@ class SearchController extends mixOf(taiga.Controller, taiga.PageMixin)
@scope.searchResults = data
return data
promise.finally =>
@tgLoader.pageLoaded()
return promise
loadInitialData: ->

View File

@ -48,13 +48,11 @@ class TaskboardController extends mixOf(taiga.Controller, taiga.PageMixin)
"$tgLocation",
"$tgNavUrls"
"$tgEvents"
"$tgAnalytics",
"tgLoader"
"$translate"
"$tgAnalytics"
]
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q, @appTitle, @location, @navUrls,
@events, @analytics, tgLoader, @translate) ->
@events, @analytics) ->
bindMethods(@)
@scope.sectionName = @translate.instant("TASKBOARD.SECTION_NAME")
@ -69,9 +67,6 @@ class TaskboardController extends mixOf(taiga.Controller, taiga.PageMixin)
# On Error
promise.then null, @.onInitialDataError.bind(@)
# Finally
promise.finally tgLoader.pageLoaded
initializeEventHandlers: ->
# TODO: Reload entire taskboard after create/edit tasks seems
# a big overhead. It should be optimized in near future.

View File

@ -44,13 +44,11 @@ class TaskDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
"$log",
"$appTitle",
"$tgNavUrls",
"$tgAnalytics",
"$translate",
"tgLoader"
"$tgAnalytics"
]
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q, @location,
@log, @appTitle, @navUrls, @analytics, @translate, tgLoader) ->
@log, @appTitle, @navUrls, @analytics) ->
@scope.taskRef = @params.taskref
@scope.sectionName = @translate.instant("TASK.SECTION_NAME")
@.initializeEventHandlers()
@ -63,8 +61,6 @@ class TaskDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
promise.then null, @.onInitialDataError.bind(@)
promise.finally tgLoader.pageLoaded
initializeEventHandlers: ->
@scope.$on "attachment:create", =>
@analytics.trackEvent("attachment", "create", "create attachment on task", 1)

View File

@ -41,12 +41,10 @@ class TeamController extends mixOf(taiga.Controller, taiga.PageMixin)
"$tgNavUrls",
"$appTitle",
"$tgAuth",
"tgLoader",
"$translate"
]
constructor: (@scope, @rootscope, @repo, @rs, @params, @q, @location, @navUrls, @appTitle, @auth, tgLoader,
@translate) ->
constructor: (@scope, @rootscope, @repo, @rs, @params, @q, @location, @navUrls, @appTitle, @auth, @translate) ->
@scope.sectionName = "TEAM.SECTION_NAME"
promise = @.loadInitialData()
@ -59,9 +57,6 @@ class TeamController extends mixOf(taiga.Controller, taiga.PageMixin)
# On Error
promise.then null, @.onInitialDataError.bind(@)
# Finally
promise.finally tgLoader.pageLoaded
setRole: (role) ->
if role
@scope.filtersRole = role

View File

@ -44,13 +44,11 @@ class UserStoryDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
"$log",
"$appTitle",
"$tgNavUrls",
"$tgAnalytics",
"$translate",
"tgLoader"
"$tgAnalytics"
]
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q, @location,
@log, @appTitle, @navUrls, @analytics, @translate, tgLoader) ->
@log, @appTitle, @navUrls, @analytics) ->
@scope.usRef = @params.usref
@scope.sectionName = @translate.instant("US.SECTION_NAME")
@.initializeEventHandlers()
@ -64,7 +62,6 @@ class UserStoryDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
# On Error
promise.then null, @.onInitialDataError.bind(@)
promise.finally tgLoader.pageLoaded
initializeEventHandlers: ->
@scope.$on "related-tasks:update", =>

View File

@ -49,12 +49,11 @@ class WikiDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
"$appTitle",
"$tgNavUrls",
"$tgAnalytics",
"tgLoader",
"$translate"
]
constructor: (@scope, @rootscope, @repo, @model, @confirm, @rs, @params, @q, @location,
@filter, @log, @appTitle, @navUrls, @analytics, tgLoader, @translate) ->
@filter, @log, @appTitle, @navUrls, @analytics, @translate) ->
@scope.projectSlug = @params.pslug
@scope.wikiSlug = @params.slug
@scope.sectionName = "Wiki"
@ -67,7 +66,6 @@ class WikiDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
# On Error
promise.then null, @.onInitialDataError.bind(@)
promise.finally tgLoader.pageLoaded
loadProject: ->
return @rs.projects.getBySlug(@params.pslug).then (project) =>