From df68305f288a1bd2dfd0a1d7de27962f736ef2c4 Mon Sep 17 00:00:00 2001 From: Matt Aitken Date: Sun, 23 Jul 2023 15:41:13 +0100 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20get=20subtasks=20by=20default?= =?UTF-8?q?=20when=20using=20GET=20on=20API=20tasks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/webapp/app/routes/api.v1.runs.$runId.tasks.ts | 5 ++++- apps/webapp/app/utils/taskListToTree.ts | 9 +++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/webapp/app/routes/api.v1.runs.$runId.tasks.ts b/apps/webapp/app/routes/api.v1.runs.$runId.tasks.ts index 3793d8298..505d47efe 100644 --- a/apps/webapp/app/routes/api.v1.runs.$runId.tasks.ts +++ b/apps/webapp/app/routes/api.v1.runs.$runId.tasks.ts @@ -26,6 +26,7 @@ const HeadersSchema = z.object({ const SearchQuerySchema = z.object({ cursor: z.string().optional(), take: z.coerce.number().default(50), + subtasks: z.coerce.boolean().default(false), }); export async function loader({ request, params }: LoaderArgs) { @@ -87,7 +88,9 @@ export async function loader({ request, params }: LoaderArgs) { return json({ message: "Run not found" }, { status: 404 }); } - const tasks = taskListToTree(jobRun.tasks.slice(0, query.take)); + const selectedTasks = jobRun.tasks.slice(0, query.take); + + const tasks = taskListToTree(selectedTasks, query.subtasks); const nextTask = jobRun.tasks[query.take]; return json({ diff --git a/apps/webapp/app/utils/taskListToTree.ts b/apps/webapp/app/utils/taskListToTree.ts index e3d8a00c8..6b28fd86b 100644 --- a/apps/webapp/app/utils/taskListToTree.ts +++ b/apps/webapp/app/utils/taskListToTree.ts @@ -1,9 +1,14 @@ type InputType = { id: string; parentId: string | null }; -type OutputType = T & { subtasks?: T[] }; +export type OutputType = T & { subtasks?: T[] }; export function taskListToTree( - tasks: T[] + tasks: T[], + addSubtasks = true ): OutputType[] { + if (!addSubtasks) { + return tasks; + } + const result: OutputType[] = []; const map = new Map(tasks.map((v) => [v.id, v]));