1
- import React , { forwardRef , useState } from "react" ;
1
+ import React , { forwardRef , useMemo , useState } from "react" ;
2
2
import { Link } from "react-router-dom" ;
3
3
import {
4
4
EmptyState ,
@@ -18,8 +18,9 @@ import {
18
18
} from "@patternfly/react-core" ;
19
19
import CubesIcon from "@patternfly/react-icons/dist/esm/icons/cubes-icon" ;
20
20
21
- import { Task } from "@app/api/models" ;
21
+ import { TaskState } from "@app/api/models" ;
22
22
import { useTaskManagerContext } from "./TaskManagerContext" ;
23
+ import { useServerTasks } from "@app/queries/tasks" ;
23
24
24
25
interface TaskManagerDrawerProps {
25
26
ref ?: React . ForwardedRef < HTMLElement > ;
@@ -76,7 +77,7 @@ export const TaskManagerDrawer: React.FC<TaskManagerDrawerProps> = forwardRef(
76
77
) ;
77
78
TaskManagerDrawer . displayName = "TaskManagerDrawer" ;
78
79
79
- const TaskItem : React . FC < { task : Task } > = ( { task } ) => (
80
+ const TaskItem : React . FC < { task : TaskManagerTask } > = ( { task } ) => (
80
81
< NotificationDrawerListItem key = { task . id } variant = "info" >
81
82
< NotificationDrawerListItemHeader
82
83
variant = "success"
@@ -87,32 +88,86 @@ const TaskItem: React.FC<{ task: Task }> = ({ task }) => (
87
88
</ NotificationDrawerListItem >
88
89
) ;
89
90
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
+
90
112
const useTaskManagerData = ( ) => {
91
- const [ pageSize , setPageSize ] = useState ( 20 ) ;
113
+ const [ pageSize , setPageSize ] = useState ( PAGE_SIZE ) ;
92
114
const increasePageSize = ( ) => {
93
- setPageSize ( pageSize + 20 ) ;
115
+ setPageSize ( pageSize + PAGE_SIZE ) ;
94
116
} ;
95
117
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
+ // },
113
167
114
168
return {
115
169
tasks,
116
170
increasePageSize,
171
+ isFetching,
117
172
} ;
118
173
} ;
0 commit comments