Skip to content

Commit 7041deb

Browse files
committed
Move state inside modal
1 parent 24abea3 commit 7041deb

File tree

2 files changed

+42
-58
lines changed

2 files changed

+42
-58
lines changed

src/pages/workflows/WorkflowList.tsx

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,8 @@ export const WorkflowList = (props: WorkflowListProps) => {
9292
// function signatures from the Sortable component used in this
9393
// component and from Lodash/fp's orderBy function)
9494
const [sort, setSort] = useState<SortProperties>({ field: 'name', direction: 'asc' });
95+
9596
const [createWorkflowModalOpen, setCreateWorkflowModalOpen] = useState<boolean>(false);
96-
const [workflowNamespace, setWorkflowNamespace] = useState<string>('');
97-
const [workflowName, setWorkflowName] = useState<string>('');
98-
const [workflowSynopsis, setWorkflowSynopsis] = useState<string>('');
99-
const [workflowDocumentation, setWorkflowDocumentation] = useState<string>('');
100-
const [snapshotComment, setSnapshotComment] = useState<string>('');
101-
const [workflowWdl, setWorkflowWdl] = useState<string>('');
10297

10398
const [pageNumber, setPageNumber] = useState(1);
10499
const [itemsPerPage, setItemsPerPage] = useState(25);
@@ -171,7 +166,14 @@ export const WorkflowList = (props: WorkflowListProps) => {
171166
loadWorkflows();
172167
});
173168

