From 26fcbae162ebb371568c97fd129f475c263ea6cc Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Date: Fri, 4 Oct 2024 07:26:23 -0400 Subject: [PATCH] Conditionally render pipeline modals --- .../pipelines/content/ArchiveModal.tsx | 4 +-- .../content/PipelineServerActions.tsx | 2 +- .../pipelines/content/RestoreModal.tsx | 4 +-- .../content/ViewPipelineServerModal.tsx | 4 +-- .../ConfigurePipelinesServerModal.tsx | 12 ++----- .../experiment/CreateExperimentButton.tsx | 23 +++++++------ .../experiment/CreateExperimentModal.tsx | 5 ++- .../content/import/ImportPipelineButton.tsx | 25 +++++++------- .../import/ImportPipelineSplitButton.tsx | 23 +++++++------ .../content/import/PipelineImportModal.tsx | 4 +-- .../pipelineRun/PipelineRunDetails.tsx | 8 ++--- .../experiment/ActiveExperimentTable.tsx | 11 +++--- .../experiment/ArchivedExperimentTable.tsx | 11 +++--- .../tables/pipelineRun/PipelineRunTable.tsx | 34 ++++++++++--------- .../pipelineRun/PipelineRunTableRow.tsx | 16 ++++----- .../pipelines/context/PipelinesContext.tsx | 31 ++++++----------- .../experiments/ArchiveExperimentModal.tsx | 3 -- .../experiments/RestoreExperimentModal.tsx | 3 -- .../pipelines/global/runs/ArchiveRunModal.tsx | 4 +-- .../pipelines/global/runs/RestoreRunModal.tsx | 4 +-- 20 files changed, 97 insertions(+), 134 deletions(-) diff --git a/frontend/src/concepts/pipelines/content/ArchiveModal.tsx b/frontend/src/concepts/pipelines/content/ArchiveModal.tsx index 8d0cffba85..bef07e7a6e 100644 --- a/frontend/src/concepts/pipelines/content/ArchiveModal.tsx +++ b/frontend/src/concepts/pipelines/content/ArchiveModal.tsx @@ -10,7 +10,6 @@ interface ArchiveModalProps { onCancel: () => void; onSubmit: () => Promise; children: React.ReactNode; - isOpen: boolean; testId: string; } @@ -21,7 +20,6 @@ export const ArchiveModal: React.FC = ({ title, alertTitle, children, - isOpen, testId, }) => { const { refreshAllAPI } = usePipelinesAPI(); @@ -53,7 +51,7 @@ export const ArchiveModal: React.FC = ({ return ( = ({ variant, setDeleteOpen(false); }} /> - setViewOpen(false)} /> + {viewOpen ? setViewOpen(false)} /> : null} = ({ onSubmit, title, children, - isOpen, testId, alertTitle, }) => { @@ -43,7 +41,7 @@ export const RestoreModal: React.FC = ({ return ( void; pipelineNamespaceCR: DSPipelineKind | null; }; const ViewPipelineServerModal: React.FC = ({ - isOpen, onClose, pipelineNamespaceCR, }) => { @@ -35,7 +33,7 @@ const ViewPipelineServerModal: React.FC = ({ const databaseSecret = dataEntryToRecord(result?.values?.data ?? []); return ( - + {pipelineNamespaceCR && ( {!!pipelineNamespaceCR.spec.objectStorage.externalStorage?.s3CredentialsSecret diff --git a/frontend/src/concepts/pipelines/content/configurePipelinesServer/ConfigurePipelinesServerModal.tsx b/frontend/src/concepts/pipelines/content/configurePipelinesServer/ConfigurePipelinesServerModal.tsx index 4242f596a5..083139642c 100644 --- a/frontend/src/concepts/pipelines/content/configurePipelinesServer/ConfigurePipelinesServerModal.tsx +++ b/frontend/src/concepts/pipelines/content/configurePipelinesServer/ConfigurePipelinesServerModal.tsx @@ -16,7 +16,6 @@ import { configureDSPipelineResourceSpec, objectStorageIsValid } from './utils'; import { PipelineServerConfigType } from './types'; type ConfigurePipelinesServerModalProps = { - open: boolean; onClose: () => void; }; @@ -27,20 +26,13 @@ const FORM_DEFAULTS: PipelineServerConfigType = { export const ConfigurePipelinesServerModal: React.FC = ({ onClose, - open, }) => { const { project, namespace } = usePipelinesAPI(); - const [dataConnections, loaded, , refresh] = useDataConnections(namespace); + const [dataConnections, loaded] = useDataConnections(namespace); const [fetching, setFetching] = React.useState(false); const [error, setError] = React.useState(); const [config, setConfig] = React.useState(FORM_DEFAULTS); - React.useEffect(() => { - if (open) { - refresh(); - } - }, [open, refresh]); - const databaseIsValid = config.database.useDefault ? true : config.database.value.every(({ key, value }) => @@ -101,7 +93,7 @@ export const ConfigurePipelinesServerModal: React.FC = ({ > {children || 'Create experiment'} - { - setOpen(false); - if (experiment) { - if (onCreate) { - onCreate(experiment); + {open ? ( + { + setOpen(false); + if (experiment) { + if (onCreate) { + onCreate(experiment); + } + refreshAllAPI(); } - refreshAllAPI(); - } - }} - /> + }} + /> + ) : null} ); }; diff --git a/frontend/src/concepts/pipelines/content/experiment/CreateExperimentModal.tsx b/frontend/src/concepts/pipelines/content/experiment/CreateExperimentModal.tsx index ab073f5da6..acba31b572 100644 --- a/frontend/src/concepts/pipelines/content/experiment/CreateExperimentModal.tsx +++ b/frontend/src/concepts/pipelines/content/experiment/CreateExperimentModal.tsx @@ -20,11 +20,10 @@ import { import { CharLimitHelperText } from '~/components/CharLimitHelperText'; type CreateExperimentModalProps = { - isOpen: boolean; onClose: (experiment?: ExperimentKFv2) => void; }; -const CreateExperimentModal: React.FC = ({ isOpen, onClose }) => { +const CreateExperimentModal: React.FC = ({ onClose }) => { const { project, api, apiAvailable } = usePipelinesAPI(); const [submitting, setSubmitting] = React.useState(false); const [error, setError] = React.useState(); @@ -41,7 +40,7 @@ const CreateExperimentModal: React.FC = ({ isOpen, o return ( onBeforeClose()} actions={[ diff --git a/frontend/src/concepts/pipelines/content/import/ImportPipelineButton.tsx b/frontend/src/concepts/pipelines/content/import/ImportPipelineButton.tsx index b1136975f3..8182cfd024 100644 --- a/frontend/src/concepts/pipelines/content/import/ImportPipelineButton.tsx +++ b/frontend/src/concepts/pipelines/content/import/ImportPipelineButton.tsx @@ -28,19 +28,20 @@ const ImportPipelineButton: React.FC = ({ > {children || 'Import pipeline'} - { - setOpen(false); - if (pipeline) { - if (onCreate) { - onCreate(pipeline); + {open ? ( + { + setOpen(false); + if (pipeline) { + if (onCreate) { + onCreate(pipeline); + } + refreshAllAPI(); } - refreshAllAPI(); - } - }} - /> + }} + /> + ) : null} ); }; diff --git a/frontend/src/concepts/pipelines/content/import/ImportPipelineSplitButton.tsx b/frontend/src/concepts/pipelines/content/import/ImportPipelineSplitButton.tsx index 2a57b3c1ce..20f3764a09 100644 --- a/frontend/src/concepts/pipelines/content/import/ImportPipelineSplitButton.tsx +++ b/frontend/src/concepts/pipelines/content/import/ImportPipelineSplitButton.tsx @@ -82,18 +82,19 @@ const ImportPipelineSplitButton: React.FC = ({ - { - setPipelineModalOpen(false); - if (pipeline) { - if (onImportPipeline) { - onImportPipeline(pipeline); + {isPipelineModalOpen ? ( + { + setPipelineModalOpen(false); + if (pipeline) { + if (onImportPipeline) { + onImportPipeline(pipeline); + } + refreshAllAPI(); } - refreshAllAPI(); - } - }} - /> + }} + /> + ) : null} {isPipelineVersionModalOpen && ( { diff --git a/frontend/src/concepts/pipelines/content/import/PipelineImportModal.tsx b/frontend/src/concepts/pipelines/content/import/PipelineImportModal.tsx index dbcc61d840..0e19c7c0bb 100644 --- a/frontend/src/concepts/pipelines/content/import/PipelineImportModal.tsx +++ b/frontend/src/concepts/pipelines/content/import/PipelineImportModal.tsx @@ -29,13 +29,11 @@ import PipelineUploadRadio from './PipelineUploadRadio'; import { PipelineUploadOption, extractKindFromPipelineYAML } from './utils'; type PipelineImportModalProps = { - isOpen: boolean; onClose: (pipeline?: PipelineKFv2) => void; redirectAfterImport?: boolean; }; const PipelineImportModal: React.FC = ({ - isOpen, redirectAfterImport = true, onClose, }) => { @@ -152,7 +150,7 @@ const PipelineImportModal: React.FC = ({ return ( onBeforeClose()} actions={[