Fixing how user story neighbor works for backlog and taskboard

stable
Alejandro Alonso 2015-05-12 09:47:02 +02:00
parent 90f83f9694
commit 846a6813c6
7 changed files with 36 additions and 11 deletions

View File

@ -100,6 +100,11 @@ NavigationUrlsDirective = ($navurls, $auth, $q, $location) ->
url = $navurls.resolve(name) url = $navurls.resolve(name)
fullUrl = $navurls.formatUrl(url, options) fullUrl = $navurls.formatUrl(url, options)
if $attrs.tgNavGetParams
getURLParams = JSON.parse($attrs.tgNavGetParams)
getURLParamsStr = $.param(getURLParams)
fullUrl = "#{fullUrl}?#{getURLParamsStr}"
target.data("fullUrl", fullUrl) target.data("fullUrl", fullUrl)
if target.is("a") if target.is("a")

View File

@ -25,14 +25,9 @@ generateHash = taiga.generateHash
resourceProvider = ($repo, $model, $storage) -> resourceProvider = ($repo, $model, $storage) ->
service = {} service = {}
hashSuffixUserstories = "userstories-queryparams"
service.get = (projectId, sprintId) -> service.get = (projectId, sprintId) ->
return $repo.queryOne("milestones", sprintId).then (sprint) -> return $repo.queryOne("milestones", sprintId).then (sprint) ->
service.storeUserstoriesQueryParams(projectId, {
milestone: sprintId
order_by: "sprint_order"
})
uses = sprint.user_stories uses = sprint.user_stories
uses = _.map(uses, (u) -> $model.make_model("userstories", u)) uses = _.map(uses, (u) -> $model.make_model("userstories", u))
sprint._attrs.user_stories = uses sprint._attrs.user_stories = uses
@ -51,10 +46,6 @@ resourceProvider = ($repo, $model, $storage) ->
m._attrs.user_stories = uses m._attrs.user_stories = uses
return milestones return milestones
service.storeUserstoriesQueryParams = (projectId, params) ->
ns = "#{projectId}:#{hashSuffixUserstories}"
hash = generateHash([projectId, ns])
$storage.set(hash, params)
return (instance) -> return (instance) ->
instance.sprints = service instance.sprints = service

View File

@ -109,6 +109,30 @@ class UserStoryDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
return project return project
loadUs: -> 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) => return @rs.userstories.getByRef(@scope.projectId, @params.usref).then (us) =>
@scope.us = us @scope.us = us
@scope.usId = us.id @scope.usId = us.id

View File

@ -4,6 +4,7 @@ div.row.us-item-row(ng-repeat="us in visibleUserstories track by us.id", tg-bind
div.user-story-name div.user-story-name
input(tg-check-permission="modify_us", type="checkbox", name="") input(tg-check-permission="modify_us", type="checkbox", name="")
a.clickable(tg-nav="project-userstories-detail:project=project.slug,ref=us.ref", 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 }}") title="#{{ us.ref }} {{ us.subject }}")
span(tg-bo-ref="us.ref") span(tg-bo-ref="us.ref")
span(ng-bind="us.subject") span(ng-bind="us.subject")

View File

@ -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.row.milestone-us-item-row(ng-repeat="us in sprint.user_stories track by us.id", tg-bind-scope)
div.column-us div.column-us
a.us-name.clickable(tg-nav="project-userstories-detail:project=project.slug,ref=us.ref", 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", tg-bo-title="'#' + us.ref + ' ' + us.subject",
ng-class="{closed: us.is_closed, blocked: us.is_blocked}") ng-class="{closed: us.is_closed, blocked: us.is_blocked}")
span(tg-bo-ref="us.ref") span(tg-bo-ref="us.ref")

View File

@ -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-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]}') 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 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") tg-bo-title="'#' + us.ref + ' ' + us.subject")
span.us-ref(tg-bo-ref="us.ref") span.us-ref(tg-bo-ref="us.ref")
span(ng-bind="us.subject") span(ng-bind="us.subject")

View File

@ -5,7 +5,8 @@ div.kanban-task-inner(ng-class="{'task-archived': us.isArchived}")
a.task-assigned(href="", title="{{'US.ASSIGN' | translate}}") a.task-assigned(href="", title="{{'US.ASSIGN' | translate}}")
span.task-num(tg-bo-ref="us.ref") span.task-num(tg-bo-ref="us.ref")
a.task-name(href="", title="#{{ ::us.ref }} {{ us.subject }}", ng-bind="us.subject", 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}}") p.task-points(href="", title="{{'US.TOTAL_US_POINTS' | translate}}")
span(ng-if="us.total_points !== null", ng-bind="us.total_points") span(ng-if="us.total_points !== null", ng-bind="us.total_points")