diff --git a/app/coffee/app.coffee b/app/coffee/app.coffee index ed1f42ec..0df17bb9 100644 --- a/app/coffee/app.coffee +++ b/app/coffee/app.coffee @@ -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 ]) diff --git a/app/coffee/modules/backlog/main.coffee b/app/coffee/modules/backlog/main.coffee index 27ce413c..fb752f51 100644 --- a/app/coffee/modules/backlog/main.coffee +++ b/app/coffee/modules/backlog/main.coffee @@ -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() diff --git a/app/coffee/modules/common/loader.coffee b/app/coffee/modules/common/loader.coffee index e25e8666..e149a458 100644 --- a/app/coffee/modules/common/loader.coffee +++ b/app/coffee/modules/common/loader.coffee @@ -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++ diff --git a/app/coffee/modules/issues/detail.coffee b/app/coffee/modules/issues/detail.coffee index db633dc2..0589b357 100644 --- a/app/coffee/modules/issues/detail.coffee +++ b/app/coffee/modules/issues/detail.coffee @@ -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") diff --git a/app/coffee/modules/issues/list.coffee b/app/coffee/modules/issues/list.coffee index 59ff2a0d..f76a9cf1 100644 --- a/app/coffee/modules/issues/list.coffee +++ b/app/coffee/modules/issues/list.coffee @@ -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() diff --git a/app/coffee/modules/kanban/main.coffee b/app/coffee/modules/kanban/main.coffee index 6b45ea6b..d6873467 100644 --- a/app/coffee/modules/kanban/main.coffee +++ b/app/coffee/modules/kanban/main.coffee @@ -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() diff --git a/app/coffee/modules/search.coffee b/app/coffee/modules/search.coffee index e1d39507..9e97b39a 100644 --- a/app/coffee/modules/search.coffee +++ b/app/coffee/modules/search.coffee @@ -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: -> diff --git a/app/coffee/modules/taskboard/main.coffee b/app/coffee/modules/taskboard/main.coffee index f2bd605f..38045266 100644 --- a/app/coffee/modules/taskboard/main.coffee +++ b/app/coffee/modules/taskboard/main.coffee @@ -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. diff --git a/app/coffee/modules/tasks/detail.coffee b/app/coffee/modules/tasks/detail.coffee index f769f852..351810d9 100644 --- a/app/coffee/modules/tasks/detail.coffee +++ b/app/coffee/modules/tasks/detail.coffee @@ -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) diff --git a/app/coffee/modules/team/main.coffee b/app/coffee/modules/team/main.coffee index df13508c..ed72d1d9 100644 --- a/app/coffee/modules/team/main.coffee +++ b/app/coffee/modules/team/main.coffee @@ -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 diff --git a/app/coffee/modules/userstories/detail.coffee b/app/coffee/modules/userstories/detail.coffee index 79525316..f47af4b8 100644 --- a/app/coffee/modules/userstories/detail.coffee +++ b/app/coffee/modules/userstories/detail.coffee @@ -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", => diff --git a/app/coffee/modules/wiki/main.coffee b/app/coffee/modules/wiki/main.coffee index 8fd60924..01f8fc9f 100644 --- a/app/coffee/modules/wiki/main.coffee +++ b/app/coffee/modules/wiki/main.coffee @@ -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) =>