Skip to content

Commit b7a118d

Browse files
committed
Split edit data connector form
1 parent 024ce44 commit b7a118d

File tree

4 files changed

+86
-65
lines changed

4 files changed

+86
-65
lines changed

client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModalBody.tsx

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -153,12 +153,14 @@ function AddOrEditDataConnector({
153153
if (DataConnectorContentByStep)
154154
return (
155155
<>
156-
<div className={cx("d-flex", "justify-content-end")}>
157-
<AddStorageAdvancedToggle
158-
state={cloudStorageState}
159-
setState={setState}
160-
/>
161-
</div>
156+
{!flatDataConnector.dataConnectorId && (
157+
<div className={cx("d-flex", "justify-content-end")}>
158+
<AddStorageAdvancedToggle
159+
state={cloudStorageState}
160+
setState={setState}
161+
/>
162+
</div>
163+
)}
162164
<DataConnectorContentByStep
163165
storageSecrets={storageSecrets}
164166
project={project}
@@ -290,7 +292,7 @@ export function DataConnectorMount() {
290292

291293
return (
292294
<form className="form-rk-green" data-cy="data-connector-edit-mount">
293-
<h5>Mount Properties</h5>
295+
<h5 className="fw-bold">Mount properties</h5>
294296
<p>We need a few more details to mount your data properly.</p>
295297

296298
<div className="mb-3">

client/src/features/dataConnectorsV2/components/DataConnectorModal/DataConnectorModalFooter.tsx

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,6 @@ interface DataConnectorEditFooterProps
394394
function DataConnectorEditFooter({
395395
dataConnector,
396396
isOpen,
397-
toggle,
398397
}: DataConnectorEditFooterProps) {
399398
const dataConnectorId = dataConnector.id;
400399
const dispatch = useAppDispatch();
@@ -410,18 +409,6 @@ function DataConnectorEditFooter({
410409
success,
411410
} = useAppSelector((state) => state.dataConnectorFormSlice);
412411

413-
// Enhanced setters
414-
const setStateSafe = useCallback(
415-
(newState: Partial<AddCloudStorageState>) => {
416-
dispatch(
417-
dataConnectorFormSlice.actions.setCloudStorageState({
418-
cloudStorageState: newState,
419-
})
420-
);
421-
},
422-
[dispatch]
423-
);
424-
425412
// Mutations
426413
const [updateDataConnector, updateResult] =
427414
usePatchDataConnectorsByDataConnectorIdMutation();
@@ -541,12 +528,6 @@ function DataConnectorEditFooter({
541528
<RtkOrNotebooksError error={actionError} />
542529
</div>
543530
)}
544-
<div className={cx("d-flex", "flex-grow-1")}>
545-
<AddStorageBreadcrumbNavbar
546-
state={cloudStorageState}
547-
setState={setStateSafe}
548-
/>
549-
</div>
550531
{!isResultLoading && !success && (
551532
<Button
552533
color="outline-danger"
@@ -560,9 +541,6 @@ function DataConnectorEditFooter({
560541
Reset
561542
</Button>
562543
)}
563-
{!isResultLoading && (
564-
<DataConnectorModalBackButton success={success} toggle={toggle} />
565-
)}
566544
{!success && (
567545
<DataConnectorModalContinueButton
568546
addButtonDisableReason={addButtonDisableReason}

client/src/features/dataConnectorsV2/components/DataConnectorModal/dataConnectorModalButtons.tsx

Lines changed: 76 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ export function DataConnectorModalContinueButton({
172172
continueId="add-data-connector-continue"
173173
step={cloudStorageState.step}
174174
testId="test-data-connector"
175+
editDataConnector={addOrEditStorage}
175176
/>
176177
{disableContinueButton && (
177178
<UncontrolledTooltip
@@ -262,11 +263,13 @@ interface TestConnectionAndContinueButtonsProps
262263
continueId: string;
263264
step: number;
264265
testId: string;
266+
editDataConnector?: () => void;
265267
}
266268
function TestConnectionAndContinueButtons({
267269
continueId,
268270
step,
269271
testId,
272+
editDataConnector,
270273
}: TestConnectionAndContinueButtonsProps) {
271274
const dispatch = useAppDispatch();
272275
const { flatDataConnector, isActionOngoing, validationResultIsCurrent } =
@@ -367,59 +370,96 @@ function TestConnectionAndContinueButtons({
367370

368371
const buttonContinueId = `${continueId}-button`;
369372
const divContinueId = `${continueId}-div`;
370-
const continueContent = validationResult.isSuccess ? (
371-
<>
372-
Continue <ChevronRight className="bi" />
373-
</>
374-
) : validationResult.isError ? (
375-
<>
376-
Skip Test <ChevronRight className="bi" />
377-
</>
373+
const dataConnectorId = flatDataConnector.dataConnectorId;
374+
const continueContent =
375+
dataConnectorId ? null : validationResult.isSuccess ? (
376+
<>
377+
Continue <ChevronRight className="bi" />
378+
</>
379+
) : validationResult.isError ? (
380+
<>
381+
Skip Test <ChevronRight className="bi" />
382+
</>
383+
) : null;
384+
385+
const updateContent = dataConnectorId ? (
386+
validationResult.isSuccess ? (
387+
<>
388+
<PencilSquare className={cx("bi", "me-1")} /> Update connector
389+
</>
390+
) : (
391+
<>
392+
<PencilSquare className={cx("bi", "me-1")} /> Skip Test and Save
393+
</>
394+
)
378395
) : null;
379396
const continueColorClass = validationResult.isSuccess
380397
? "btn-primary"
381398
: validationResult.isError
382399
? "btn-outline-danger"
383400
: "btn-primary";
384-
const continueSection =
385-
!validationResult.isError && !validationResult.isSuccess ? null : (
401+
const continueSection = dataConnectorId ? null : !validationResult.isError &&
402+
!validationResult.isSuccess ? null : (
403+
<div id={divContinueId} className={cx("d-inline-block", "ms-2")}>
404+
<Button
405+
color=""
406+
id={buttonContinueId}
407+
data-cy={buttonContinueId}
408+
className={cx(continueColorClass)}
409+
disabled={validationResult.isLoading}
410+
onClick={() => {
411+
dispatch(
412+
dataConnectorFormSlice.actions.setValidationResult({
413+
validationResult: {
414+
isSuccess: validationResult.isSuccess,
415+
isError: validationResult.isError,
416+
error: validationResult.error,
417+
},
418+
})
419+
);
420+
if (validationResult.isError || validationResult.isSuccess) {
421+
validationResult.reset();
422+
}
423+
dispatch(
424+
dataConnectorFormSlice.actions.setCloudStorageState({
425+
cloudStorageState: {
426+
step: step === 0 ? CLOUD_STORAGE_TOTAL_STEPS : step + 1,
427+
completedSteps:
428+
step === 0 ? CLOUD_STORAGE_TOTAL_STEPS - 1 : step,
429+
},
430+
})
431+
);
432+
}}
433+
>
434+
{continueContent}
435+
</Button>
436+
{validationResult.isError && (
437+
<UncontrolledTooltip placement="top" target={divContinueId}>
438+
The connection is not working as configured. You can make changes and
439+
try again, or skip and continue.
440+
</UncontrolledTooltip>
441+
)}
442+
</div>
443+
);
444+
445+
const saveSection =
446+
!dataConnectorId || !editDataConnector ? null : !validationResult.isError &&
447+
!validationResult.isSuccess ? null : (
386448
<div id={divContinueId} className={cx("d-inline-block", "ms-2")}>
387449
<Button
388450
color=""
389451
id={buttonContinueId}
390452
data-cy={buttonContinueId}
391453
className={cx(continueColorClass)}
392454
disabled={validationResult.isLoading}
393-
onClick={() => {
394-
dispatch(
395-
dataConnectorFormSlice.actions.setValidationResult({
396-
validationResult: {
397-
isSuccess: validationResult.isSuccess,
398-
isError: validationResult.isError,
399-
error: validationResult.error,
400-
},
401-
})
402-
);
403-
if (validationResult.isError || validationResult.isSuccess) {
404-
validationResult.reset();
405-
}
406-
dispatch(
407-
dataConnectorFormSlice.actions.setCloudStorageState({
408-
cloudStorageState: {
409-
step: step === 0 ? CLOUD_STORAGE_TOTAL_STEPS : step + 1,
410-
completedSteps:
411-
step === 0 ? CLOUD_STORAGE_TOTAL_STEPS - 1 : step,
412-
},
413-
})
414-
);
415-
}}
455+
onClick={() => editDataConnector()}
416456
>
417-
{continueContent}
457+
{updateContent}
418458
</Button>
419459
{validationResult.isError && (
420460
<UncontrolledTooltip placement="top" target={divContinueId}>
421461
The connection is not working as configured. You can make changes
422-
and try again, or skip and continue.
462+
and try again, or skip and save.
423463
</UncontrolledTooltip>
424464
)}
425465
</div>
@@ -429,6 +469,7 @@ function TestConnectionAndContinueButtons({
429469
<div className="d-inline-block">
430470
{testConnectionSection}
431471
{continueSection}
472+
{saveSection}
432473
</div>
433474
);
434475
}

client/src/features/project/components/cloudStorage/AddOrEditCloudStorage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1008,7 +1008,7 @@ export function AddStorageOptions({
10081008

10091009
return (
10101010
<form className="form-rk-green" data-cy="cloud-storage-edit-options">
1011-
<h5>Connection information</h5>
1011+
<h5 className="fw-bold">Connection information</h5>
10121012
<p>
10131013
Please fill in all the options required to connect to your storage. Mind
10141014
that the specific fields required depend on your storage configuration.

0 commit comments

Comments
 (0)