1
- import { useRef , useState } from "react" ;
1
+ import { useEffect , useRef , useState } from "react" ;
2
2
3
+ import { type DmError } from "@squonk/data-manager-client" ;
3
4
import { useGetWorkflow , useRunWorkflow } from "@squonk/data-manager-client/workflow" ;
4
5
5
6
import { Box , TextField } from "@mui/material" ;
6
7
8
+ import { useEnqueueError } from "../../../hooks/useEnqueueStackError" ;
7
9
import { ModalWrapper } from "../../modals/ModalWrapper" ;
8
10
import { DebugCheckbox , type DebugValue } from "../DebugCheckbox" ;
9
11
import { JobInputsAndOptionsForm } from "../JobCard/JobInputsAndOptionsForm" ;
@@ -21,10 +23,17 @@ export interface WorkflowModalProps {
21
23
* Modal for running a workflow instance. Fetches workflow details and displays the correct form.
22
24
*/
23
25
export const WorkflowModal = ( { workflowId, projectId, open, onClose } : WorkflowModalProps ) => {
26
+ const { enqueueError } = useEnqueueError < DmError > ( ) ;
27
+
24
28
const { data : workflow } = useGetWorkflow ( workflowId ) ;
25
29
const specVariables = workflow ?. variables ;
26
30
27
31
const [ nameState , setNameState ] = useState ( "" ) ;
32
+
33
+ useEffect ( ( ) => {
34
+ workflow ?. workflow_name && setNameState ( workflow . workflow_name ) ;
35
+ } , [ workflow ?. workflow_name ] ) ;
36
+
28
37
const [ debug , setDebug ] = useState < DebugValue > ( "0" ) ;
29
38
30
39
const [ inputsData , setInputsData ] = useState < InputData > ( { } ) ;
@@ -34,21 +43,23 @@ export const WorkflowModal = ({ workflowId, projectId, open, onClose }: Workflow
34
43
35
44
const { mutateAsync : runWorkflow } = useRunWorkflow ( ) ;
36
45
37
- console . log ( specVariables ) ;
38
- console . log ( inputsData ) ;
39
-
40
46
const handleSubmit = async ( ) => {
41
- workflow ?. id &&
42
- ( await runWorkflow ( {
43
- workflowId : workflow . id ,
44
- data : {
45
- as_name : nameState ,
46
- debug,
47
- project_id : projectId ,
48
- variables : JSON . stringify ( { ...optionsFormData , ...inputsData } ) ,
49
- } ,
50
- } ) ) ;
51
- onClose ( ) ;
47
+ try {
48
+ workflow ?. id &&
49
+ ( await runWorkflow ( {
50
+ workflowId : workflow . id ,
51
+ data : {
52
+ as_name : nameState ,
53
+ debug,
54
+ project_id : projectId ,
55
+ variables : JSON . stringify ( { ...optionsFormData , ...inputsData } ) ,
56
+ } ,
57
+ } ) ) ;
58
+ } catch ( error ) {
59
+ enqueueError ( error ) ;
60
+ } finally {
61
+ onClose ( ) ;
62
+ }
52
63
} ;
53
64
54
65
return (
@@ -67,7 +78,10 @@ export const WorkflowModal = ({ workflowId, projectId, open, onClose }: Workflow
67
78
fullWidth
68
79
label = "Workflow name"
69
80
value = { nameState }
70
- onChange = { ( event ) => setNameState ( event . target . value ) }
81
+ onChange = { ( event ) => {
82
+ console . log ( event . target . value ) ;
83
+ return setNameState ( event . target . value ) ;
84
+ } }
71
85
/>
72
86
</ Box >
73
87
@@ -79,7 +93,7 @@ export const WorkflowModal = ({ workflowId, projectId, open, onClose }: Workflow
79
93
inputsData = { inputsData }
80
94
options = { specVariables ?. options }
81
95
optionsFormData = { optionsFormData }
82
- order = { [ ] }
96
+ order = { ( specVariables ?. options as any ) . properties }
83
97
projectId = { projectId }
84
98
setInputsData = { setInputsData }
85
99
setOptionsFormData = { setOptionsFormData }
0 commit comments