diff --git a/app/coffee/modules/backlog/main.coffee b/app/coffee/modules/backlog/main.coffee index 4fb67e09..4eb7075d 100644 --- a/app/coffee/modules/backlog/main.coffee +++ b/app/coffee/modules/backlog/main.coffee @@ -198,6 +198,9 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F @scope.sprintsCounter = sprints.length @scope.sprintsById = groupBy(sprints, (x) -> x.id) @rootscope.$broadcast("sprints:loaded", sprints) + + @scope.currentSprint = @.findCurrentSprint() + return sprints restoreFilters: -> @@ -591,6 +594,15 @@ class BacklogController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.F addNewSprint: () -> @rootscope.$broadcast("sprintform:create", @scope.projectId) + findCurrentSprint: () -> + currentDate = new Date().getTime() + + return _.find @scope.sprints, (sprint) -> + start = moment(sprint.estimated_start, 'YYYY-MM-DD').format('x') + end = moment(sprint.estimated_finish, 'YYYY-MM-DD').format('x') + + return currentDate >= start && currentDate <= end + module.controller("BacklogController", BacklogController) ############################################################################# @@ -641,40 +653,56 @@ BacklogDirective = ($repo, $rootscope, $translate) -> ## Move to current sprint link linkToolbar = ($scope, $el, $attrs, $ctrl) -> - moveToCurrentSprint = (selectedUss) -> + getUsToMove = () -> + # Calculating the us's to be modified + ussDom = $el.find(".backlog-table-body input:checkbox:checked") + + return _.map ussDom, (item) -> + item = $(item).closest('.tg-scope') + itemScope = item.scope() + itemScope.us.milestone = $scope.sprints[0].id + return itemScope.us + + moveUssToSprint = (selectedUss, sprint) -> ussCurrent = _($scope.userstories) # Remove them from backlog - $scope.userstories = ussCurrent.without.apply(ussCurrent, selectedUss).value() + #$scope.userstories = ussCurrent.without.apply(ussCurrent, selectedUss).value() extraPoints = _.map(selectedUss, (v, k) -> v.total_points) totalExtraPoints = _.reduce(extraPoints, (acc, num) -> acc + num) # Add them to current sprint - $scope.sprints[0].user_stories = _.union($scope.sprints[0].user_stories, selectedUss) + sprint.user_stories = _.union(sprint.user_stories, selectedUss) # Update the total of points - $scope.sprints[0].total_points += totalExtraPoints + sprint.total_points += totalExtraPoints $repo.saveAll(selectedUss).then -> $ctrl.loadSprints() $ctrl.loadProjectStats() + $el.find(".move-to-sprint").hide() + + moveToCurrentSprint = (selectedUss) -> + moveUssToSprint(selectedUss, $scope.currentSprint) + + moveToLatestSprint = (selectedUss) -> + moveUssToSprint(selectedUss, $scope.sprints[0]) shiftPressed = false lastChecked = null checkSelected = (target) -> lastChecked = target.closest(".us-item-row") - moveToCurrentSprintDom = $el.find("#move-to-current-sprint") + target.closest('.us-item-row').toggleClass('ui-multisortable-multiple') + moveToSprintDom = $el.find(".move-to-sprint") selectedUsDom = $el.find(".backlog-table-body input:checkbox:checked") if selectedUsDom.length > 0 and $scope.sprints.length > 0 - moveToCurrentSprintDom.show() + moveToSprintDom.show() else - moveToCurrentSprintDom.hide() - - target.closest('.us-item-row').toggleClass('ui-multisortable-multiple') + moveToSprintDom.hide() $(window).on "keydown.shift-pressed keyup.shift-pressed", (event) -> shiftPressed = !!event.shiftKey @@ -704,15 +732,13 @@ BacklogDirective = ($repo, $rootscope, $translate) -> target.closest(".us-item-row").toggleClass('is-checked') checkSelected(target) - $el.on "click", "#move-to-current-sprint", (event) => - # Calculating the us's to be modified - ussDom = $el.find(".backlog-table-body input:checkbox:checked") + $el.on "click", "#move-to-latest-sprint", (event) => + ussToMove = getUsToMove() - ussToMove = _.map ussDom, (item) -> - item = $(item).closest('.tg-scope') - itemScope = item.scope() - itemScope.us.milestone = $scope.sprints[0].id - return itemScope.us + $scope.$apply(_.partial(moveToLatestSprint, ussToMove)) + + $el.on "click", "#move-to-current-sprint", (event) => + ussToMove = getUsToMove() $scope.$apply(_.partial(moveToCurrentSprint, ussToMove)) diff --git a/app/locales/taiga/locale-en.json b/app/locales/taiga/locale-en.json index f446c6c9..b18a1755 100644 --- a/app/locales/taiga/locale-en.json +++ b/app/locales/taiga/locale-en.json @@ -952,6 +952,7 @@ "CUSTOMIZE_GRAPH_ADMIN": "Admin", "CUSTOMIZE_GRAPH_TITLE": "Set up the points and sprints through the Admin", "MOVE_US_TO_CURRENT_SPRINT": "Move to Current Sprint", + "MOVE_US_TO_LATEST_SPRINT": "Move to latest Sprint", "SHOW_FILTERS": "Show filters", "SHOW_TAGS": "Show tags", "EMPTY": "The backlog is empty!", diff --git a/app/partials/backlog/backlog.jade b/app/partials/backlog/backlog.jade index b55788b4..0752b02f 100644 --- a/app/partials/backlog/backlog.jade +++ b/app/partials/backlog/backlog.jade @@ -24,13 +24,22 @@ div.wrapper(tg-backlog, ng-controller="BacklogController as ctrl", div.backlog-menu div.backlog-table-options - a.trans-button.move-to-current-sprint( + a.trans-button.move-to-current-sprint.move-to-sprint( + ng-if="currentSprint" href="" title="{{'BACKLOG.MOVE_US_TO_CURRENT_SPRINT' | translate}}" id="move-to-current-sprint" ) span.icon.icon-move span.text(translate="BACKLOG.MOVE_US_TO_CURRENT_SPRINT") + a.trans-button.move-to-latest-sprint.move-to-sprint( + ng-if="!currentSprint" + href="" + title="{{'BACKLOG.MOVE_US_TO_LATEST_SPRINT' | translate}}" + id="move-to-latest-sprint" + ) + span.icon.icon-move + span.text(translate="BACKLOG.MOVE_US_TO_LATEST_SPRINT") a.trans-button( ng-if="userstories.length" href="" diff --git a/app/styles/layout/backlog.scss b/app/styles/layout/backlog.scss index b5edef9e..77b905f8 100644 --- a/app/styles/layout/backlog.scss +++ b/app/styles/layout/backlog.scss @@ -19,7 +19,7 @@ background: lighten($gray, 30%); } } - &.move-to-current-sprint { + &.move-to-sprint { display: none; } }