diff --git a/app/coffee/modules/common/popovers.coffee b/app/coffee/modules/common/popovers.coffee
index 4810c96e..55b85586 100644
--- a/app/coffee/modules/common/popovers.coffee
+++ b/app/coffee/modules/common/popovers.coffee
@@ -28,8 +28,6 @@ module = angular.module("taigaCommon")
## UserStory status Directive (popover for change status)
#############################################################################
-# FIXME: change to less generic name.
-
UsStatusDirective = ($repo, popoverService) ->
###
Print the status of a US and a popover to change it.
diff --git a/app/coffee/modules/issues/list.coffee b/app/coffee/modules/issues/list.coffee
index a6df6c77..0115c743 100644
--- a/app/coffee/modules/issues/list.coffee
+++ b/app/coffee/modules/issues/list.coffee
@@ -593,3 +593,79 @@ IssuesFiltersDirective = ($log, $location) ->
module.directive("tgIssuesFilters", ["$log", "$tgLocation", IssuesFiltersDirective])
module.directive("tgIssues", ["$log", "$tgLocation", IssuesDirective])
+
+
+
+
+
+
+#############################################################################
+## Issue status Directive (popover for change status)
+#############################################################################
+
+IssueStatusInlineEditionDirective = ($repo, popoverService) ->
+ ###
+ Print the status of a Issue and a popover to change it.
+ - tg-issue-status: The user story
+
+ Example:
+
+ div.status(tg-issue-status="issue")
+ a.issue-status(href="", title="Status Name")
+
+ NOTE: This directive need 'issueStatusById' and 'project'.
+ ###
+ selectionTemplate = _.template("""
+
""")
+
+ updateIssueStatus = ($el, issue, issueStatusById) ->
+ issueStatusDomParent = $el.find(".issue-status")
+ issueStatusDom = $el.find(".issue-status .issue-status-bind")
+
+ if issueStatusById[issue.status]
+ issueStatusDom.text(issueStatusById[issue.status].name)
+ issueStatusDomParent.css('color', issueStatusById[issue.status].color)
+
+ link = ($scope, $el, $attrs) ->
+ $ctrl = $el.controller()
+ issue = $scope.$eval($attrs.tgIssueStatusInlineEdition)
+
+ $el.on "click", ".issue-status", (event) ->
+ event.preventDefault()
+ event.stopPropagation()
+ $el.find(".pop-status").popover().open()
+
+ $el.on "click", ".status", (event) ->
+ event.preventDefault()
+ event.stopPropagation()
+ target = angular.element(event.currentTarget)
+ issue.status = target.data("status-id")
+ $el.find(".pop-status").popover().close()
+ updateIssueStatus($el, issue, $scope.issueStatusById)
+
+ $scope.$apply () ->
+ $repo.save(issue).then
+
+ taiga.bindOnce $scope, "project", (project) ->
+ $el.append(selectionTemplate({ 'statuses': project.issue_statuses }))
+ updateIssueStatus($el, issue, $scope.issueStatusById)
+
+ # If the user has not enough permissions the click events are unbinded
+ if project.my_permissions.indexOf("modify_issue") == -1
+ $el.unbind("click")
+ $el.find("a").addClass("not-clickable")
+
+ $scope.$on "$destroy", ->
+ $el.off()
+
+ return {link: link}
+
+module.directive("tgIssueStatusInlineEdition", ["$tgRepo", IssueStatusInlineEditionDirective])
diff --git a/app/partials/views/modules/issues-table.jade b/app/partials/views/modules/issues-table.jade
index fed3108d..f1fa87e0 100644
--- a/app/partials/views/modules/issues-table.jade
+++ b/app/partials/views/modules/issues-table.jade
@@ -15,7 +15,12 @@ section.issues-table.basic-table(ng-class="{empty: !issues.length}")
a(href="", tg-nav="project-issues-detail:project=project.slug,ref=issue.ref")
span(tg-bo-ref="issue.ref")
span(tg-bo-bind="issue.subject")
- div.issue-field(tg-listitem-issue-status="issue")
+
+ div.issue-field(tg-issue-status-inline-edition="issue")
+ a.issue-status(href="", title="Status Name")
+ span.issue-status-bind
+ span.icon.icon-arrow-bottom(tg-check-permission, permission="modify_issue")
+
div.created-field(tg-bo-bind="issue.created_date")
div.assigned-field(tg-listitem-assignedto="issue")
diff --git a/app/styles/modules/issues/issues-table.scss b/app/styles/modules/issues/issues-table.scss
index dd94dc5e..b9f08599 100644
--- a/app/styles/modules/issues/issues-table.scss
+++ b/app/styles/modules/issues/issues-table.scss
@@ -9,6 +9,9 @@
background: lighten($green-taiga, 60%);
@include transition (background .2s ease-in);
}
+ .icon {
+ display: inline;
+ }
}
.row-selected {
background: lighten($green-taiga, 60%);
@@ -59,4 +62,11 @@
padding: 0 1rem;
text-align: left;
}
+ .pop-status {
+ @include popover(200px, 0, 65%, '', '');
+ &.fix {
+ bottom: 0;
+ top: auto;
+ }
+ }
}