Show assigned gravatar in story and task lists
This commit is contained in:
parent
c672404675
commit
4b9563abd4
2 changed files with 33 additions and 3 deletions
|
@ -57,16 +57,19 @@
|
|||
|
||||
(defmethod datastore-get-all-stories ((datastore pg-datastore))
|
||||
(with-connection (connection-spec datastore)
|
||||
(query (:order-by (:select :* :from 'story) 'priority) :alists)))
|
||||
(query (:order-by (:select :* (:as (:md5 'assignee) 'md5)
|
||||
:from 'story) 'priority) :alists)))
|
||||
|
||||
(defmethod datastore-get-story ((datastore pg-datastore) id)
|
||||
(with-connection (connection-spec datastore)
|
||||
(append (query (:select :* :from 'story :where (:= 'id id)) :alist)
|
||||
(append (query (:select :* (:as (:md5 'assignee) 'md5) :from 'story
|
||||
:where (:= 'id id)) :alist)
|
||||
`((tasks . ,(datastore-get-tasks-for-story datastore id))))))
|
||||
|
||||
(defmethod datastore-get-tasks-for-story ((datastore pg-datastore) id)
|
||||
(with-connection (connection-spec datastore)
|
||||
(query (:order-by (:select :* :from 'task :where (:= 'story-id id))
|
||||
(query (:order-by (:select :* (:as (:md5 'assignee) 'md5) :from 'task
|
||||
:where (:= 'story-id id))
|
||||
'priority)
|
||||
:alists)))
|
||||
|
||||
|
|
|
@ -24,6 +24,25 @@ var StateIcon = React.createClass({
|
|||
}
|
||||
});
|
||||
|
||||
var AssigneeIcon = React.createClass({
|
||||
render: function() {
|
||||
var icon;
|
||||
|
||||
if (this.props.assignee)
|
||||
icon = <img src={"https://secure.gravatar.com/avatar/" +
|
||||
this.props.md5 + '?s=24'}
|
||||
title={this.props.assignee}
|
||||
alt={this.props.assignee} />;
|
||||
else
|
||||
icon = (<span title="Unknown" class="icon-stack">
|
||||
<i class="icon-sign-blank icon-stack-base"></i>
|
||||
<i class="icon-question icon-light"></i>
|
||||
</span>);
|
||||
|
||||
return icon;
|
||||
}
|
||||
});
|
||||
|
||||
var StoryTaskRow = React.createClass({
|
||||
changeState: React.autoBind(function(event) {
|
||||
$.post("/tasks/state", {'id': this.props.task.id})
|
||||
|
@ -58,6 +77,10 @@ var StoryTaskRow = React.createClass({
|
|||
<i class="icon-arrow-down clickable"
|
||||
onClick={this.moveDown}></i>
|
||||
</td>
|
||||
<td class="span1">
|
||||
<AssigneeIcon assignee={this.props.task.assignee}
|
||||
md5={this.props.task.md5} />
|
||||
</td>
|
||||
<td class="span2">
|
||||
<span onClick={this.changeState} class="clickable">
|
||||
<StateIcon state={this.state.state} /> {" "}
|
||||
|
@ -182,6 +205,10 @@ var StoryRow = React.createClass({
|
|||
<i class="icon-arrow-down clickable"
|
||||
onClick={this.moveDown}></i>
|
||||
</td>
|
||||
<td class="span1">
|
||||
<AssigneeIcon assignee={this.props.story.assignee}
|
||||
md5={this.props.story.md5} />
|
||||
</td>
|
||||
<td class="span2">
|
||||
<span onClick={this.changeState} class="clickable">
|
||||
<StateIcon state={this.state.state} /> {" "}
|
||||
|
|
Loading…
Reference in a new issue