From 846a6813c6db1b10c50e3f7a686f70b4b2d0071b Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 12 May 2015 09:47:02 +0200 Subject: [PATCH] Fixing how user story neighbor works for backlog and taskboard --- app/coffee/modules/base/navurls.coffee | 5 ++++ app/coffee/modules/resources/sprints.coffee | 9 ------- app/coffee/modules/userstories/detail.coffee | 24 +++++++++++++++++++ .../includes/components/backlog-row.jade | 1 + app/partials/includes/modules/sprint.jade | 1 + .../includes/modules/taskboard-table.jade | 4 +++- app/partials/kanban/kanban-task.jade | 3 ++- 7 files changed, 36 insertions(+), 11 deletions(-) diff --git a/app/coffee/modules/base/navurls.coffee b/app/coffee/modules/base/navurls.coffee index 02e54ebb..32d10e21 100644 --- a/app/coffee/modules/base/navurls.coffee +++ b/app/coffee/modules/base/navurls.coffee @@ -100,6 +100,11 @@ NavigationUrlsDirective = ($navurls, $auth, $q, $location) -> url = $navurls.resolve(name) fullUrl = $navurls.formatUrl(url, options) + if $attrs.tgNavGetParams + getURLParams = JSON.parse($attrs.tgNavGetParams) + getURLParamsStr = $.param(getURLParams) + fullUrl = "#{fullUrl}?#{getURLParamsStr}" + target.data("fullUrl", fullUrl) if target.is("a") diff --git a/app/coffee/modules/resources/sprints.coffee b/app/coffee/modules/resources/sprints.coffee index ba06164b..d9f5ccdc 100644 --- a/app/coffee/modules/resources/sprints.coffee +++ b/app/coffee/modules/resources/sprints.coffee @@ -25,14 +25,9 @@ generateHash = taiga.generateHash resourceProvider = ($repo, $model, $storage) -> service = {} - hashSuffixUserstories = "userstories-queryparams" service.get = (projectId, sprintId) -> return $repo.queryOne("milestones", sprintId).then (sprint) -> - service.storeUserstoriesQueryParams(projectId, { - milestone: sprintId - order_by: "sprint_order" - }) uses = sprint.user_stories uses = _.map(uses, (u) -> $model.make_model("userstories", u)) sprint._attrs.user_stories = uses @@ -51,10 +46,6 @@ resourceProvider = ($repo, $model, $storage) -> m._attrs.user_stories = uses return milestones - service.storeUserstoriesQueryParams = (projectId, params) -> - ns = "#{projectId}:#{hashSuffixUserstories}" - hash = generateHash([projectId, ns]) - $storage.set(hash, params) return (instance) -> instance.sprints = service diff --git a/app/coffee/modules/userstories/detail.coffee b/app/coffee/modules/userstories/detail.coffee index 4ff0a7ba..9c3ef7f5 100644 --- a/app/coffee/modules/userstories/detail.coffee +++ b/app/coffee/modules/userstories/detail.coffee @@ -109,6 +109,30 @@ class UserStoryDetailController extends mixOf(taiga.Controller, taiga.PageMixin) return project loadUs: -> + httpParams = _.pick(@location.search(), "milestone", "no-milestone", "kanban-status") + milestone = httpParams.milestone + if milestone + @rs.userstories.storeQueryParams(@scope.projectId, { + milestone: milestone + order_by: "sprint_order" + }) + + noMilestone = httpParams["no-milestone"] + if noMilestone + @rs.userstories.storeQueryParams(@scope.projectId, { + milestone: "null" + order_by: "backlog_order" + }) + + kanbanStaus = httpParams["kanban-status"] + if kanbanStaus + @rs.userstories.storeQueryParams(@scope.projectId, { + status: kanbanStaus + order_by: "kanban_order" + }) + + + return @rs.userstories.getByRef(@scope.projectId, @params.usref).then (us) => @scope.us = us @scope.usId = us.id diff --git a/app/partials/includes/components/backlog-row.jade b/app/partials/includes/components/backlog-row.jade index b342de08..fb8ebfc0 100644 --- a/app/partials/includes/components/backlog-row.jade +++ b/app/partials/includes/components/backlog-row.jade @@ -4,6 +4,7 @@ div.row.us-item-row(ng-repeat="us in visibleUserstories track by us.id", tg-bind div.user-story-name input(tg-check-permission="modify_us", type="checkbox", name="") a.clickable(tg-nav="project-userstories-detail:project=project.slug,ref=us.ref", + tg-nav-get-params="{\"no-milestone\": 1}", title="#{{ us.ref }} {{ us.subject }}") span(tg-bo-ref="us.ref") span(ng-bind="us.subject") diff --git a/app/partials/includes/modules/sprint.jade b/app/partials/includes/modules/sprint.jade index ecdddbdc..dfc1aabf 100644 --- a/app/partials/includes/modules/sprint.jade +++ b/app/partials/includes/modules/sprint.jade @@ -6,6 +6,7 @@ div.sprint-table div.row.milestone-us-item-row(ng-repeat="us in sprint.user_stories track by us.id", tg-bind-scope) div.column-us a.us-name.clickable(tg-nav="project-userstories-detail:project=project.slug,ref=us.ref", + tg-nav-get-params="{\"milestone\": {{us.milestone}}}" tg-bo-title="'#' + us.ref + ' ' + us.subject", ng-class="{closed: us.is_closed, blocked: us.is_blocked}") span(tg-bo-ref="us.ref") diff --git a/app/partials/includes/modules/taskboard-table.jade b/app/partials/includes/modules/taskboard-table.jade index 6b0c3a6b..dfd46060 100644 --- a/app/partials/includes/modules/taskboard-table.jade +++ b/app/partials/includes/modules/taskboard-table.jade @@ -14,7 +14,9 @@ div.taskboard-table(tg-taskboard-squish-column) a.icon.icon-vfold.vfold(href="", title="{{'TASKBOARD.TABLE.TITLE_ACTION_FOLD_ROW' | translate}}", ng-click='foldUs(us)', ng-class='{hidden:usFolded[us.id]}') a.icon.icon-vunfold.vunfold(href="", title="{{'TASKBOARD.TABLE.TITLE_ACTION_UNFOLD_ROW' | translate}}", ng-click='foldUs(us)', ng-class='{hidden:!usFolded[us.id]}') h3.us-title - a(href="", tg-nav="project-userstories-detail:project=project.slug,ref=us.ref", + a(href="", + tg-nav="project-userstories-detail:project=project.slug,ref=us.ref", + tg-nav-get-params="{\"milestone\": {{us.milestone}}}", tg-bo-title="'#' + us.ref + ' ' + us.subject") span.us-ref(tg-bo-ref="us.ref") span(ng-bind="us.subject") diff --git a/app/partials/kanban/kanban-task.jade b/app/partials/kanban/kanban-task.jade index 8a6d2a7e..e108a4ab 100644 --- a/app/partials/kanban/kanban-task.jade +++ b/app/partials/kanban/kanban-task.jade @@ -5,7 +5,8 @@ div.kanban-task-inner(ng-class="{'task-archived': us.isArchived}") a.task-assigned(href="", title="{{'US.ASSIGN' | translate}}") span.task-num(tg-bo-ref="us.ref") a.task-name(href="", title="#{{ ::us.ref }} {{ us.subject }}", ng-bind="us.subject", - tg-nav="project-userstories-detail:project=project.slug,ref=us.ref") + tg-nav="project-userstories-detail:project=project.slug,ref=us.ref", + tg-nav-get-params="{\"kanban-status\": {{us.status}}}") p.task-points(href="", title="{{'US.TOTAL_US_POINTS' | translate}}") span(ng-if="us.total_points !== null", ng-bind="us.total_points")