Skip to content

Commit 926fb31

Browse files
authored
Merge pull request #145 from code0-tech/feat/#141
Fixing validation from use form and remove flowSettingIdentifier
2 parents 79b0409 + 7980e0c commit 926fb31

4 files changed

Lines changed: 32 additions & 23 deletions

File tree

.env.local

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ NEXT_PUBLIC_EDITION=ce
44
SAGITTARIUS_GRAPHQL_URL=http://localhost:3010/graphql
55

66
NEXT_PUBLIC_SCULPTOR_VERSION=0.0.0
7-
NEXT_PUBLIC_PICTOR_VERSION=0.5.1
7+
NEXT_PUBLIC_PICTOR_VERSION=0.6.0
88
NEXT_PUBLIC_ALLOWED_REDIRECT_DOMAINS=*.code0.tech,*.codezero.build
99

1010
NEXT_PUBLIC_OTEL_SERVICE_NAME=#"sculptor-client"

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,10 @@ export class FlowService extends ReactiveArrayService<FlowView, FlowDependencies
145145
const payload: FlowInput = {
146146
name: flow?.name!,
147147
type: flow?.type?.id!,
148+
/*@ts-ignore*/
148149
settings: flow?.settings?.nodes?.map(setting => {
149150
return {
150-
flowSettingIdentifier: setting?.flowSettingIdentifier!,
151+
//flowSettingIdentifier: setting?.flowSettingIdentifier!,
151152
value: setting?.value!,
152153
}
153154
}) ?? [],

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

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
Flow,
55
LiteralValue,
66
NodeFunction,
7-
NodeParameterValue,
7+
NodeParameterValue, ParameterDefinition,
88
ReferenceValue
99
} from "@code0-tech/sagittarius-graphql-types";
1010
import {FileTabsService} from "@code0-tech/pictor/dist/components/file-tabs/FileTabs.service";
@@ -30,9 +30,8 @@ export const FunctionFileDefaultComponent: React.FC<FunctionFileDefaultComponent
3030
const functionStore = useStore(FunctionService)
3131
const flowService = useService(FlowService)
3232
const fileTabsService = useService(FileTabsService)
33-
const validation = useFlowValidation(flowId)
34-
3533
const changedParameters = React.useRef<Set<number>>(new Set())
34+
const validation = useFlowValidation(flowId)
3635

3736
const definition = React.useMemo(() => {
3837
return functionService.getById(node.functionDefinition?.id!!)
@@ -42,24 +41,24 @@ export const FunctionFileDefaultComponent: React.FC<FunctionFileDefaultComponent
4241
const values: Record<string, any> = {}
4342
definition?.parameterDefinitions?.nodes?.forEach((parameter, index) => {
4443
const nodeParameter = node.parameters?.nodes?.[index]
45-
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
44+
values[parameter!.id!] = 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
4645
})
4746
return values
48-
}, [node])
47+
}, [node, definition])
4948

