Skip to content

Commit 595b879

Browse files
committed
TaskManagerDrawer: empty state and base tasks fetching
Signed-off-by: Scott J Dickerson <[email protected]>
1 parent 9b42808 commit 595b879

File tree

1 file changed

+77
-22
lines changed

1 file changed

+77
-22
lines changed

client/src/app/components/task-manager/TaskManagerDrawer.tsx

+77-22
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { forwardRef, useState } from "react";
1+
import React, { forwardRef, useMemo, useState } from "react";
22
import { Link } from "react-router-dom";
33
import {
44
EmptyState,
@@ -18,8 +18,9 @@ import {
1818
} from "@patternfly/react-core";
1919
import CubesIcon from "@patternfly/react-icons/dist/esm/icons/cubes-icon";
2020

21-
import { Task } from "@app/api/models";
21+
import { TaskState } from "@app/api/models";
2222
import { useTaskManagerContext } from "./TaskManagerContext";
23+
import { useServerTasks } from "@app/queries/tasks";
2324

2425
interface TaskManagerDrawerProps {
2526
ref?: React.ForwardedRef<HTMLElement>;
@@ -76,7 +77,7 @@ export const TaskManagerDrawer: React.FC<TaskManagerDrawerProps> = forwardRef(
7677
);
7778
TaskManagerDrawer.displayName = "TaskManagerDrawer";
7879

79-
const TaskItem: React.FC<{ task: Task }> = ({ task }) => (
80+
const TaskItem: React.FC<{ task: TaskManagerTask }> = ({ task }) => (
8081
<NotificationDrawerListItem key={task.id} variant="info">
8182
<NotificationDrawerListItemHeader
8283
variant="success"
@@ -87,32 +88,86 @@ const TaskItem: React.FC<{ task: Task }> = ({ task }) => (
8788
</NotificationDrawerListItem>
8889
);
8990

91+
interface TaskManagerTask {
92+
id: number;
93+
94+
createUser: string;
95+
updateUser: string;
96+
createTime: string;
97+
started?: string;
98+
terminated?: string;
99+
100+
name: string;
101+
kind: string;
102+
addon: string;
103+
extensions: string[];
104+
state: TaskState;
105+
priority: number;
106+
application: { id: number; name: string };
107+
preemptEnabled: boolean;
108+
}
109+
110+
const PAGE_SIZE = 20;
111+
90112
const useTaskManagerData = () => {
91-
const [pageSize, setPageSize] = useState(20);
113+
const [pageSize, setPageSize] = useState(PAGE_SIZE);
92114
const increasePageSize = () => {
93-
setPageSize(pageSize + 20);
115+
setPageSize(pageSize + PAGE_SIZE);
94116
};
95117

96-
const tasks: Task[] = [
97-
// {
98-
// id: 999,
99-
// application: { id: 1 },
100-
// name: "Task 999",
101-
// addon: "analyzer",
102-
// data: {
103-
// tagger: { enabled: true },
104-
// verbosity: 0,
105-
// mode: { artifact: "", binary: false, withDeps: false },
106-
// scope: {
107-
// withKnownLibs: false,
108-
// packages: { included: [], excluded: [] },
109-
// },
110-
// },
111-
// },
112-
];
118+
const { result, isFetching } = useServerTasks(
119+
{
120+
filters: [{ field: "state", operator: "=", value: "queued" }],
121+
sort: {
122+
field: "id",
123+
direction: "desc",
124+
},
125+
page: {
126+
pageNumber: 1,
127+
itemsPerPage: pageSize,
128+
},
129+
},
130+
5000
131+
);
132+
133+
const tasks: TaskManagerTask[] = useMemo(
134+
() =>
135+
result.data.map((task) => ({
136+
id: task.id,
137+
createUser: task.createUser,
138+
updateUser: task.updateUser,
139+
createTime: task.createTime, // TODO: date?
140+
started: task.started, // TODO: date?
141+
terminated: task.terminated, // TODO: date?
142+
name: task.name,
143+
kind: task.kind,
144+
addon: task.addon,
145+
extensions: task.extensions,
146+
state: task.state,
147+
priority: task.priority,
148+
application: task.application,
149+
preemptEnabled: task?.policy?.preemptEnabled ?? false,
150+
})),
151+
[result.data]
152+
);
153+
154+
// {
155+
// id: 999,
156+
// createUser: "",
157+
// updateUser: "",
158+
// createTime: "2024-06-13T02:30:47.070179657Z",
159+
// name: "Task 999",
160+
// kind: "",
161+
// addon: "analyzer",
162+
// extensions: [],
163+
// state: "Ready",
164+
// priority: 0,
165+
// application: { id: 1, name: "App1" },
166+
// },
113167

114168
return {
115169
tasks,
116170
increasePageSize,
171+
isFetching,
117172
};
118173
};

0 commit comments

Comments
 (0)