Minor code improvements on backlog.
parent
5e4361717a
commit
4fb49575a5
|
@ -277,24 +277,27 @@ BacklogDirective = ($repo, $rootscope) ->
|
||||||
## Move to current sprint link
|
## Move to current sprint link
|
||||||
##############################
|
##############################
|
||||||
|
|
||||||
linkMoveToCurrentSprint = ($scope, $el, $attrs, $ctrl) ->
|
linkToolbar = ($scope, $el, $attrs, $ctrl) ->
|
||||||
|
|
||||||
moveToCurrentSprint = (selectedUss) ->
|
moveToCurrentSprint = (selectedUss) ->
|
||||||
ussCurrent = _($scope.userstories)
|
ussCurrent = _($scope.userstories)
|
||||||
|
|
||||||
# Remove them from backlog
|
# Remove them from backlog
|
||||||
$scope.userstories = ussCurrent.without.apply(ussCurrent, selectedUss).value()
|
$scope.userstories = ussCurrent.without.apply(ussCurrent, selectedUss).value()
|
||||||
|
|
||||||
# Add them to current sprint
|
# Add them to current sprint
|
||||||
$scope.sprints[0].user_stories = _.union(selectedUss, $scope.sprints[0].user_stories)
|
$scope.sprints[0].user_stories = _.union(selectedUss, $scope.sprints[0].user_stories)
|
||||||
|
|
||||||
$ctrl.filterVisibleUserstories()
|
$ctrl.filterVisibleUserstories()
|
||||||
$repo.saveAll(selectedUss)
|
$repo.saveAll(selectedUss)
|
||||||
scopeDefer $scope, =>
|
|
||||||
$scope.$broadcast("doomline:redraw")
|
|
||||||
|
|
||||||
|
scopeDefer $scope, ->
|
||||||
|
$scope.$broadcast("doomline:redraw")
|
||||||
|
|
||||||
# Enable move to current sprint only when there are selected us's
|
# Enable move to current sprint only when there are selected us's
|
||||||
$el.on "change", ".backlog-table-body .user-stories input:checkbox", (event) ->
|
$el.on "change", ".backlog-table-body .user-stories input:checkbox", (event) ->
|
||||||
moveToCurrentSprintDom = $el.find("#move-to-current-sprint")
|
moveToCurrentSprintDom = $el.find("#move-to-current-sprint")
|
||||||
selectedUsDom = $el.find(".backlog-table-body .user-stories input:checkbox:checked")
|
selectedUsDom = $el.find(".backlog-table-body .user-stories input:checkbox:checked")
|
||||||
|
|
||||||
if selectedUsDom.length > 0 and $scope.sprints.length > 0
|
if selectedUsDom.length > 0 and $scope.sprints.length > 0
|
||||||
moveToCurrentSprintDom.show()
|
moveToCurrentSprintDom.show()
|
||||||
else
|
else
|
||||||
|
@ -303,6 +306,7 @@ BacklogDirective = ($repo, $rootscope) ->
|
||||||
$el.on "click", "#move-to-current-sprint", (event) =>
|
$el.on "click", "#move-to-current-sprint", (event) =>
|
||||||
# Calculating the us's to be modified
|
# Calculating the us's to be modified
|
||||||
ussDom = $el.find(".backlog-table-body .user-stories input:checkbox:checked")
|
ussDom = $el.find(".backlog-table-body .user-stories input:checkbox:checked")
|
||||||
|
|
||||||
ussToMove = _.map ussDom, (item) ->
|
ussToMove = _.map ussDom, (item) ->
|
||||||
itemScope = angular.element(item).scope()
|
itemScope = angular.element(item).scope()
|
||||||
itemScope.us.milestone = $scope.sprints[0].id
|
itemScope.us.milestone = $scope.sprints[0].id
|
||||||
|
@ -310,6 +314,14 @@ BacklogDirective = ($repo, $rootscope) ->
|
||||||
|
|
||||||
$scope.$apply(_.partial(moveToCurrentSprint, ussToMove))
|
$scope.$apply(_.partial(moveToCurrentSprint, ussToMove))
|
||||||
|
|
||||||
|
$el.on "click", "#show-tags", (event) ->
|
||||||
|
event.preventDefault()
|
||||||
|
target = angular.element(event.currentTarget)
|
||||||
|
$el.find(".user-story-tags").toggle()
|
||||||
|
target.toggleClass("active")
|
||||||
|
toggleText(target.find(".text"), ["Hide Tags", "Show Tags"]) # TODO: i18n
|
||||||
|
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
## Filters Link
|
## Filters Link
|
||||||
#########################
|
#########################
|
||||||
|
@ -324,13 +336,6 @@ BacklogDirective = ($repo, $rootscope) ->
|
||||||
toggleText(target.find(".text"), ["Hide Filters", "Show Filters"]) # TODO: i18n
|
toggleText(target.find(".text"), ["Hide Filters", "Show Filters"]) # TODO: i18n
|
||||||
$rootscope.$broadcast("resize")
|
$rootscope.$broadcast("resize")
|
||||||
|
|
||||||
$el.on "click", "#show-tags", (event) ->
|
|
||||||
event.preventDefault()
|
|
||||||
target = angular.element(event.currentTarget)
|
|
||||||
$el.find(".user-story-tags").toggle()
|
|
||||||
target.toggleClass("active")
|
|
||||||
toggleText(target.find(".text"), ["Hide Tags", "Show Tags"]) # TODO: i18n
|
|
||||||
|
|
||||||
$el.on "click", "section.filters a.single-filter", (event) ->
|
$el.on "click", "section.filters a.single-filter", (event) ->
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
target = angular.element(event.currentTarget)
|
target = angular.element(event.currentTarget)
|
||||||
|
@ -342,8 +347,9 @@ BacklogDirective = ($repo, $rootscope) ->
|
||||||
|
|
||||||
link = ($scope, $el, $attrs, $rootscope) ->
|
link = ($scope, $el, $attrs, $rootscope) ->
|
||||||
$ctrl = $el.controller()
|
$ctrl = $el.controller()
|
||||||
|
|
||||||
|
linkToolbar($scope, $el, $attrs, $ctrl)
|
||||||
linkSortable($scope, $el, $attrs, $ctrl)
|
linkSortable($scope, $el, $attrs, $ctrl)
|
||||||
linkMoveToCurrentSprint($scope, $el, $attrs, $ctrl)
|
|
||||||
linkFilters($scope, $el, $attrs, $ctrl)
|
linkFilters($scope, $el, $attrs, $ctrl)
|
||||||
linkDoomLine($scope, $el, $attrs, $ctrl)
|
linkDoomLine($scope, $el, $attrs, $ctrl)
|
||||||
|
|
||||||
|
@ -474,6 +480,7 @@ UsRolePointsSelectorDirective = ($rootscope) ->
|
||||||
""")
|
""")
|
||||||
|
|
||||||
link = ($scope, $el, $attrs) ->
|
link = ($scope, $el, $attrs) ->
|
||||||
|
# Watchers
|
||||||
bindOnce $scope, "project", (project) ->
|
bindOnce $scope, "project", (project) ->
|
||||||
roles = _.filter(project.roles, "computable")
|
roles = _.filter(project.roles, "computable")
|
||||||
$el.append(selectionTemplate({ 'roles': roles }))
|
$el.append(selectionTemplate({ 'roles': roles }))
|
||||||
|
@ -486,6 +493,7 @@ UsRolePointsSelectorDirective = ($rootscope) ->
|
||||||
$el.find(".popover").hide()
|
$el.find(".popover").hide()
|
||||||
$el.find(".header-points").text("Points") #TODO: i18n
|
$el.find(".header-points").text("Points") #TODO: i18n
|
||||||
|
|
||||||
|
# Dom Event Handlers
|
||||||
$el.on "click", (event) ->
|
$el.on "click", (event) ->
|
||||||
target = angular.element(event.target)
|
target = angular.element(event.target)
|
||||||
|
|
||||||
|
@ -536,31 +544,27 @@ UsPointsDirective = ($repo) ->
|
||||||
</ul>
|
</ul>
|
||||||
""")
|
""")
|
||||||
|
|
||||||
updatePointsValue = (usPoints, usTotalPoints, pointsById, pointsDomNode, selectedRoleId) ->
|
|
||||||
if not selectedRoleId?
|
|
||||||
pointsDomNode.text(usTotalPoints)
|
|
||||||
else
|
|
||||||
selectedPoints = pointsById[usPoints[selectedRoleId]]
|
|
||||||
selectedPointsValue = selectedPoints.value
|
|
||||||
selectedPointsValue = '?' if not selectedPointsValue?
|
|
||||||
pointsDomNode.text("#{selectedPointsValue}/#{usTotalPoints}")
|
|
||||||
|
|
||||||
calculateTotalPoints = (us, pointsById) ->
|
|
||||||
values = _.map(us.points, (v, k) -> pointsById[v].value)
|
|
||||||
return _.reduce(values, (acc, num) -> acc + num)
|
|
||||||
|
|
||||||
link = ($scope, $el, $attrs) ->
|
link = ($scope, $el, $attrs) ->
|
||||||
$ctrl = $el.controller()
|
$ctrl = $el.controller()
|
||||||
|
|
||||||
us = $scope.$eval($attrs.tgUsPoints)
|
us = $scope.$eval($attrs.tgUsPoints)
|
||||||
|
|
||||||
usPoints = us.points
|
|
||||||
usTotalPoints = us.total_points
|
|
||||||
pointsDom = $el.find("a")
|
|
||||||
selectedRoleId = null
|
|
||||||
updatingSelectedRoleId = null
|
updatingSelectedRoleId = null
|
||||||
pointsById = $scope.pointsById
|
selectedRoleId = null
|
||||||
|
|
||||||
updatePointsValue(usPoints, usTotalPoints, pointsById, pointsDom, selectedRoleId)
|
updatePoints = (roleId) ->
|
||||||
|
pointsDom = $el.find("a > span.points-value")
|
||||||
|
if not roleId?
|
||||||
|
pointsDom.text(us.total_points)
|
||||||
|
else
|
||||||
|
pointId = us.points[roleId]
|
||||||
|
points = $scope.pointsById[pointId]
|
||||||
|
pointsDom.text("#{points.name}/#{us.total_points}")
|
||||||
|
|
||||||
|
calculateTotalPoints = ->
|
||||||
|
values = _.map(us.points, (v, k) -> $scope.pointsById[v].value)
|
||||||
|
return _.reduce(values, (acc, num) -> acc + num)
|
||||||
|
|
||||||
|
updatePoints(null)
|
||||||
|
|
||||||
bindOnce $scope, "project", (project) ->
|
bindOnce $scope, "project", (project) ->
|
||||||
roles = _.filter(project.roles, "computable")
|
roles = _.filter(project.roles, "computable")
|
||||||
|
@ -568,18 +572,20 @@ UsPointsDirective = ($repo) ->
|
||||||
$el.append(pointsTemplate({ "points": project.points }))
|
$el.append(pointsTemplate({ "points": project.points }))
|
||||||
|
|
||||||
$scope.$on "uspoints:select", (ctx, roleId, roleName) ->
|
$scope.$on "uspoints:select", (ctx, roleId, roleName) ->
|
||||||
|
updatePoints(roleId)
|
||||||
selectedRoleId = roleId
|
selectedRoleId = roleId
|
||||||
updatePointsValue(usPoints, usTotalPoints, pointsById, pointsDom, selectedRoleId)
|
|
||||||
|
|
||||||
$scope.$on "uspoints:clear-selection", (ctx) ->
|
$scope.$on "uspoints:clear-selection", (ctx) ->
|
||||||
|
updatePoints(null)
|
||||||
selectedRoleId = null
|
selectedRoleId = null
|
||||||
updatePointsValue(usPoints, usTotalPoints, pointsById, pointsDom, selectedRoleId)
|
|
||||||
|
|
||||||
$el.on "click", "a.us-points", (event) ->
|
$el.on "click", "a.us-points", (event) ->
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
target = angular.element(event.target)
|
target = angular.element(event.target)
|
||||||
|
|
||||||
if target.is("a")
|
console.log target
|
||||||
|
|
||||||
|
if target.is("span")
|
||||||
event.stopPropagation()
|
event.stopPropagation()
|
||||||
|
|
||||||
if selectedRoleId?
|
if selectedRoleId?
|
||||||
|
@ -595,23 +601,33 @@ UsPointsDirective = ($repo) ->
|
||||||
$el.on "click", ".role", (event) ->
|
$el.on "click", ".role", (event) ->
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
event.stopPropagation()
|
event.stopPropagation()
|
||||||
|
|
||||||
target = angular.element(event.currentTarget)
|
target = angular.element(event.currentTarget)
|
||||||
updatingSelectedRoleId = target.data("role-id")
|
updatingSelectedRoleId = target.data("role-id")
|
||||||
|
|
||||||
$el.find(".pop-points-open").show()
|
$el.find(".pop-points-open").show()
|
||||||
$el.find(".pop-role").hide()
|
$el.find(".pop-role").hide()
|
||||||
|
|
||||||
$el.on "click", ".point", (event) ->
|
$el.on "click", ".point", (event) ->
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
event.stopPropagation()
|
event.stopPropagation()
|
||||||
|
|
||||||
target = angular.element(event.currentTarget)
|
target = angular.element(event.currentTarget)
|
||||||
$el.find(".pop-points-open").hide()
|
$el.find(".pop-points-open").hide()
|
||||||
|
|
||||||
$scope.$apply () ->
|
$scope.$apply () ->
|
||||||
|
usPoints = _.clone(us.points, true)
|
||||||
usPoints[updatingSelectedRoleId] = target.data("point-id")
|
usPoints[updatingSelectedRoleId] = target.data("point-id")
|
||||||
us.points = _.clone(usPoints, true)
|
us.points = usPoints
|
||||||
usTotalPoints = calculateTotalPoints(us, $scope.pointsById)
|
|
||||||
|
usTotalPoints = calculateTotalPoints(us)
|
||||||
us.total_points = usTotalPoints
|
us.total_points = usTotalPoints
|
||||||
updatePointsValue(usPoints, usTotalPoints, pointsById, pointsDom, selectedRoleId)
|
|
||||||
|
updatePoints(selectedRoleId)
|
||||||
|
|
||||||
$repo.save(us).then ->
|
$repo.save(us).then ->
|
||||||
|
# Little Hack for refresh.
|
||||||
|
$repo.refresh(us).then ->
|
||||||
$ctrl.loadProjectStats()
|
$ctrl.loadProjectStats()
|
||||||
|
|
||||||
$scope.$on "$destroy", ->
|
$scope.$on "$destroy", ->
|
||||||
|
|
Loading…
Reference in New Issue