Now issues list works

stable
Andrey Antukh 2014-06-26 22:19:01 +02:00
parent aedb776541
commit 6cf333ae10
2 changed files with 141 additions and 18 deletions

View File

@ -20,7 +20,13 @@
###
taiga = @.taiga
mixOf = @.taiga.mixOf
trim = @.taiga.trim
toString = @.taiga.toString
joinStr = @.taiga.joinStr
groupBy = @.taiga.groupBy
bindOnce = @.taiga.bindOnce
module = angular.module("taigaIssues")
@ -36,12 +42,12 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin)
"$tgConfirm",
"$tgResources",
"$routeParams",
"$q"
"$q",
"$location"
]
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q) ->
constructor: (@scope, @rootscope, @repo, @confirm, @rs, @params, @q, @location) ->
@scope.sprintId = @params.id
@scope.page = @params.page or 1
promise = @.loadInitialData()
promise.then null, ->
@ -55,15 +61,58 @@ class IssuesController extends mixOf(taiga.Controller, taiga.PageMixin)
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
@scope.project = project
@scope.points = _.sortBy(project.points, "order")
@scope.taskStatusList = _.sortBy(project.task_statuses, "order")
@scope.usStatusList = _.sortBy(project.us_statuses, "order")
# @scope.points = _.sortBy(project.points, "order")
# @scope.issueStatusList = _.sortBy(project.issue_statuses, "order")
# @scope.severityList = _.sortBy(project.severities, "order")
# @scope.priorityList = _.sortBy(project.priorities, "order")
@scope.issueStatusById = groupBy(project.issue_statuses, (x) -> x.id)
@scope.severityById = groupBy(project.severities, (x) -> x.id)
@scope.priorityById = groupBy(project.priorities, (x) -> x.id)
@scope.membersById = groupBy(project.memberships, (x) -> x.id)
console.log @scope.membersById
return project
selectFilter: (name, value, load=false) ->
params = @location.search()
if params[name] != undefined
existing = _.map(params[name].split(","), trim)
existing.push(value)
value = joinStr(",", _.uniq(existing))
location = if load then @location else @location.noreload()
location.search(name, value)
unselectFilter: (name, value, load=false) ->
params = @location.search()
if params[name] is undefined
return
if value is undefined
delete params[name]
parsedValues = _.map(params[name].split(","), trim)
newValues = _.reject(parsedValues, (x) -> x == toString(value))
if _.isEmpty(newValues)
value = null
else
value = joinStr(",", _.uniq(newValues))
location = if load then @location else @location.noreload()
location.search(name, value)
getFilters: ->
filters = _.pick(@location.search(), "page", "tags", "status", "type")
filters.page = 1 if not filters.page
return filters
loadIssues: ->
filters = {page: @scope.page}
filters = @.getFilters()
promise = @rs.issues.list(@scope.projectId, filters).then (data) =>
console.log "loadIssues:", data
@scope.issues = data.models
@scope.page = data.current
@scope.count = data.count
@ -207,4 +256,84 @@ IssuesDirective = ($log, $location) ->
return {link:link}
IssueStatusDirective = ->
link = ($scope, $el, $attrs) ->
issue = $scope.$eval($attrs.tgIssueStatus)
bindOnce $scope, "issueStatusById", (issueStatusById) ->
$el.html(issueStatusById[issue.status].name)
return {link:link}
IssueAssignedtoDirective = ->
template = """
<figure class="avatar">
<img src="http://thecodeplayer.com/u/uifaces/12.jpg" alt="username"/>
<figcaption>--</figcaption>
</figure>
"""
link = ($scope, $el, $attrs) ->
issue = $scope.$eval($attrs.tgIssueAssignedto)
if issue.assigned_to is null
$el.find("figcaption").html("Unassigned")
else
bindOnce $scope, "membersById", (membersById) ->
memberName = membersById[issue.assigned_to].full_name
$el.find("figcaption").html(memberName)
return {
template: template
link:link
}
IssuePriorityDirective = ->
template = """
<div class="level"></div>
"""
link = ($scope, $el, $attrs) ->
issue = $scope.$eval($attrs.tgIssuePriority)
bindOnce $scope, "priorityById", (priorityById) ->
priority = priorityById[issue.priority]
domNode = $el.find("div.level")
domNode.css("background-color", priority.color)
domNode.addClass(priority.name.toLowerCase())
domNode.attr("title", priority.name)
return {
link: link
template: template
}
IssueSeverityDirective = ->
template = """
<div class="level"></div>
"""
link = ($scope, $el, $attrs) ->
issue = $scope.$eval($attrs.tgIssueSeverity)
bindOnce $scope, "severityById", (severityById) ->
severity = severityById[issue.severity]
domNode = $el.find("div.level")
domNode.css("background-color", severity.color)
domNode.addClass(severity.name.toLowerCase())
domNode.attr("title", severity.name)
return {
link: link
template: template
}
module.directive("tgIssues", ["$log", "$tgLocation", IssuesDirective])
module.directive("tgIssueStatus", IssueStatusDirective)
module.directive("tgIssueAssignedto", IssueAssignedtoDirective)
module.directive("tgIssuePriority", IssuePriorityDirective)
module.directive("tgIssueSeverity", IssueSeverityDirective)

View File

@ -6,16 +6,10 @@ section.issues-table.basic-table
div.width-2 Status
div.width-2 Assigned to
div.row.table-main(ng-repeat="issue in issues track by issue.id")
div.level-field.width-1
div.level
div.level-field.width-1
div.level
div.level-field.width-1(tg-issue-severity="issue")
div.level-field.width-1(tg-issue-priority="issue")
div.width-7.subject(tg-bo-html="issue.subject")
div.width-2
In progress
div.width-2
figure.avatar
img(src="http://thecodeplayer.com/u/uifaces/12.jpg", alt="username")
figcaption Pilar
div.width-2(tg-issue-status="issue")
div.width-2(tg-issue-assignedto="issue")
section.issues-paginator