diff --git a/app/components/StructureNodeEditor.vue b/app/components/StructureNodeEditor.vue index 919c9b9..9d3e7ba 100644 --- a/app/components/StructureNodeEditor.vue +++ b/app/components/StructureNodeEditor.vue @@ -39,7 +39,7 @@
+ Sélectionnez uniquement la famille de ce sous-composant ; il sera configuré via son propre modèle. +
Aucun sous-composant défini.
@@ -397,9 +400,6 @@ const addSubComponent = () => { name: '', typeComposantId: '', typeComposantLabel: '', - customFields: [], - pieces: [], - subComponents: [], }) } diff --git a/app/pages/machine/[id].vue b/app/pages/machine/[id].vue index 15982b6..a620210 100644 --- a/app/pages/machine/[id].vue +++ b/app/pages/machine/[id].vue @@ -1090,6 +1090,7 @@ const normalizePieceNode = (source, context = {}) => { } const normalizeComponentNode = (source, context = {}) => { + const isRoot = context.isRoot ?? false const typeComposantId = source?.typeComposantId || source?.typeComposant?.id || context.typeComposantId @@ -1110,10 +1111,10 @@ const normalizeComponentNode = (source, context = {}) => { ?? context.componentModelId ?? null, __requirementId: source?.__requirementId ?? context.requirementId ?? null, - customFields: Array.isArray(source?.customFields) + customFields: isRoot && Array.isArray(source?.customFields) ? cloneStructure(source.customFields) : [], - pieces: Array.isArray(source?.pieces) + pieces: isRoot && Array.isArray(source?.pieces) ? source.pieces.map((piece) => normalizePieceNode(piece)) : [], subComponents: Array.isArray(source?.subComponents || source?.sousComposants) @@ -1127,6 +1128,8 @@ const normalizeComponentNode = (source, context = {}) => { ?? sub?.composantModelId ?? sub?.composantModel?.id ?? null, + requirementId: sub?.__requirementId ?? null, + isRoot: false, })) : [], } @@ -1173,6 +1176,7 @@ const createEmptyComponentDefinition = (requirement) => { }, { requirementId: requirement?.id || null, + isRoot: true, }, ) } @@ -1188,6 +1192,7 @@ const createDefinitionFromModel = (model, requirement) => { const definition = normalizeComponentNode(structure, { requirementId: requirement?.id || null, componentModelId: model?.id || null, + isRoot: true, }) definition.__componentModelId = model?.id || null return definition @@ -1206,6 +1211,7 @@ const buildDefinitionFromComponent = (component, requirement) => { typeComposantLabel: requirement?.typeComposant?.name || component?.typeComposant?.name || '', + isRoot: true, }) return definition } @@ -1224,7 +1230,7 @@ const applyDefinitionToNode = (target, definition) => { ? definition.pieces.map((piece) => normalizePieceNode(piece)) : [] target.subComponents = Array.isArray(definition.subComponents) - ? definition.subComponents.map((sub) => normalizeComponentNode(sub)) + ? definition.subComponents.map((sub) => normalizeComponentNode(sub, { isRoot: false })) : [] } @@ -1255,6 +1261,7 @@ const handleNodeComponentModelChange = async (node, typeComposantId, modelId) => await ensureModelsForNodeDefinition(node) } else { node.__componentModelId = null + node.customFields = [] node.pieces = [] node.subComponents = [] } diff --git a/app/shared/modelUtils.ts b/app/shared/modelUtils.ts index b20da48..2760008 100644 --- a/app/shared/modelUtils.ts +++ b/app/shared/modelUtils.ts @@ -146,15 +146,8 @@ const sanitizeSubComponents = (components: any[]): any[] => { const quantity = Number(component?.quantity) const normalizedQuantity = Number.isFinite(quantity) && quantity > 0 ? quantity : undefined - const customFields = sanitizeCustomFields(component?.customFields) - const pieces = sanitizePieces(component?.pieces) - const subComponents = sanitizeSubComponents(component?.subComponents) - const result: Record