fix: correct task sort order per status

DONE: finished_time ASC, PENDING: start_time ASC, TODO: order ASC
This commit is contained in:
Yuyao Huang 2026-05-09 16:13:05 +08:00
parent 01ae9c964a
commit 43ca6b8462

View File

@ -202,19 +202,25 @@ def get_tasks_sorted(goal_id):
try: try:
cur = conn.execute( cur = conn.execute(
"""SELECT * FROM tasks WHERE goal_id = ? AND status = 'done' """SELECT * FROM tasks WHERE goal_id = ? AND status = 'done'
ORDER BY finished_time DESC""", ORDER BY finished_time ASC""",
(goal_id,) (goal_id,)
) )
finished = [row_to_dict(r) for r in cur.fetchall()] finished = [row_to_dict(r) for r in cur.fetchall()]
cur = conn.execute( cur = conn.execute(
"""SELECT * FROM tasks WHERE goal_id = ? AND status != 'done' """SELECT * FROM tasks WHERE goal_id = ? AND status != 'done'
ORDER BY CASE status ORDER BY
WHEN 'doing' THEN 1 CASE status
WHEN 'pending' THEN 2 WHEN 'doing' THEN 0
WHEN 'todo' THEN 3 WHEN 'pending' THEN 1
ELSE 4 WHEN 'todo' THEN 2
END, "order" ASC""", END ASC,
CASE status
WHEN 'pending' THEN start_time
END ASC,
CASE status
WHEN 'todo' THEN "order"
END ASC""",
(goal_id,) (goal_id,)
) )
unfinished = [row_to_dict(r) for r in cur.fetchall()] unfinished = [row_to_dict(r) for r in cur.fetchall()]