Skip to content

Commit f54e931

Browse files
authored
Merge pull request #170 from code0-tech/feat/#169
Missing NodeParameters results in wrong value insertion
2 parents a2aeab3 + 263bde6 commit f54e931

4 files changed

Lines changed: 43 additions & 19 deletions

File tree

src/packages/ce/src/flow/hooks/Flow.edges.hook.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ export const useEdges = (flowId: Flow['id'], namespaceId?: Namespace['id'], proj
9393

9494
node.parameters?.nodes?.forEach((param, index) => {
9595
const parameterValue = param?.value;
96-
const parameterDefinition = functionService.getById(node.functionDefinition?.id!!)?.parameterDefinitions?.nodes?.find(p => p?.id === param?.parameterDefinition?.id);
96+
const parameterDefinition = functionService.getById(node.functionDefinition?.id!!)?.parameterDefinitions?.nodes?.[index];
9797
const variant = getTypeVariant(types.parameters[index], dataTypeService.values())[0].variant;
9898
if (!parameterValue) return
9999

src/packages/ce/src/flow/services/Flow.service.ts

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {ReactiveArrayService, ReactiveArrayStore} from "@code0-tech/pictor";
22
import {
33
FlowInput,
44
FlowSetting,
5+
FunctionDefinition,
56
LiteralValue,
67
Maybe,
78
Mutation,
@@ -16,11 +17,10 @@ import {
1617
NodeFunction,
1718
NodeFunctionIdWrapper,
1819
NodeParameter,
19-
NodeParameterValueInput, ParameterDefinition,
20+
NodeParameterValueInput,
2021
Query,
2122
ReferencePathInput,
22-
ReferenceValue,
23-
Scalars
23+
ReferenceValue
2424
} from "@code0-tech/sagittarius-graphql-types";
2525
import {GraphqlClient} from "@core/util/graphql-client";
2626
import flowsQuery from "@edition/flow/services/queries/Flows.query.graphql";
@@ -317,21 +317,43 @@ export class FlowService extends ReactiveArrayService<FlowView, FlowDependencies
317317
await this.syncFlow(flowId)
318318
}
319319

320-
async setParameterValue(flowId: FlowView['id'], nodeId: NodeFunction['id'], parameterIndex: number, value?: LiteralValue | ReferenceValue | NodeFunction, parameterDefinitionId?: ParameterDefinition['id']): Promise<void> {
320+
async setParameterValue(flowId: FlowView['id'], nodeId: NodeFunction['id'], parameterIndex: number, value?: LiteralValue | ReferenceValue | NodeFunction, functionDefinition?: FunctionDefinition): Promise<void> {
321+
321322
const flow = this.getById(flowId)
322323
const index = this.values().findIndex(f => f.id === flowId)
323324
if (!flow) return
324325
const node = this.getNodeById(flowId, nodeId)
325326
if (!node) return
327+
328+
if (!node.parameters) {
329+
node.parameters = {
330+
nodes: []
331+
}
332+
}
333+
334+
if (!node.parameters.nodes) {
335+
node.parameters.nodes = []
336+
}
337+
338+
functionDefinition?.parameterDefinitions?.nodes?.forEach((pD, index) => {
339+
const nodeParameter = node.parameters?.nodes?.[index]
340+
if (!nodeParameter) {
341+
342+
node!.parameters!.nodes![parameterIndex] = {
343+
__typename: "NodeParameter",
344+
value: null,
345+
parameterDefinition: {
346+
id: pD?.id
347+
}
348+
}
349+
}
350+
})
351+
326352
const parameter = node.parameters?.nodes?.[parameterIndex]
327-
if (!parameter && parameterDefinitionId && node.parameters && node.parameters.nodes) {
328-
//TODO: needs a parameterDefinitionId
353+
if (!parameter && node.parameters && node.parameters.nodes) {
354+
329355
const localParameter: NodeParameter = {
330356
__typename: "NodeParameter",
331-
parameterDefinition: {
332-
__typename: "ParameterDefinition",
333-
id: parameterDefinitionId
334-
},
335357
value: null
336358
}
337359

src/packages/ce/src/function/components/files/FunctionFileDefaultComponent.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
Flow,
55
LiteralValue,
66
NodeFunction,
7-
NodeParameterValue, ParameterDefinition,
7+
NodeParameterValue,
88
ReferenceValue
99
} from "@code0-tech/sagittarius-graphql-types";
1010
import {FileTabsService} from "@code0-tech/pictor/dist/components/file-tabs/FileTabs.service";
@@ -66,7 +66,7 @@ export const FunctionFileDefaultComponent: React.FC<FunctionFileDefaultComponent
6666
const parameterIndex = definition?.parameterDefinitions?.nodes?.findIndex(p => p?.id === parameterDefinition?.id)
6767
if (typeof parameterIndex !== "number") return
6868
if (!changedParameters.current.has(parameterIndex)) continue;
69-
const nodeParameter = node.parameters?.nodes?.find(p => p?.parameterDefinition?.id === parameterDefinition?.id)
69+
const nodeParameter = node.parameters?.nodes?.[parameterIndex]
7070
const value = values[parameterDefinition!.id!]
7171
const previousValue = nodeParameter?.value as NodeParameterValue
7272
const syntaxValue = (value?.[0]?.type == "block" || value?.[0]?.type == "text" ? value?.[0]?.value : value) ?? null as NodeFunction | LiteralValue | ReferenceValue | null
@@ -79,7 +79,7 @@ export const FunctionFileDefaultComponent: React.FC<FunctionFileDefaultComponent
7979
}
8080

8181
if (!syntaxValue || !value || (Array.isArray(syntaxValue) && Array.from(syntaxValue).length <= 0)) {
82-
await flowService.setParameterValue(flowId, node.id!!, parameterIndex, undefined, parameterDefinition?.id);
82+
await flowService.setParameterValue(flowId, node.id!!, parameterIndex, undefined, definition);
8383
continue;
8484
}
8585

@@ -89,22 +89,22 @@ export const FunctionFileDefaultComponent: React.FC<FunctionFileDefaultComponent
8989
await flowService.setParameterValue(flowId, node.id!!, parameterIndex, syntaxValue ? {
9090
__typename: "LiteralValue",
9191
value: parsedSyntaxValue
92-
} : undefined, parameterDefinition?.id);
92+
} : undefined, definition);
9393
continue;
9494
}
9595
} catch (e) {
9696
if (!syntaxValue?.__typename) {
9797
await flowService.setParameterValue(flowId, node.id!!, parameterIndex, syntaxValue ? {
9898
__typename: "LiteralValue",
9999
value: syntaxValue,
100-
} : undefined, parameterDefinition?.id);
100+
} : undefined, definition);
101101
continue;
102102
}
103103
}
104104

