diff --git a/app/coffee/modules/issues/detail.coffee b/app/coffee/modules/issues/detail.coffee
index 9ae3f10c..b28f8681 100644
--- a/app/coffee/modules/issues/detail.coffee
+++ b/app/coffee/modules/issues/detail.coffee
@@ -57,8 +57,11 @@ class IssueDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
@scope.project = project
- @scope.issueStatusById = groupBy(project.issue_statuses, (x) -> x.id)
+ @scope.statusList = project.issue_statuses
+ @scope.statusById = groupBy(project.issue_statuses, (x) -> x.id)
+ @scope.severityList = project.severities
@scope.severityById = groupBy(project.severities, (x) -> x.id)
+ @scope.priorityList = project.priorities
@scope.priorityById = groupBy(project.priorities, (x) -> x.id)
@scope.membersById = groupBy(project.memberships, (x) -> x.user)
return project
@@ -280,7 +283,7 @@ AssignedToDirective = ($rootscope, $confirm) ->
<% } %>
- <% if (editable) { %>
+ <% if (editable && assignedTo!==null) { %>
<% } %>
@@ -314,3 +317,141 @@ AssignedToDirective = ($rootscope, $confirm) ->
return {link:link, require:"ngModel"}
module.directive("tgAssignedTo", ["$rootScope", "$tgConfirm", AssignedToDirective])
+
+
+
+
+
+#############################################################################
+## Issue status directive
+#############################################################################
+
+IssueStatusDirective = () ->
+ #TODO: i18n
+ template = _.template("""
+
+
+ <% if (status.is_closed) { %>
+ Closed
+ <% } else { %>
+ Open
+ <% } %>
+ <%= status.name %>
+
+
+
+
+ <%= severity.name %>
+ severity
+
+
+
+ <%= priority.name %>
+ priority
+
+
+
+ <%= status.name %>
+ status
+
+
+ """)
+ selectionSeverityTemplate = _.template("""
+
+ """)
+ selectionPriorityTemplate = _.template("""
+
+ """)
+ selectionStatusTemplate = _.template("""
+
+ """)
+
+ link = ($scope, $el, $attrs, $model) ->
+ editable = $attrs.editable?
+
+ renderIssuestatus = (issue) ->
+ status = $scope.statusById[issue.status]
+ severity = $scope.severityById[issue.severity]
+ priority = $scope.priorityById[issue.priority]
+ html = template({
+ editable: editable
+ status: status
+ severity: severity
+ priority: priority
+ })
+ $el.html(html)
+ $el.find(".severity-data").append(selectionSeverityTemplate({severities:$scope.severityList}))
+ $el.find(".priority-data").append(selectionPriorityTemplate({priorities:$scope.priorityList}))
+ $el.find(".status-data").append(selectionStatusTemplate({statuses:$scope.statusList}))
+
+ $scope.$watch $attrs.ngModel, (issue) ->
+ if issue?
+ renderIssuestatus(issue)
+
+ if editable
+ $el.on "click", ".severity-data", (event) ->
+ event.preventDefault()
+ event.stopPropagation()
+ $el.find(".pop-severity").show()
+ body = angular.element("body")
+ body.one "click", (event) ->
+ $el.find(".popover").hide()
+
+ $el.on "click", ".severity", (event) ->
+ event.preventDefault()
+ event.stopPropagation()
+ target = angular.element(event.currentTarget)
+ $model.$modelValue.severity = target.data("severity-id")
+ renderIssuestatus($model.$modelValue)
+ $el.find(".popover").hide()
+
+ $el.on "click", ".priority-data", (event) ->
+ event.preventDefault()
+ event.stopPropagation()
+ $el.find(".pop-priority").show()
+ body = angular.element("body")
+ body.one "click", (event) ->
+ $el.find(".popover").hide()
+
+ $el.on "click", ".priority", (event) ->
+ event.preventDefault()
+ event.stopPropagation()
+ target = angular.element(event.currentTarget)
+ $model.$modelValue.priority = target.data("priority-id")
+ renderIssuestatus($model.$modelValue)
+ $el.find(".popover").hide()
+
+ $el.on "click", ".status-data", (event) ->
+ event.preventDefault()
+ event.stopPropagation()
+ $el.find(".pop-status").show()
+ body = angular.element("body")
+ body.one "click", (event) ->
+ $el.find(".popover").hide()
+
+ $el.on "click", ".status", (event) ->
+ event.preventDefault()
+ event.stopPropagation()
+ target = angular.element(event.currentTarget)
+ $model.$modelValue.status = target.data("status-id")
+ renderIssuestatus($model.$modelValue)
+ $el.find(".popover").hide()
+
+ return {link:link, require:"ngModel"}
+
+module.directive("tgIssueStatus", IssueStatusDirective)
diff --git a/app/coffee/modules/issues/lightboxes.coffee b/app/coffee/modules/issues/lightboxes.coffee
index fdb705f3..35086a66 100644
--- a/app/coffee/modules/issues/lightboxes.coffee
+++ b/app/coffee/modules/issues/lightboxes.coffee
@@ -76,7 +76,6 @@ module.directive("tgLbAddWatcher", AddWatcherDirective)
AddAssignedToDirective = () ->
link = ($scope, $el, $attrs) ->
$scope.watcherSearch = {}
- console.log "ASDASDASD"
$scope.$on "assigned-to:add", ->
$el.removeClass("hidden")
$scope.$apply ->
diff --git a/app/partials/issues-detail-edit.jade b/app/partials/issues-detail-edit.jade
index 6b6b7c52..e5590921 100644
--- a/app/partials/issues-detail-edit.jade
+++ b/app/partials/issues-detail-edit.jade
@@ -42,24 +42,7 @@ block content
include views/modules/comments
// include views/modules/activity
sidebar.menu-secondary.sidebar
- h1
- span Open
- span.us-detail-status In progress
-
- div.issue-data
- div.severity-data
- span.level
- span.severity-status Important
- span.level-name severity
- div.priority-data
- span.level
- span.priority-status low
- span.level-name priority
- div.status-data
- span.level
- span.status-status new
- span.level-name status
-
+ section.us-status(tg-issue-status, ng-model="issue", editable="true")
section.us-assigned-to(tg-assigned-to, ng-model="issue.assigned_to", editable="true")
section.watchers(tg-watchers, ng-model="issue.watchers", editable="true")
diff --git a/app/partials/issues-detail.jade b/app/partials/issues-detail.jade
index 0249d8e8..f98075d4 100644
--- a/app/partials/issues-detail.jade
+++ b/app/partials/issues-detail.jade
@@ -45,24 +45,7 @@ block content
include views/modules/comments
// include views/modules/activity
sidebar.menu-secondary.sidebar
- h1
- span Open
- span.us-detail-status In progress
-
- div.issue-data
- div.severity-data
- span.level
- span.severity-status Important
- span.level-name severity
- div.priority-data
- span.level
- span.priority-status low
- span.level-name priority
- div.status-data
- span.level
- span.status-status new
- span.level-name status
-
+ section.us-status(tg-issue-status, ng-model="issue")
section.us-assigned-to(tg-assigned-to, ng-model="issue.assigned_to")
section.watchers(tg-watchers, ng-model="issue.watchers")
diff --git a/app/styles/dependencies/elements.scss b/app/styles/dependencies/elements.scss
index dfe75f9b..03bb53fe 100644
--- a/app/styles/dependencies/elements.scss
+++ b/app/styles/dependencies/elements.scss
@@ -45,3 +45,11 @@ ol { list-style: decimal; }
.icon {
vertical-align: middle;
}
+
+.clickable {
+ cursor:pointer;
+}
+
+.draggable {
+ cursor:move;
+}
diff --git a/app/styles/layout/us-detail.scss b/app/styles/layout/us-detail.scss
index c213c3b5..79e1d003 100644
--- a/app/styles/layout/us-detail.scss
+++ b/app/styles/layout/us-detail.scss
@@ -301,3 +301,24 @@
}
}
}
+
+.us-status {
+ .severity-data{
+ position: relative;
+ .pop-severity {
+ @include popover(150px, '', 30px, '', '');
+ }
+ }
+ .priority-data{
+ position: relative;
+ .pop-priority {
+ @include popover(150px, '', 30px, '', '');
+ }
+ }
+ .status-data{
+ position: relative;
+ .pop-status {
+ @include popover(150px, '', 30px, '', '');
+ }
+ }
+}