Fixing how user story neighbor works for backlog and taskboard
parent
90f83f9694
commit
846a6813c6
|
@ -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")
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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")
|
||||||
|
|
Loading…
Reference in New Issue