105105
const parsedSyntaxValue = typeof syntaxValue === "object" ? syntaxValue : JSON.parse(syntaxValue)
106106

107-
await flowService.setParameterValue(flowId, node.id!!, parameterIndex, parsedSyntaxValue.__typename === "LiteralValue" ? (!!parsedSyntaxValue.value ? parsedSyntaxValue : undefined) : parsedSyntaxValue, parameterDefinition?.id);
107+
await flowService.setParameterValue(flowId, node.id!!, parameterIndex, parsedSyntaxValue.__typename === "LiteralValue" ? (!!parsedSyntaxValue.value ? parsedSyntaxValue : undefined) : parsedSyntaxValue, definition);
108108
}
109109
changedParameters.current.clear()
110110
})
@@ -118,6 +118,8 @@ export const FunctionFileDefaultComponent: React.FC<FunctionFileDefaultComponent
118118
onSubmit: onSubmit
119119
})
120120

121+
console.log(initialValues, node.id)
122+
121123
React.useEffect(() => {
122124
validate()
123125
}, [validation])

src/packages/ce/src/function/components/nodes/FunctionNodeDefaultComponent.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ export const FunctionNodeDefaultComponent: React.FC<FunctionNodeDefaultComponent
7272
);
7373

7474
const displayMessage = React.useMemo(() => splitTemplate(definition?.displayMessages?.[0]?.content ?? FALLBACK_FUNCTION_DISPLAY_MESSAGE).map(item => {
75-
const nodeParameter = node?.parameters?.nodes?.find(p => {
76-
const parameterDefinition = definition?.parameterDefinitions?.nodes?.find(pd => pd?.id == p?.parameterDefinition?.id)
75+
const nodeParameter = node?.parameters?.nodes?.find((_, index) => {
76+
const parameterDefinition = definition?.parameterDefinitions?.nodes?.[index]
7777
return parameterDefinition?.identifier == item
7878
})
7979

0 commit comments

Comments
 (0)