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]));