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():
task = self.client.tasks.find_by_id(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):
task_details = ui.TaskDetails(task, stories)
def update(task, stories, subtasks):
task_details = ui.TaskDetails(task, stories, subtasks)
self.connectDetailsSignals(task_details)
self.replaceBody(task_details)
@@ -301,6 +302,9 @@ class CmdAsana:
'updatetask',
'usertypeahead',
'assigntask',
'complete',
'newtask',
'details',
])
urwid.register_signal(ui.AssigneeTypeAhead, [
@@ -339,6 +343,9 @@ class CmdAsana:
urwid.connect_signal(task_details, 'updatetask', self.updateTask)
urwid.connect_signal(task_details, 'usertypeahead', self.userTypeAhead)
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):
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'])
class TaskDetails(urwid.ListBox):
def __init__(self, task, stories):
def __init__(self, task, stories, subtasks):
self.task = task
self.stories = stories
@@ -287,6 +287,19 @@ class TaskDetails(urwid.ListBox):
projects = [ProjectIcon(project, self.loadProject)
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 + \
[
urwid.Divider('='),
@@ -295,6 +308,8 @@ class TaskDetails(urwid.ListBox):
urwid.Divider('-'),
self.description_edit,
urwid.Divider('-'),
urwid.BoxAdapter(subtask_list, len(all_subtasks)),
urwid.Divider('-'),
] + \
[urwid.Text('[' + story['created_by']['name'] + '] ' + \
story['text']) for story in stories] + \
@@ -302,6 +317,19 @@ class TaskDetails(urwid.ListBox):
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):
key = super(TaskDetails, self).keypress(size, key)