@@ -13,7 +13,6 @@ import {useNodeValidation} from "@edition/flow/hooks/NodeValidation.hook";
1313import { FunctionService } from "@edition/function/services/Function.service" ;
1414import { FlowService } from "@edition/flow/services/Flow.service" ;
1515import { DataTypeInputComponent } from "@edition/datatype/components/inputs/DataTypeInputComponent" ;
16- import { ParameterView } from "@edition/function/services/Function.view" ;
1716
1817export interface FunctionFileDefaultComponentProps {
1918 node : NodeFunction
@@ -31,53 +30,45 @@ export const FunctionFileDefaultComponent: React.FC<FunctionFileDefaultComponent
3130 const fileTabsService = useService ( FileTabsService )
3231 const validation = useNodeValidation ( node . id , flowId )
3332
34- const changedParameters = React . useRef < Set < string > > ( new Set ( ) )
33+ const changedParameters = React . useRef < Set < number > > ( new Set ( ) )
3534 const [ , startTransition ] = React . useTransition ( )
3635
3736 const definition = React . useMemo ( ( ) => {
3837 return functionService . getById ( node . functionDefinition ?. id ! ! )
3938 } , [ functionStore ] )
4039
41- const paramDefinitions = React . useMemo ( ( ) => {
42- const map : Record < string , ParameterView > = { }
43- definition ?. parameterDefinitions ?. forEach ( pd => {
44- map [ pd . id ! ! ] = pd
45- } )
46- return map
47- } , [ definition ] )
48-
49- const sortedParameters = React . useMemo ( ( ) => {
50- return [ ...( node . parameters ?. nodes || [ ] ) ] . sort ( ( a , b ) => a ! ! . id ! ! . localeCompare ( b ?. id ! ! ) )
51- } , [ node ] )
52-
5340 const initialValues = React . useMemo ( ( ) => {
5441 const values : Record < string , any > = { }
55- sortedParameters . forEach ( parameter => {
56- values [ parameter ?. id ! ! ] = parameter ?. value ?. __typename === "LiteralValue" ? ( typeof parameter . value ?. value === "object" && parameter . value ?. value != null ? JSON . stringify ( parameter . value ?. value ) : parameter . value . value ) : parameter ?. value != null ? JSON . stringify ( parameter ?. value ) : parameter ?. value
42+ definition ?. parameterDefinitions ?. forEach ( ( parameter , index ) => {
43+ const nodeParameter = node . parameters ?. nodes ?. [ index ]
44+ values [ index ] = nodeParameter ?. value ?. __typename === "LiteralValue" ? ( typeof nodeParameter . value ?. value === "object" && nodeParameter . value ?. value != null ? JSON . stringify ( nodeParameter . value ?. value ) : nodeParameter . value . value ) : nodeParameter ?. value != null ? JSON . stringify ( nodeParameter ?. value ) : nodeParameter ?. value
5745 } )
5846 return values
59- } , [ sortedParameters ] )
47+ } , [ node ] )
6048
6149 const validations = React . useMemo ( ( ) => {
6250 const values : Record < string , any > = { }
63- sortedParameters . forEach ( parameter => {
64- values [ parameter ?. id ! ! ] = ( _ : any ) => {
65- const validationForParameter = validation ?. find ( v => v . parameterId === parameter ?. id )
51+ node . parameters ?. nodes ?. forEach ( ( parameter , index ) => {
52+ values [ index ] = ( _ : any ) => {
53+ const validationForParameter = validation ?. find ( v => v . parameterIndex === index )
6654 if ( validationForParameter ) {
6755 return validationForParameter . message ! ! [ 0 ] ?. content || "Invalid value"
6856 }
6957 return null
7058 }
7159 } )
7260 return values
73- } , [ sortedParameters , validation ] )
61+ } , [ node , validation ] )
7462
7563 const onSubmit = React . useCallback ( ( values : any ) => {
7664 startTransition ( async ( ) => {
77- for ( const paramDefinitions1 of sortedParameters ) {
78- if ( ! changedParameters . current . has ( paramDefinitions1 ?. id ! ! ) ) continue ;
79- const syntaxSegment = values [ paramDefinitions1 ?. id ! ]
80- const previousValue = paramDefinitions1 ?. value as NodeParameterValue
65+ for ( const parameterDefinition of definition ?. parameterDefinitions ! ) {
66+ const parameterIndex = definition ?. parameterDefinitions ?. findIndex ( p => p ?. id === parameterDefinition . id )
67+ if ( ! parameterIndex ) return
68+ if ( ! changedParameters . current . has ( parameterIndex ) ) continue ;
69+ const nodeParameter = node . parameters ?. nodes ?. find ( p => p ?. parameterDefinition ?. id === parameterDefinition . id )
70+ const syntaxSegment = values [ parameterIndex ]
71+ const previousValue = nodeParameter ?. value as NodeParameterValue
8172 const syntaxValue = syntaxSegment ?. [ 0 ] ?. value ?? syntaxSegment ?. value ?? syntaxSegment as NodeFunction | LiteralValue | ReferenceValue
8273
8374 if ( previousValue && previousValue . __typename === "NodeFunctionIdWrapper" && previousValue . id ) {
@@ -88,45 +79,45 @@ export const FunctionFileDefaultComponent: React.FC<FunctionFileDefaultComponent
8879 }
8980
9081 if ( ! syntaxValue || ! syntaxSegment ) {
91- await flowService . setParameterValue ( flowId , node . id ! ! , paramDefinitions1 ! ! . id ! ! , undefined ) ;
82+ await flowService . setParameterValue ( flowId , node . id ! ! , parameterIndex , undefined , parameterDefinition . id ) ;
9283 }
9384
9485 try {
9586 const parsedSyntaxValue = Number . isNaN ( Number ( syntaxValue ) ) ? JSON . parse ( syntaxValue ) : syntaxValue
9687 if ( ! parsedSyntaxValue ?. __typename ) {
97- await flowService . setParameterValue ( flowId , node . id ! ! , paramDefinitions1 ! ! . id ! ! , syntaxValue ? {
88+ await flowService . setParameterValue ( flowId , node . id ! ! , parameterIndex , syntaxValue ? {
9889 __typename : "LiteralValue" ,
9990 value : parsedSyntaxValue === null || parsedSyntaxValue === undefined ? String ( parsedSyntaxValue ) : parsedSyntaxValue
100- } : undefined ) ;
91+ } : undefined , parameterDefinition . id ) ;
10192 continue ;
10293 }
10394 } catch ( e ) {
10495 if ( ! syntaxValue ?. __typename ) {
105- await flowService . setParameterValue ( flowId , node . id ! ! , paramDefinitions1 ! ! . id ! ! , syntaxValue ? {
96+ await flowService . setParameterValue ( flowId , node . id ! ! , parameterIndex , syntaxValue ? {
10697 __typename : "LiteralValue" ,
10798 value : syntaxValue ,
108- } : undefined ) ;
99+ } : undefined , parameterDefinition . id ) ;
109100 continue ;
110101 }
111102 }
112103
113104 const parsedSyntaxValue = typeof syntaxValue === "object" ? syntaxValue : JSON . parse ( syntaxValue )
114105
115- await flowService . setParameterValue ( flowId , node . id ! ! , paramDefinitions1 ! ! . id ! ! , parsedSyntaxValue . __typename === "LiteralValue" ? ( ! ! parsedSyntaxValue . value ? parsedSyntaxValue : undefined ) : parsedSyntaxValue ) ;
106+ await flowService . setParameterValue ( flowId , node . id ! ! , parameterIndex , parsedSyntaxValue . __typename === "LiteralValue" ? ( ! ! parsedSyntaxValue . value ? parsedSyntaxValue : undefined ) : parsedSyntaxValue , parameterDefinition . id ) ;
116107 }
117108 changedParameters . current . clear ( )
118109 } )
119- } , [ flowStore , sortedParameters ] )
110+ } , [ flowStore ] )
120111
121- const [ inputs , validate ] = useForm < Record < Scalars [ 'NodeParameterID' ] [ 'output' ] , InputSyntaxSegment [ ] > > ( {
112+ const [ inputs , validate ] = useForm < Record < number , InputSyntaxSegment [ ] > > ( {
122113 initialValues : initialValues ,
123114 validate : validations ,
124115 truthyValidationBeforeSubmit : false ,
125116 onSubmit : onSubmit
126117 } )
127118
128119 return < Flex style = { { gap : ".7rem" , flexDirection : "column" } } >
129- { definition ?. parameterDefinitions ?. map ( parameterDefinition => {
120+ { definition ?. parameterDefinitions ?. map ( ( parameterDefinition , index ) => {
130121
131122 if ( ! parameterDefinition ) return null
132123
@@ -139,15 +130,15 @@ export const FunctionFileDefaultComponent: React.FC<FunctionFileDefaultComponent
139130 { /*@ts -ignore*/ }
140131 < DataTypeInputComponent flowId = { flowId }
141132 nodeId = { node . id }
142- parameterId = { nodeParameter ?. id }
133+ parameterIndex = { index }
143134 title = { title }
144135 description = { description }
145136 clearable
146137 onChange = { ( ) => {
147- changedParameters . current . add ( nodeParameter ?. id ! ! )
138+ changedParameters . current . add ( index )
148139 validate ( )
149140 } }
150- { ...inputs . getInputProps ( nodeParameter ?. id ! ! ) }
141+ { ...inputs . getInputProps ( index ) }
151142 />
152143 </ div >
153144 } ) }
0 commit comments