174-
const uploadWorkflow = async (): Promise<void> => {
169+
const uploadWorkflow = async (
170+
workflowNamespace: string,
171+
workflowName: string,
172+
workflowWdl: string,
173+
workflowDocumentation: string,
174+
workflowSynopsis: string,
175+
snapshotComment: string
176+
): Promise<void> => {
175177
const workflowPayload = {
176178
namespace: workflowNamespace,
177179
name: workflowName,
@@ -289,20 +291,8 @@ export const WorkflowList = (props: WorkflowListProps) => {
289291
<WorkflowModal
290292
setCreateWorkflowModalOpen={setCreateWorkflowModalOpen}
291293
title='Create New Method'
292-
namespace={workflowNamespace}
293-
name={workflowName}
294294
buttonActionName='Upload'
295295
buttonAction={uploadWorkflow}
296-
synopsis={workflowSynopsis}
297-
documentation={workflowDocumentation}
298-
setWorkflowNamespace={setWorkflowNamespace}
299-
setWorkflowName={setWorkflowName}
300-
setWorkflowSynopsis={setWorkflowSynopsis}
301-
setWorkflowDocumentation={setWorkflowDocumentation}
302-
snapshotComment={snapshotComment}
303-
setSnapshotComment={setSnapshotComment}
304-
wdl={workflowWdl}
305-
setWdl={setWorkflowWdl}
306296
/>
307297
)}
308298
</main>

src/pages/workflows/workflow/common/WorkflowModal.tsx

Lines changed: 33 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,21 @@ import validate from 'validate.js';
1515
interface WorkflowModalProps {
1616
setCreateWorkflowModalOpen: (x: boolean) => void;
1717
title: string;
18-
namespace: string;
19-
name: string;
20-
synopsis: string;
21-
documentation: string;
22-
snapshotComment: string;
18+
defaultNamespace?: string;
19+
defaultName?: string;
20+
defaultSynopsis?: string;
21+
defaultDocumentation?: string;
22+
defaultSnapshotComment?: string;
2323
buttonActionName: string; // name of the primary button i.e. 'save' or 'upload'
24-
wdl: string;
25-
buttonAction: () => Promise<void>;
26-
setWorkflowNamespace: (value: string) => void;
27-
setWorkflowName: (value: string) => void;
28-
setWorkflowSynopsis: (value: string) => void;
29-
setWorkflowDocumentation: (value: string) => void;
30-
setSnapshotComment: (value: string) => void;
31-
setWdl: (value: string) => void;
24+
defaultWdl?: string;
25+
buttonAction: (
26+
workflowNamespace: string,
27+
workflowName: string,
28+
workflowWdl: string,
29+
workflowDocumentation: string,
30+
workflowSynopsis: string,
31+
snapshotComment: string
32+
) => Promise<void>;
3233
}
3334

3435
interface NamespaceNameSectionProps {
@@ -243,22 +244,23 @@ export const WorkflowModal = (props: WorkflowModalProps) => {
243244
const {
244245
setCreateWorkflowModalOpen,
245246
title,
246-
namespace,
247-
name,
247+
defaultNamespace,
248+
defaultName,
248249
buttonActionName,
249-
synopsis,
250-
documentation,
250+
defaultSynopsis,
251+
defaultDocumentation,
251252
buttonAction,
252-
setWorkflowNamespace,
253-
setWorkflowName,
254-
setWorkflowSynopsis,
255-
setWorkflowDocumentation,
256-
snapshotComment,
257-
setSnapshotComment,
258-
wdl,
259-
setWdl,
253+
defaultSnapshotComment,
254+
defaultWdl,
260255
} = props;
261256

257+
const [namespace, setNamespace] = useState<string>(defaultNamespace || '');
258+
const [name, setName] = useState<string>(defaultName || '');
259+
const [wdl, setWdl] = useState<string>(defaultWdl || '');
260+
const [documentation, setDocumentation] = useState<string>(defaultDocumentation || '');
261+
const [synopsis, setSynopsis] = useState<string>(defaultSynopsis || '');
262+
const [snapshotComment, setSnapshotComment] = useState<string>(defaultSnapshotComment || '');
263+
262264
const [busy, setBusy] = useState<boolean>(false);
263265
const [submissionError, setSubmissionError] = useState<any>(null);
264266

@@ -269,7 +271,7 @@ export const WorkflowModal = (props: WorkflowModalProps) => {
269271

270272
const onSubmitWorkflow = withBusyState(setBusy, async () => {
271273
try {
272-
await buttonAction();
274+
await buttonAction(namespace, name, wdl, documentation, synopsis, snapshotComment);
273275
} catch (error) {
274276
setSubmissionError(error instanceof Response ? await error.text() : error);
275277
}
@@ -288,15 +290,7 @@ export const WorkflowModal = (props: WorkflowModalProps) => {
288290

289291
return (
290292
<Modal
291-
onDismiss={() => {
292-
setCreateWorkflowModalOpen(false);
293-
setWorkflowNamespace('');
294-
setWorkflowName('');
295-
setWdl('');
296-
setWorkflowDocumentation('');
297-
setWorkflowSynopsis('');
298-
setSnapshotComment('');
299-
}}
293+
onDismiss={() => setCreateWorkflowModalOpen(false)}
300294
title={title}
301295
width='75rem'
302296
okButton={submitWorkflowButton}
@@ -306,18 +300,18 @@ export const WorkflowModal = (props: WorkflowModalProps) => {
306300
<NamespaceNameSection
307301
namespace={namespace}
308302
name={name}
309-
setWorkflowNamespace={setWorkflowNamespace}
310-
setWorkflowName={setWorkflowName}
303+
setWorkflowNamespace={setNamespace}
304+
setWorkflowName={setName}
311305
errors={validationErrors}
312306
/>
313307
</div>
314308
<div style={{ paddingTop: '1.5rem' }}>
315309
<WdlBoxSection wdlPayload={wdl} setWdlPayload={setWdl} />
316310
</div>
317-
<DocumentationSection documentation={documentation} setWorkflowDocumentation={setWorkflowDocumentation} />
311+
<DocumentationSection documentation={documentation} setWorkflowDocumentation={setDocumentation} />
318312
<SynopsisSnapshotSection
319313
synopsis={synopsis}
320-
setWorkflowSynopsis={setWorkflowSynopsis}
314+
setWorkflowSynopsis={setSynopsis}
321315
errors={validationErrors}
322316
snapshotComment={snapshotComment}
323317
setSnapshotComment={setSnapshotComment}

0 commit comments

Comments
 (0)