Show subtasks in details view

This commit is contained in:
2015-08-06 23:16:42 -07:00
parent 6664d299b9
commit 0fff014307
2 changed files with 39 additions and 4 deletions

View File

@@ -270,10 +270,11 @@ class CmdAsana:
def runInThread(): def runInThread():
task = self.client.tasks.find_by_id(task_id) task = self.client.tasks.find_by_id(task_id)
stories = self.client.stories.find_by_task(task_id) stories = self.client.stories.find_by_task(task_id)
update(task, stories) subtasks = self.client.tasks.subtasks(task_id)
update(task, stories, subtasks)
def update(task, stories): def update(task, stories, subtasks):
task_details = ui.TaskDetails(task, stories) task_details = ui.TaskDetails(task, stories, subtasks)
self.connectDetailsSignals(task_details) self.connectDetailsSignals(task_details)
self.replaceBody(task_details) self.replaceBody(task_details)
@@ -301,6 +302,9 @@ class CmdAsana:
'updatetask', 'updatetask',
'usertypeahead', 'usertypeahead',
'assigntask', 'assigntask',
'complete',
'newtask',
'details',
]) ])
urwid.register_signal(ui.AssigneeTypeAhead, [ urwid.register_signal(ui.AssigneeTypeAhead, [
@@ -339,6 +343,9 @@ class CmdAsana:
urwid.connect_signal(task_details, 'updatetask', self.updateTask) urwid.connect_signal(task_details, 'updatetask', self.updateTask)
urwid.connect_signal(task_details, 'usertypeahead', self.userTypeAhead) urwid.connect_signal(task_details, 'usertypeahead', self.userTypeAhead)
urwid.connect_signal(task_details, 'assigntask', self.assignTask) urwid.connect_signal(task_details, 'assigntask', self.assignTask)
urwid.connect_signal(task_details, 'complete', self.completeTask)
urwid.connect_signal(task_details, 'newtask', self.newTask)
urwid.connect_signal(task_details, 'details', self.showDetails)
def handleInput(self, key): def handleInput(self, key):
if key in ('q', 'Q'): if key in ('q', 'Q'):

30
ui.py
View File

@@ -265,7 +265,7 @@ class AssigneeTypeAhead(urwid.Pile):
self.edit.set_edit_text(user['name']) self.edit.set_edit_text(user['name'])
class TaskDetails(urwid.ListBox): class TaskDetails(urwid.ListBox):
def __init__(self, task, stories): def __init__(self, task, stories, subtasks):
self.task = task self.task = task
self.stories = stories self.stories = stories
@@ -287,6 +287,19 @@ class TaskDetails(urwid.ListBox):
projects = [ProjectIcon(project, self.loadProject) projects = [ProjectIcon(project, self.loadProject)
for project in task['projects']] for project in task['projects']]
if task['parent'] != None:
parent = TaskEdit(task['parent'])
urwid.connect_signal(parent, 'updatetask', self.updateSubtask)
urwid.connect_signal(parent, 'details', self.showDetails)
projects.append(parent)
all_subtasks = [t for t in subtasks]
subtask_list = TaskList(all_subtasks)
urwid.connect_signal(subtask_list, 'complete', self.completeTask)
urwid.connect_signal(subtask_list, 'newtask', self.newTask)
urwid.connect_signal(subtask_list, 'updatetask', self.updateSubtask)
urwid.connect_signal(subtask_list, 'details', self.showDetails)
body = projects + \ body = projects + \
[ [
urwid.Divider('='), urwid.Divider('='),
@@ -295,6 +308,8 @@ class TaskDetails(urwid.ListBox):
urwid.Divider('-'), urwid.Divider('-'),
self.description_edit, self.description_edit,
urwid.Divider('-'), urwid.Divider('-'),
urwid.BoxAdapter(subtask_list, len(all_subtasks)),
urwid.Divider('-'),
] + \ ] + \
[urwid.Text('[' + story['created_by']['name'] + '] ' + \ [urwid.Text('[' + story['created_by']['name'] + '] ' + \
story['text']) for story in stories] + \ story['text']) for story in stories] + \
@@ -302,6 +317,19 @@ class TaskDetails(urwid.ListBox):
super(TaskDetails, self).__init__(body) super(TaskDetails, self).__init__(body)
def completeTask(self, task_id):
urwid.emit_signal(self, 'complete', task_id)
del self.body[self.focus_position]
def newTask(self, task_after_id=None):
urwid.emit_signal(self, 'newtask', task_after_id)
def updateSubtask(self, task_id, name):
urwid.emit_signal(self, 'updatetask', task_id, name)
def showDetails(self, task_id):
urwid.emit_signal(self, 'details', task_id)
def keypress(self, size, key): def keypress(self, size, key):
key = super(TaskDetails, self).keypress(size, key) key = super(TaskDetails, self).keypress(size, key)