Add assignment for stories
This commit is contained in:
parent
97c5a1af86
commit
c672404675
4 changed files with 30 additions and 2 deletions
|
@ -44,7 +44,10 @@
|
||||||
"Set the state of a story.")
|
"Set the state of a story.")
|
||||||
|
|
||||||
(define-method story-change-priority (type id dir)
|
(define-method story-change-priority (type id dir)
|
||||||
"Change the priority of a story in direction DIR."))
|
"Change the priority of a story in direction DIR.")
|
||||||
|
|
||||||
|
(define-method set-assignee (type id assignee)
|
||||||
|
"Change the assigned person for a story or task."))
|
||||||
|
|
||||||
(restas:define-module #:scrumli
|
(restas:define-module #:scrumli
|
||||||
(:use #:cl #:restas #:json #:scrumli.datastore #:drakma)
|
(:use #:cl #:restas #:json #:scrumli.datastore #:drakma)
|
||||||
|
|
|
@ -118,3 +118,9 @@
|
||||||
(execute (:update type :set
|
(execute (:update type :set
|
||||||
'priority (max 1 (min next-priority max-priority))
|
'priority (max 1 (min next-priority max-priority))
|
||||||
:where (:= 'id id))))))
|
:where (:= 'id id))))))
|
||||||
|
|
||||||
|
(defmethod datastore-set-assignee
|
||||||
|
((datastore pg-datastore) type id assignee)
|
||||||
|
(with-connection (connection-spec datastore)
|
||||||
|
(execute (:update type :set 'assignee assignee
|
||||||
|
:where (:= 'id id)))))
|
||||||
|
|
|
@ -212,3 +212,12 @@
|
||||||
(if (logged-in-p)
|
(if (logged-in-p)
|
||||||
(encode-json-to-string (get-story id))
|
(encode-json-to-string (get-story id))
|
||||||
403))
|
403))
|
||||||
|
|
||||||
|
(define-route scrumli-story-set-assignee ("story/assignee"
|
||||||
|
:content-type "json"
|
||||||
|
:method :post)
|
||||||
|
(if (logged-in-p)
|
||||||
|
(with-post-parameters ("id" "assignee")
|
||||||
|
(set-assignee 'story id assignee)
|
||||||
|
(encode-json-to-string '((status . "ok"))))
|
||||||
|
403))
|
||||||
|
|
|
@ -144,11 +144,21 @@ var StoryData = React.createClass({
|
||||||
handleTaskMoved: React.autoBind(function(direction) {
|
handleTaskMoved: React.autoBind(function(direction) {
|
||||||
this.loadStoryFromServer();
|
this.loadStoryFromServer();
|
||||||
}),
|
}),
|
||||||
|
handleAssigned: React.autoBind(function(event) {
|
||||||
|
$.post("/story/assignee", {id: this.state.data.id,
|
||||||
|
assignee: event.target.value})
|
||||||
|
.fail(function() {
|
||||||
|
event.target.value = "";
|
||||||
|
}.bind(this));
|
||||||
|
}),
|
||||||
render: function() {
|
render: function() {
|
||||||
if (this.state.data) {
|
if (this.state.data) {
|
||||||
return (<div>
|
return (<div>
|
||||||
<h1>{this.state.data.title}</h1>
|
<h1>{this.state.data.title}</h1>
|
||||||
Assignee: {this.state.data.assignee}
|
Assignee:
|
||||||
|
<input type="text" ref="assignee"
|
||||||
|
value={this.state.data.assignee}
|
||||||
|
onChange={this.handleAssigned} />
|
||||||
<div class="well normalText">
|
<div class="well normalText">
|
||||||
{this.state.data.content}
|
{this.state.data.content}
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue