diff --git a/app/coffee/modules/backlog/main.coffee b/app/coffee/modules/backlog/main.coffee index dfd8336f..8bb82faa 100644 --- a/app/coffee/modules/backlog/main.coffee +++ b/app/coffee/modules/backlog/main.coffee @@ -59,7 +59,6 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F @scope.sectionName = "Backlog" @showTags = false @activeFilters = false - @excludeClosedSprints = true @.initializeEventHandlers() @@ -111,7 +110,8 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F @scope.$on("sprint:us:moved", @.loadSprints) @scope.$on("sprint:us:moved", @.loadProjectStats) - @scope.$on("backlog:toggle-closed-sprints-visualization", @.toggleClosedSprintsVisualization) + @scope.$on("backlog:load-closed-sprints", @.loadClosedSprints) + @scope.$on("backlog:unload-closed-sprints", @.unloadClosedSprints) initializeSubscription: -> routingKey1 = "changes.project.#{@scope.projectId}.userstories" @@ -146,11 +146,23 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F return @rs.projects.tagsColors(@scope.projectId).then (tags_colors) => @scope.project.tags_colors = tags_colors - loadSprints: -> - params = {} - if @excludeClosedSprints - params["closed"] = false + unloadClosedSprints: -> + @scope.$apply => + @scope.closedSprints = [] + @rootscope.$broadcast("closed-sprints:reloaded", []) + loadClosedSprints: -> + params = {closed: true} + return @rs.sprints.list(@scope.projectId, params).then (sprints) => + # NOTE: Fix order of USs because the filter orderBy does not work propertly in partials files + for sprint in sprints + sprint.user_stories = _.sortBy(sprint.user_stories, "sprint_order") + @scope.closedSprints = sprints + @rootscope.$broadcast("closed-sprints:reloaded", sprints) + return sprints + + loadSprints: -> + params = {closed: false} return @rs.sprints.list(@scope.projectId, params).then (sprints) => # NOTE: Fix order of USs because the filter orderBy does not work propertly in partials files for sprint in sprints @@ -158,10 +170,8 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F @scope.sprints = sprints @scope.openSprints = _.filter(sprints, (sprint) => not sprint.closed).reverse() - @scope.closedSprints = _.filter(sprints, (sprint) => sprint.closed) - if not @excludeClosedSprints - @scope.totalClosedMilestones = @scope.closedSprints.length - + @scope.closedSprints = [] + @scope.sprintsCounter = sprints.length @scope.sprintsById = groupBy(sprints, (x) -> x.id) @rootscope.$broadcast("sprints:loaded", sprints) @@ -232,10 +242,6 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F return promise.then(=> @.loadBacklog()) - toggleClosedSprintsVisualization: -> - @excludeClosedSprints = not @excludeClosedSprints - @.loadSprints() - filterVisibleUserstories: -> @scope.visibleUserstories = [] diff --git a/app/coffee/modules/backlog/sprints.coffee b/app/coffee/modules/backlog/sprints.coffee index 7a30ba9c..2ea737a4 100644 --- a/app/coffee/modules/backlog/sprints.coffee +++ b/app/coffee/modules/backlog/sprints.coffee @@ -135,23 +135,27 @@ module.directive("tgBacklogSprintHeader", ["$tgNavUrls", "$tgTemplate", BacklogS ############################################################################# ToggleExcludeClosedSprintsVisualization = ($rootscope, $loading) -> - excludeClosedSprints = false + excludeClosedSprints = true link = ($scope, $el, $attrs) -> # Event Handlers $el.on "click", "", (event) -> + excludeClosedSprints = not excludeClosedSprints + $loading.start($el.parent().siblings('.loading-spinner')) - $rootscope.$broadcast("backlog:toggle-closed-sprints-visualization") + if excludeClosedSprints + $rootscope.$broadcast("backlog:unload-closed-sprints") + else + $rootscope.$broadcast("backlog:load-closed-sprints") $scope.$on "$destroy", -> $el.off() - $scope.$on "sprints:loaded", (ctx, sprints) => - closedSprints = _.filter(sprints, (sprint) -> sprint.closed) + $scope.$on "closed-sprints:reloaded", (ctx, sprints) => $loading.finish($el.parent().siblings('.loading-spinner')) #TODO: i18n - if closedSprints.length > 0 + if sprints.length > 0 $el.text("Hide closed sprints") else $el.text("Show closed sprints") diff --git a/app/partials/includes/modules/sprints.jade b/app/partials/includes/modules/sprints.jade index 3e95cf9d..d3100acf 100644 --- a/app/partials/includes/modules/sprints.jade +++ b/app/partials/includes/modules/sprints.jade @@ -17,7 +17,7 @@ section.sprints a.filter-closed-sprints(href="", ng-show="totalClosedMilestones") span.icon.icon-archive - span(tg-backlog-toggle-closed-sprints-visualization="ctrl.excludeClosedSprints") Show closed sprints + span(tg-backlog-toggle-closed-sprints-visualization) Show closed sprints div.loading-spinner div.sprint.sprint-closed(ng-repeat="sprint in closedSprints track by sprint.id" tg-backlog-sprint="sprint", tg-sprint-sortable)