diff --git a/src/renderer/components/Settings/TransformerLabSettings.tsx b/src/renderer/components/Settings/TransformerLabSettings.tsx index a00f2837aae344e6e01d007a0bc06e1bceb11838..dbbb132a8c5abfc2fb29c5c4b069d877ca8db244 100644 --- a/src/renderer/components/Settings/TransformerLabSettings.tsx +++ b/src/renderer/components/Settings/TransformerLabSettings.tsx @@ -27,6 +27,7 @@ import { EyeIcon, EyeOffIcon, RotateCcwIcon } from 'lucide-react'; // Import the AIProvidersSettings component. import AIProvidersSettings from './AIProvidersSettings'; +import ViewJobsTab from './ViewJobsTab'; const fetcher = (url) => fetch(url).then((res) => res.json()); @@ -208,53 +209,7 @@ export default function TransformerLabSettings() { </Button> </TabPanel> <TabPanel value={1}> - <Typography level="title-lg" marginBottom={2}> - View Jobs (debug):{' '} - <IconButton onClick={() => jobsMutate()}> - <RotateCcwIcon size="14px" /> - </IconButton> - </Typography> - <Select - sx={{ width: '400px' }} - value={showJobsOfType} - onChange={(e, newValue) => { - setShowJobsOfType(newValue); - }} - > - <Option value="NONE">None</Option> - <Option value="">All</Option> - <Option value="DOWNLOAD_MODEL">Download Model</Option> - <Option value="LOAD_MODEL">Load Model</Option> - <Option value="TRAIN">Train</Option> - <Option value="GENERATE">Generate</Option> - <Option value="EVAL">Evaluate</Option> - </Select> - {showJobsOfType !== 'NONE' && ( - <Table sx={{ tableLayout: 'auto', overflow: 'scroll' }}> - <thead> - <tr> - <td>Job ID</td> - <td>Job Type</td> - <td>Job Status</td> - <td>Job Progress</td> - <td>Job Data</td> - </tr> - </thead> - <tbody> - {jobs?.map((job) => ( - <tr key={job.id}> - <td>{job.id}</td> - <td>{job.type}</td> - <td>{job.status}</td> - <td>{job.progress}</td> - <td> - <pre>{JSON.stringify(job.job_data, null, 2)}</pre> - </td> - </tr> - ))} - </tbody> - </Table> - )} + <ViewJobsTab /> </TabPanel> </Tabs> </Sheet> diff --git a/src/renderer/components/Settings/ViewJobsTab.tsx b/src/renderer/components/Settings/ViewJobsTab.tsx new file mode 100644 index 0000000000000000000000000000000000000000..aad08ea1088d0cff97f505bcc5f26ffeb73ea338 --- /dev/null +++ b/src/renderer/components/Settings/ViewJobsTab.tsx @@ -0,0 +1,70 @@ +import * as React from 'react'; +import { Typography, IconButton, Select, Option, Table } from '@mui/joy'; +import { RotateCcwIcon } from 'lucide-react'; +import useSWR from 'swr'; +import * as chatAPI from 'renderer/lib/transformerlab-api-sdk'; + +const fetcher = (url) => fetch(url).then((res) => res.json()); + +export default function ViewJobsTab() { + const [showJobsOfType, setShowJobsOfType] = React.useState('NONE'); + + const { + data: jobs, + error: jobsError, + isLoading: jobsIsLoading, + mutate: jobsMutate, + } = useSWR(chatAPI.Endpoints.Jobs.GetJobsOfType(showJobsOfType, ''), fetcher); + + return ( + <> + <Typography level="title-lg" marginBottom={2}> + View Jobs (debug):{' '} + <IconButton onClick={() => jobsMutate()}> + <RotateCcwIcon size="14px" /> + </IconButton> + </Typography> + <Select + sx={{ width: '400px' }} + value={showJobsOfType} + onChange={(e, newValue) => { + setShowJobsOfType(newValue); + }} + > + <Option value="NONE">None</Option> + <Option value="">All</Option> + <Option value="DOWNLOAD_MODEL">Download Model</Option> + <Option value="LOAD_MODEL">Load Model</Option> + <Option value="TRAIN">Train</Option> + <Option value="GENERATE">Generate</Option> + <Option value="EVAL">Evaluate</Option> + </Select> + {showJobsOfType !== 'NONE' && ( + <Table sx={{ tableLayout: 'auto', overflow: 'scroll' }}> + <thead> + <tr> + <td>Job ID</td> + <td>Job Type</td> + <td>Job Status</td> + <td>Job Progress</td> + <td>Job Data</td> + </tr> + </thead> + <tbody> + {jobs?.map((job) => ( + <tr key={job.id}> + <td>{job.id}</td> + <td>{job.type}</td> + <td>{job.status}</td> + <td>{job.progress}</td> + <td> + <pre>{JSON.stringify(job.job_data, null, 2)}</pre> + </td> + </tr> + ))} + </tbody> + </Table> + )} + </> + ); +}