From bbe7af3397a158d9aa1bb66a038000ff5f16e5da Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Tue, 12 Nov 2024 09:41:19 -0330 Subject: [PATCH] Add component for form header --- .../CronJobs/CronJobRunsDataGrid.tsx | 43 ++++++++------ .../CronJobs/CronJobsDataGrid.tsx | 4 +- .../CronJobs/CronJobsFormHeader.tsx | 58 +++++++++++++++++++ 3 files changed, 86 insertions(+), 19 deletions(-) create mode 100644 apps/studio/components/interfaces/Integrations/CronJobs/CronJobsFormHeader.tsx diff --git a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobRunsDataGrid.tsx b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobRunsDataGrid.tsx index 34a3678d4d8..61d5114a474 100644 --- a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobRunsDataGrid.tsx +++ b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobRunsDataGrid.tsx @@ -1,5 +1,5 @@ import { ChevronRight, Eye, Timer } from 'lucide-react' -import { useRef } from 'react' +import { useRef, useState } from 'react' import DataGrid, { Column, DataGridHandle, Row } from 'react-data-grid' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' @@ -16,10 +16,13 @@ import { HoverCard_Shadcn_, HoverCardTrigger_Shadcn_, HoverCardContent_Shadcn_, + Separator, } from 'ui' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import { calculateDuration } from './CronJobs.utils' import { formatDate } from './CronJobs.utils' +import { DocsButton } from 'components/ui/DocsButton' +import { CronJobsFormHeader } from './CronJobsFormHeader' type CronJobRun = { jobid: number @@ -42,6 +45,9 @@ interface CronJobsDataGridProps { const CronJobRunsDataGrid = ({ jobId, jobState, updateJobState }: CronJobsDataGridProps) => { const { project } = useProjectContext() + const router = useRouter() + + const gridRef = useRef(null) const { data: cronJobs, isLoading } = useCronJobRunsQuery({ projectRef: project?.ref, @@ -49,8 +55,9 @@ const CronJobRunsDataGrid = ({ jobId, jobState, updateJobState }: CronJobsDataGr jobId, }) - const gridRef = useRef(null) - const router = useRouter() + const [createCronJobSheetShown, setCreateCronJobSheetShown] = useState< + Pick | undefined + >() const cronJobColumns = [ { @@ -153,9 +160,9 @@ const CronJobRunsDataGrid = ({ jobId, jobState, updateJobState }: CronJobsDataGr autoSaveId="cron-jobs-layout" >
- + {/* turn this into some kind of proper tabs? */} -
+
{jobState.selectedJob && ( @@ -168,15 +175,21 @@ const CronJobRunsDataGrid = ({ jobId, jobState, updateJobState }: CronJobsDataGr )}
-
-
- Command - - + +
+
+ + {jobState.selectedJob?.schedule} + +
+
+ - + - {jobState.selectedJob?.command} + + {jobState.selectedJob?.command} + @@ -186,12 +199,6 @@ const CronJobRunsDataGrid = ({ jobId, jobState, updateJobState }: CronJobsDataGr
-
- Schedule - - {jobState.selectedJob?.schedule} - -
diff --git a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsDataGrid.tsx b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsDataGrid.tsx index d9f7fbc5fdd..26cb3037bfe 100644 --- a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsDataGrid.tsx +++ b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsDataGrid.tsx @@ -23,6 +23,8 @@ import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import { CreateCronJobSheet } from './CreateCronJobSheet' import DeleteCronJob from './DeleteCronJob' import { Jobs } from 'openai/resources/fine-tuning/jobs' +import { DocsButton } from 'components/ui/DocsButton' +import { CronJobsFormHeader } from './CronJobsFormHeader' interface CronJobsDataGridProps { jobState: { jobId: string; selectedJob: CronJob | null } @@ -171,7 +173,7 @@ const CronJobsDataGrid = ({ jobState, updateJobState }: CronJobsDataGridProps) = autoSaveId="cron-jobs-layout" >
- + {/* turn this into tabs */}
Jobs diff --git a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsFormHeader.tsx b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsFormHeader.tsx new file mode 100644 index 00000000000..02f1c508975 --- /dev/null +++ b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsFormHeader.tsx @@ -0,0 +1,58 @@ +import { Button, Sheet, SheetContent } from 'ui' +import { DocsButton } from 'components/ui/DocsButton' +import { useState } from 'react' +import { CronJob } from 'data/database-cron-jobs/database-cron-jobs-query' +import { FormHeader } from 'components/ui/Forms/FormHeader' +import { CreateCronJobSheet } from './CreateCronJobSheet' + +export const CronJobsFormHeader = () => { + const [createCronJobSheetShown, setCreateCronJobSheetShown] = useState< + Pick | undefined + >() + + const [isClosingCreateCronJobSheet, setIsClosingCreateCronJobSheet] = useState(false) + + return ( + <> + + + + + } + /> + setIsClosingCreateCronJobSheet(true)} + > + + { + setIsClosingCreateCronJobSheet(false) + setCreateCronJobSheetShown(undefined) + }} + isClosing={isClosingCreateCronJobSheet} + setIsClosing={setIsClosingCreateCronJobSheet} + /> + + + + ) +}