5049
const validations = React.useMemo(() => {
5150
const values: Record<string, any> = {}
52-
node.parameters?.nodes?.forEach((parameter, index) => {
53-
values[index] = (_: any) => {
54-
const validationForParameter = validation?.find(v => v?.parameterIndex === index && v?.nodeId === node.id)
51+
definition?.parameterDefinitions?.nodes?.forEach((parameter, index) => {
52+
values[parameter!.id!] = (_: any) => {
53+
const validationForParameter = validation?.find(v => v.parameterIndex === index && v.nodeId === node.id)
5554
if (validationForParameter) {
5655
return validationForParameter?.message?.[0]?.content ?? "Invalid value"
5756
}
5857
return null
5958
}
6059
})
6160
return values
62-
}, [node, validation])
61+
}, [validation, flowId, node, definition])
6362

6463
const onSubmit = React.useCallback((values: any) => {
6564
startTransition(async () => {
@@ -68,7 +67,7 @@ export const FunctionFileDefaultComponent: React.FC<FunctionFileDefaultComponent
6867
if (typeof parameterIndex !== "number") return
6968
if (!changedParameters.current.has(parameterIndex)) continue;
7069
const nodeParameter = node.parameters?.nodes?.find(p => p?.parameterDefinition?.id === parameterDefinition?.id)
71-
const syntaxSegment = values[parameterIndex]
70+
const syntaxSegment = values[parameterDefinition!.id!]
7271
const previousValue = nodeParameter?.value as NodeParameterValue
7372
const syntaxValue = syntaxSegment?.[0]?.value ?? syntaxSegment?.value ?? syntaxSegment ?? null as NodeFunction | LiteralValue | ReferenceValue | null
7473

@@ -111,13 +110,18 @@ export const FunctionFileDefaultComponent: React.FC<FunctionFileDefaultComponent
111110
})
112111
}, [flowService])
113112

114-
const [inputs, validate] = useForm<Record<number, InputSyntaxSegment[]>>({
113+
const [inputs, validate] = useForm<Record<string, InputSyntaxSegment[]>>({
114+
useInitialValidation: true,
115+
truthyValidationBeforeSubmit: false,
115116
initialValues: initialValues,
116117
validate: validations,
117-
truthyValidationBeforeSubmit: false,
118118
onSubmit: onSubmit
119119
})
120120

121+
React.useEffect(() => {
122+
validate()
123+
}, [validation])
124+
121125
return <Flex style={{gap: ".7rem", flexDirection: "column"}}>
122126
{definition?.parameterDefinitions?.nodes?.map((parameterDefinition, index) => {
123127

@@ -139,7 +143,7 @@ export const FunctionFileDefaultComponent: React.FC<FunctionFileDefaultComponent
139143
changedParameters.current.add(index)
140144
validate()
141145
}}
142-
{...inputs.getInputProps(index)}
146+
{...inputs.getInputProps(parameterDefinition.id!)}
143147
/>
144148
</div>
145149
})}

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

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,21 @@ export const FunctionFileTriggerComponent: React.FC<FunctionFileTriggerComponent
3636
const flowInputType = getTypesFromFunction({signature: instance.signature}).returnType
3737
const flowTypeInputType = getTypesFromFunction({signature: definition?.signature}).returnType
3838

39-
const initialValues: Record<number | "inputType", any> = React.useMemo(() => {
40-
const values: Record<number | "inputType", any> = {
39+
const initialValues: Record<string | "inputType", any> = React.useMemo(() => {
40+
const values: Record<string | "inputType", any> = {
4141
"inputType": flowInputType || flowTypeInputType
4242
}
4343
definition?.flowTypeSettings?.forEach((setting, index) => {
4444
const flowSetting = instance.settings?.nodes?.[index]
45-
values[index] = flowSetting?.value?.__typename === "LiteralValue" ? (flowSetting?.value.value) : (flowSetting?.value)
45+
values[setting.id!] = flowSetting?.value?.__typename === "LiteralValue" ? (flowSetting?.value.value) : (flowSetting?.value)
4646
})
4747
return values
4848
}, [definition, instance])
4949

5050
const validations = React.useMemo(() => {
5151
const values: Record<string, any> = {}
52-
instance.settings?.nodes?.forEach((flowSetting, index) => {
53-
values[index] = (_: any) => {
52+
definition?.flowTypeSettings?.forEach((setting, index) => {
53+
values[setting!.id!] = (_: any) => {
5454
const validationForSetting = validation?.find(v => v.parameterIndex === index && !v.nodeId)
5555
if (validationForSetting) {
5656
return validationForSetting.message?.[0]?.content || "Invalid value"
@@ -71,7 +71,7 @@ export const FunctionFileTriggerComponent: React.FC<FunctionFileTriggerComponent
7171
if (typeof index !== "number") return
7272
if (!changedParameters.current.has(index)) continue;
7373

74-
const syntaxSegment = values[index]
74+
const syntaxSegment = values[flowTypeSetting.id!]
7575
const syntaxValue = syntaxSegment?.[0]?.value ?? syntaxSegment?.value ?? syntaxSegment ?? null as LiteralValue | null
7676

7777
if (!syntaxValue || !syntaxSegment || (Array.isArray(syntaxValue) && Array.from(syntaxValue).length <= 0)) {
@@ -85,14 +85,18 @@ export const FunctionFileTriggerComponent: React.FC<FunctionFileTriggerComponent
8585
})
8686
}, [definition, changedParameters])
8787

88-
const [inputs, validate] = useForm<Record<number | "inputType", InputSyntaxSegment[]>>({
88+
const [inputs, validate] = useForm<Record<string | "inputType", InputSyntaxSegment[]>>({
8989
initialValues: initialValues,
9090
validate: validations,
9191
truthyValidationBeforeSubmit: false,
9292
useInitialValidation: true,
9393
onSubmit: onSubmit
9494
})
9595

96+
React.useEffect(() => {
97+
validate()
98+
}, [validation])
99+
96100
return <Flex style={{gap: ".7rem", flexDirection: "column"}}>
97101
{
98102

@@ -125,7 +129,7 @@ export const FunctionFileTriggerComponent: React.FC<FunctionFileTriggerComponent
125129
changedParameters.current.add(index)
126130
validate()
127131
}}
128-
{...inputs.getInputProps(index)}
132+
{...inputs.getInputProps(settingDefinition.id!)}
129133
/>
130134
</div>
131135

0 commit comments

Comments
 (0)