@rsuci/shared-form-components 1.0.45 → 1.0.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/GroupRenderer.d.ts.map +1 -1
- package/dist/components/GroupRenderer.js +15 -4
- package/dist/components/VariableRenderer.d.ts +1 -0
- package/dist/components/VariableRenderer.d.ts.map +1 -1
- package/dist/components/VariableRenderer.js +3 -3
- package/dist/components/inputs/StringInput.d.ts.map +1 -1
- package/dist/components/inputs/StringInput.js +22 -1
- package/dist/components/roster/RosterCheckInput.d.ts +3 -0
- package/dist/components/roster/RosterCheckInput.d.ts.map +1 -1
- package/dist/components/roster/RosterCheckInput.js +12 -3
- package/dist/components/roster/RosterListInput.d.ts +3 -0
- package/dist/components/roster/RosterListInput.d.ts.map +1 -1
- package/dist/components/roster/RosterListInput.js +12 -3
- package/dist/components/roster/RosterPanel.d.ts +3 -0
- package/dist/components/roster/RosterPanel.d.ts.map +1 -1
- package/dist/components/roster/RosterPanel.js +19 -2
- package/dist/hooks/useFormTree.d.ts +6 -0
- package/dist/hooks/useFormTree.d.ts.map +1 -1
- package/dist/hooks/useFormTree.js +6 -0
- package/dist/lib/form-tree.d.ts +38 -0
- package/dist/lib/form-tree.d.ts.map +1 -1
- package/dist/lib/form-tree.js +223 -0
- package/dist/types/form-tree.d.ts +9 -0
- package/dist/types/form-tree.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupRenderer.d.ts","sourceRoot":"","sources":["../../src/components/GroupRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAuC,MAAM,OAAO,CAAC;AAE5D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EAEX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,UAAU,kBAAkB;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,+CAA+C;IAC/C,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnF,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IAClD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC9C,wBAAwB,CAAC,EAAE,CACzB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACzC,YAAY,CAAC,EAAE,MAAM,KAClB,MAAM,CAAC;IACZ,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5C,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;CAC5C;
|
|
1
|
+
{"version":3,"file":"GroupRenderer.d.ts","sourceRoot":"","sources":["../../src/components/GroupRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAuC,MAAM,OAAO,CAAC;AAE5D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EAEX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,UAAU,kBAAkB;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,+CAA+C;IAC/C,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnF,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IAClD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC9C,wBAAwB,CAAC,EAAE,CACzB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACzC,YAAY,CAAC,EAAE,MAAM,KAClB,MAAM,CAAC;IACZ,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5C,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;CAC5C;AAwKD,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAmW/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -20,7 +20,10 @@ const MultipleGroupManager = ({ groupe, entries, onAddEntry, onRemoveEntry, chil
|
|
|
20
20
|
: 'bg-gray-300 text-gray-500 cursor-not-allowed'}`, children: [_jsx(Plus, { className: "h-4 w-4 mr-1" }), "Ajouter"] }))] }), _jsx("div", { className: "space-y-4", children: children })] }));
|
|
21
21
|
};
|
|
22
22
|
// Composant pour une entrée individuelle dans un groupe multiple
|
|
23
|
-
const MultipleGroupEntry = ({ groupe, iterationNumber, totalIterations, visibleVariables, responses, onChange, onRemove, canRemove, disabled, allResponses, interpolateVariableLabel, RosterCheckInput, RosterListInput }) => {
|
|
23
|
+
const MultipleGroupEntry = ({ groupe, iterationNumber, totalIterations, visibleVariables, responses, onChange, onRemove, canRemove, disabled, allResponses, interpolateVariableLabel, RosterCheckInput, RosterListInput, instanceVisibleVariables }) => {
|
|
24
|
+
// Utiliser les variables visibles spécifiques à l'instance si disponibles
|
|
25
|
+
// Sinon, fallback sur les variables visibles globales (rétrocompatibilité)
|
|
26
|
+
const effectiveVisibleVariables = instanceVisibleVariables || visibleVariables;
|
|
24
27
|
console.log('🔢 [MultipleGroupEntry] Rendu de l\'entrée', {
|
|
25
28
|
groupeCode: groupe.code,
|
|
26
29
|
iterationNumber,
|
|
@@ -28,11 +31,12 @@ const MultipleGroupEntry = ({ groupe, iterationNumber, totalIterations, visibleV
|
|
|
28
31
|
allResponsesKeys: allResponses ? Object.keys(allResponses) : [],
|
|
29
32
|
allResponsesCount: allResponses ? Object.keys(allResponses).length : 0,
|
|
30
33
|
hasInterpolateFunction: !!interpolateVariableLabel,
|
|
31
|
-
visibleVariablesCount:
|
|
34
|
+
visibleVariablesCount: effectiveVisibleVariables.length,
|
|
35
|
+
hasInstanceVisibleVariables: !!instanceVisibleVariables
|
|
32
36
|
});
|
|
33
37
|
const entryTitle = groupe.configMultiple?.labelTemplate?.replace('{index}', iterationNumber.toString()) ||
|
|
34
38
|
`${groupe.designation} ${iterationNumber}`;
|
|
35
|
-
return (_jsxs("div", { className: "iteration-card bg-white border border-gray-200 rounded-lg p-4 shadow-sm", children: [_jsxs("div", { className: "flex items-center justify-between mb-4", children: [_jsxs("h4", { className: "text-lg font-medium text-gray-800 flex items-center", children: [_jsx("span", { className: "w-6 h-6 bg-blue-100 text-blue-800 rounded-full flex items-center justify-center text-sm font-semibold mr-2", children: iterationNumber }), entryTitle] }), groupe.configMultiple?.allowManualControl && canRemove && onRemove && (_jsx("button", { onClick: onRemove, disabled: disabled, className: "p-2 text-red-500 hover:text-red-700 hover:bg-red-50 rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed", title: "Supprimer cette entr\u00E9e", children: _jsx(Trash2, { className: "h-4 w-4" }) }))] }), _jsx("div", { className: "variables-grid grid grid-cols-1 md:grid-cols-2 gap-4", children:
|
|
39
|
+
return (_jsxs("div", { className: "iteration-card bg-white border border-gray-200 rounded-lg p-4 shadow-sm", children: [_jsxs("div", { className: "flex items-center justify-between mb-4", children: [_jsxs("h4", { className: "text-lg font-medium text-gray-800 flex items-center", children: [_jsx("span", { className: "w-6 h-6 bg-blue-100 text-blue-800 rounded-full flex items-center justify-center text-sm font-semibold mr-2", children: iterationNumber }), entryTitle] }), groupe.configMultiple?.allowManualControl && canRemove && onRemove && (_jsx("button", { onClick: onRemove, disabled: disabled, className: "p-2 text-red-500 hover:text-red-700 hover:bg-red-50 rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed", title: "Supprimer cette entr\u00E9e", children: _jsx(Trash2, { className: "h-4 w-4" }) }))] }), _jsx("div", { className: "variables-grid grid grid-cols-1 md:grid-cols-2 gap-4", children: effectiveVisibleVariables.map(variable => {
|
|
36
40
|
const responseKey = `${variable.code}_${iterationNumber}`;
|
|
37
41
|
// Extraire les variables roster si c'est un type ROSTERCHECK ou ROSTERLIST
|
|
38
42
|
const rosterVariables = (variable.typeCode === 'ROSTERCHECK' || variable.typeCode === 'ROSTERLIST')
|
|
@@ -245,7 +249,14 @@ const GroupRenderer = ({ groupe, responses, conditionEngine, formTree, onChange,
|
|
|
245
249
|
return (_jsxs("div", { className: "mb-4 p-3 bg-red-50 border border-red-200 rounded-lg", children: [_jsxs("div", { className: "flex items-center mb-2", children: [_jsx(AlertCircle, { className: "h-4 w-4 text-red-600 mr-2" }), _jsxs("h4", { className: "text-sm font-medium text-red-800", children: ["Erreurs de validation (", validationErrors.length, ")"] })] }), _jsxs("ul", { className: "text-sm text-red-700 space-y-1", children: [validationErrors.slice(0, 5).map((error, index) => (_jsxs("li", { children: ["\u2022 ", error.message] }, index))), validationErrors.length > 5 && (_jsxs("li", { className: "text-red-600 font-medium", children: ["... et ", validationErrors.length - 5, " autres erreurs"] }))] })] }));
|
|
246
250
|
};
|
|
247
251
|
if (groupe.estMultiple) {
|
|
248
|
-
return (_jsxs("div", { className: "group-renderer-multiple", children: [_jsx(ErrorSummary, {}), _jsx(MultipleGroupManager, { groupe: groupe, entries: multipleEntries, onAddEntry: addEntry, onRemoveEntry: removeEntry, children: multipleEntries.map((iterationNumber, index) =>
|
|
252
|
+
return (_jsxs("div", { className: "group-renderer-multiple", children: [_jsx(ErrorSummary, {}), _jsx(MultipleGroupManager, { groupe: groupe, entries: multipleEntries, onAddEntry: addEntry, onRemoveEntry: removeEntry, children: multipleEntries.map((iterationNumber, index) => {
|
|
253
|
+
// Pour les groupes multiples avec FormTree, utiliser getVisibleVariablesForInstance
|
|
254
|
+
// pour obtenir les variables visibles spécifiques à cette instance (gestion des jumps par instance)
|
|
255
|
+
const instanceVisibleVars = useFormTreeMode && formTree
|
|
256
|
+
? formTree.getVisibleVariablesForInstance(groupe.code, iterationNumber)
|
|
257
|
+
: undefined;
|
|
258
|
+
return (_jsx(MultipleGroupEntry, { groupe: groupe, iterationNumber: iterationNumber, totalIterations: multipleEntries.length, visibleVariables: visibleVariables, instanceVisibleVariables: instanceVisibleVars, responses: responses, onChange: onChange, onRemove: () => removeEntry(index), canRemove: multipleEntries.length > (groupe.configMultiple?.minIterations || 1), disabled: disabled, allResponses: allResponses, interpolateVariableLabel: interpolateVariableLabel, RosterCheckInput: RosterCheckInput, RosterListInput: RosterListInput }, iterationNumber));
|
|
259
|
+
}) })] }));
|
|
249
260
|
}
|
|
250
261
|
// Groupe simple
|
|
251
262
|
return (_jsxs("div", { className: "group-renderer-simple", children: [_jsxs("div", { className: "mb-6", children: [_jsx("h2", { className: "text-xl font-semibold text-gray-900 mb-2", children: groupe.designation }), visibleVariables.length > 0 && (_jsxs("p", { className: "text-gray-600 text-sm", children: [visibleVariables.length, " ", visibleVariables.length > 1 ? 'champs' : 'champ'] }))] }), _jsx(ErrorSummary, {}), _jsx("div", { className: "variables-container space-y-6", children: visibleVariables.map(variable => {
|
|
@@ -31,6 +31,7 @@ export interface VariableRendererProps {
|
|
|
31
31
|
interpolateVariableLabel?: (label: string, responses: Record<string, EnqueteReponse>, numeroMembre?: number) => string;
|
|
32
32
|
services?: any;
|
|
33
33
|
geographicComponents?: any;
|
|
34
|
+
isConsultationMode?: boolean;
|
|
34
35
|
}
|
|
35
36
|
declare const GeographicFallback: React.FC<VariableRendererProps>;
|
|
36
37
|
declare const getVariableRenderer: (typeCode: string, RosterCheckInput?: React.ComponentType<VariableRendererProps>, RosterListInput?: React.ComponentType<VariableRendererProps>) => React.ComponentType<VariableRendererProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariableRenderer.d.ts","sourceRoot":"","sources":["../../src/components/VariableRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AA+BxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9D,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACjE,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC3C,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1L,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAG/B,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC9D,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC7D,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAGvH,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,oBAAoB,CAAC,EAAE,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"VariableRenderer.d.ts","sourceRoot":"","sources":["../../src/components/VariableRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AA+BxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9D,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACjE,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC3C,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1L,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAG/B,gBAAgB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC9D,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC7D,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAGvH,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,oBAAoB,CAAC,EAAE,GAAG,CAAC;IAG3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAGD,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAQvD,CAAC;AAGF,QAAA,MAAM,mBAAmB,GACvB,UAAU,MAAM,EAChB,mBAAmB,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAC7D,kBAAkB,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAC3D,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAsD3C,CAAC;AAGF,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAqHrD,CAAC;AAEF,eAAe,gBAAgB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -58,7 +58,7 @@ const getVariableRenderer = (typeCode, RosterCheckInput, RosterListInput) => {
|
|
|
58
58
|
return renderers[typeCode] || StringInput;
|
|
59
59
|
};
|
|
60
60
|
// Composant principal VariableRenderer
|
|
61
|
-
const VariableRenderer = ({ variable, value, onChange, onBlur, error, disabled, numeroMembre, valeurMin, onFillFormFromMenage, onFillFormFromEnquete, formulaireVariables, rosterVariables, allResponses = {}, RosterCheckInput, RosterListInput, interpolateVariableLabel, reponses = {}, services }) => {
|
|
61
|
+
const VariableRenderer = ({ variable, value, onChange, onBlur, error, disabled, numeroMembre, valeurMin, onFillFormFromMenage, onFillFormFromEnquete, formulaireVariables, rosterVariables, allResponses = {}, RosterCheckInput, RosterListInput, interpolateVariableLabel, reponses = {}, services, isConsultationMode = false }) => {
|
|
62
62
|
console.log('🎨 [VariableRenderer] Rendu de variable', {
|
|
63
63
|
code: variable.code,
|
|
64
64
|
designation: variable.designation,
|
|
@@ -85,7 +85,7 @@ const VariableRenderer = ({ variable, value, onChange, onBlur, error, disabled,
|
|
|
85
85
|
...variable,
|
|
86
86
|
designation: interpolatedDesignation
|
|
87
87
|
};
|
|
88
|
-
return _jsx(RendererComponent, { variable: variableWithInterpolatedLabel, value, onChange, onBlur, error, disabled, numeroMembre, valeurMin, onFillFormFromMenage, formulaireVariables, rosterVariables });
|
|
88
|
+
return _jsx(RendererComponent, { variable: variableWithInterpolatedLabel, value, onChange, onBlur, error, disabled, numeroMembre, valeurMin, onFillFormFromMenage, formulaireVariables, rosterVariables, isConsultationMode });
|
|
89
89
|
}
|
|
90
90
|
return (_jsxs("div", { className: "variable-container space-y-2", children: [_jsxs("label", { className: "block text-sm font-medium text-gray-700", children: [variable.typeCode !== 'LABEL' && variable.code && (_jsxs("span", { className: "text-blue-600 font-mono text-xs mr-2", children: ["(", variable.code, ")"] })), interpolatedDesignation, variable.estObligatoire && _jsx("span", { className: "text-red-500 ml-1", children: "*" }), variable.proprietes?.tooltip && (_jsx("button", { type: "button", className: "ml-2 text-gray-400 hover:text-gray-600", title: variable.proprietes.tooltip, children: _jsx(HelpCircle, { className: "h-4 w-4 inline" }) }))] }), _jsxs(Suspense, { fallback: _jsx("div", { className: "animate-pulse bg-gray-200 h-10 rounded" }), children: [(variable.typeCode === 'ROSTERCHECK' || variable.typeCode === 'ROSTERLIST') && (() => {
|
|
91
91
|
console.log(`🔍 [VariableRenderer] Variable ${variable.code} - Avant rendu:`, {
|
|
@@ -96,7 +96,7 @@ const VariableRenderer = ({ variable, value, onChange, onBlur, error, disabled,
|
|
|
96
96
|
length: Array.isArray(rosterVariables) ? rosterVariables.length : 'N/A'
|
|
97
97
|
});
|
|
98
98
|
return null;
|
|
99
|
-
})(), _jsx(RendererComponent, { variable: variable, value: value, onChange: onChange, onBlur: onBlur, error: error, disabled: disabled, numeroMembre: numeroMembre, valeurMin: valeurMin, onFillFormFromMenage: onFillFormFromMenage, onFillFormFromEnquete: onFillFormFromEnquete, formulaireVariables: formulaireVariables, rosterVariables: rosterVariables, allResponses: allResponses, reponses: reponses, services: services })] }), variable.proprietes?.helpText && (_jsx("p", { className: "text-xs text-gray-500", children: variable.proprietes.helpText })), error && (_jsxs("div", { className: "flex items-center space-x-1 text-red-600 text-sm", children: [_jsx(AlertCircle, { className: "h-4 w-4" }), _jsx("span", { children: error })] }))] }));
|
|
99
|
+
})(), _jsx(RendererComponent, { variable: variable, value: value, onChange: onChange, onBlur: onBlur, error: error, disabled: disabled, numeroMembre: numeroMembre, valeurMin: valeurMin, onFillFormFromMenage: onFillFormFromMenage, onFillFormFromEnquete: onFillFormFromEnquete, formulaireVariables: formulaireVariables, rosterVariables: rosterVariables, allResponses: allResponses, reponses: reponses, services: services, isConsultationMode: isConsultationMode })] }), variable.proprietes?.helpText && (_jsx("p", { className: "text-xs text-gray-500", children: variable.proprietes.helpText })), error && (_jsxs("div", { className: "flex items-center space-x-1 text-red-600 text-sm", children: [_jsx(AlertCircle, { className: "h-4 w-4" }), _jsx("span", { children: error })] }))] }));
|
|
100
100
|
};
|
|
101
101
|
export default VariableRenderer;
|
|
102
102
|
export { getVariableRenderer, GeographicFallback };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringInput.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/StringInput.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAI5D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,kBAAkB,GAAG;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC;IACtD,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"StringInput.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/StringInput.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAI5D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,kBAAkB,GAAG;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC;IACtD,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAmF3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -13,10 +13,31 @@ const StringInput = ({ variable, value, onChange, onBlur, error, disabled, servi
|
|
|
13
13
|
const { textStyle, containerStyle } = applyComponentStyle(variable.componentStyle);
|
|
14
14
|
// Déterminer si le composant est en lecture seule
|
|
15
15
|
const isReadonly = isComponentReadonly(variable, isConsultationMode);
|
|
16
|
+
// 🔍 DEBUG: Log pour tracer le problème des STRING dans les rosters
|
|
17
|
+
console.log('[StringInput] État du composant', {
|
|
18
|
+
code: variable.code,
|
|
19
|
+
typeCode: variable.typeCode,
|
|
20
|
+
value,
|
|
21
|
+
stringValue,
|
|
22
|
+
isReadonly,
|
|
23
|
+
isConsultationMode,
|
|
24
|
+
variableIsReadonly: variable.isReadonly,
|
|
25
|
+
disabled,
|
|
26
|
+
hasOnChange: !!onChange
|
|
27
|
+
});
|
|
16
28
|
const handleChange = (newValue) => {
|
|
17
|
-
|
|
29
|
+
console.log('[StringInput] handleChange appelé', {
|
|
30
|
+
code: variable.code,
|
|
31
|
+
newValue,
|
|
32
|
+
isReadonly,
|
|
33
|
+
willProcess: !isReadonly
|
|
34
|
+
});
|
|
35
|
+
if (isReadonly) {
|
|
36
|
+
console.log('[StringInput] ⚠️ Changement bloqué car isReadonly=true');
|
|
18
37
|
return;
|
|
38
|
+
}
|
|
19
39
|
const transformed = forceUppercase ? newValue.toLocaleUpperCase('fr-FR') : newValue;
|
|
40
|
+
console.log('[StringInput] Appel onChange avec:', transformed);
|
|
20
41
|
onChange(transformed);
|
|
21
42
|
};
|
|
22
43
|
// Générer les classes CSS
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import React from 'react';
|
|
10
10
|
import { VariableFormulaire, VariableValue } from '../../types/enquete';
|
|
11
11
|
import { RosterVariable } from './RosterPanel';
|
|
12
|
+
import { FormRendererServices } from '../../types/services';
|
|
12
13
|
export interface RosterCheckInputProps {
|
|
13
14
|
variable: VariableFormulaire;
|
|
14
15
|
value: VariableValue;
|
|
@@ -17,6 +18,8 @@ export interface RosterCheckInputProps {
|
|
|
17
18
|
error?: string;
|
|
18
19
|
disabled?: boolean;
|
|
19
20
|
rosterVariables?: RosterVariable[];
|
|
21
|
+
services?: FormRendererServices;
|
|
22
|
+
isConsultationMode?: boolean;
|
|
20
23
|
}
|
|
21
24
|
declare const RosterCheckInput: React.FC<RosterCheckInputProps>;
|
|
22
25
|
export default RosterCheckInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RosterCheckInput.d.ts","sourceRoot":"","sources":["../../../src/components/roster/RosterCheckInput.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIxE,OAAoB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG5D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"RosterCheckInput.d.ts","sourceRoot":"","sources":["../../../src/components/roster/RosterCheckInput.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIxE,OAAoB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IAEnC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAYD,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA8LrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -12,7 +12,7 @@ import { useMemo, useState, useEffect } from 'react';
|
|
|
12
12
|
import { AlertCircle } from 'lucide-react';
|
|
13
13
|
import { VariableValueConverter } from '../../lib/utils/variableValueConverter';
|
|
14
14
|
import RosterPanel from './RosterPanel';
|
|
15
|
-
const RosterCheckInput = ({ variable, value, onChange, onBlur, error, disabled, rosterVariables = [] }) => {
|
|
15
|
+
const RosterCheckInput = ({ variable, value, onChange, onBlur, error, disabled, rosterVariables = [], services, isConsultationMode = false }) => {
|
|
16
16
|
// Parser les options depuis la propriété valeur (format: "01#Option1|02#Option2|...")
|
|
17
17
|
const options = useMemo(() => {
|
|
18
18
|
const optionsSource = variable.proprietes?.valeur || variable.valeurDefaut;
|
|
@@ -75,6 +75,13 @@ const RosterCheckInput = ({ variable, value, onChange, onBlur, error, disabled,
|
|
|
75
75
|
}, [rosterVariables]);
|
|
76
76
|
// Gérer le changement d'une variable dans une option
|
|
77
77
|
const handleVariableChange = (optionCode, variableCode, variableValue) => {
|
|
78
|
+
console.log('[RosterCheckInput] handleVariableChange appelé', {
|
|
79
|
+
optionCode,
|
|
80
|
+
variableCode,
|
|
81
|
+
variableValue,
|
|
82
|
+
variableValueType: typeof variableValue,
|
|
83
|
+
currentDataBefore: JSON.stringify(currentData)
|
|
84
|
+
});
|
|
78
85
|
const newData = { ...currentData };
|
|
79
86
|
if (!newData[optionCode]) {
|
|
80
87
|
newData[optionCode] = {};
|
|
@@ -90,8 +97,10 @@ const RosterCheckInput = ({ variable, value, onChange, onBlur, error, disabled,
|
|
|
90
97
|
delete newData[optionCode];
|
|
91
98
|
}
|
|
92
99
|
}
|
|
100
|
+
const serializedData = JSON.stringify(newData);
|
|
101
|
+
console.log('[RosterCheckInput] Nouvelle valeur sérialisée:', serializedData);
|
|
93
102
|
// Sérialiser en JSON pour le stockage
|
|
94
|
-
onChange(
|
|
103
|
+
onChange(serializedData);
|
|
95
104
|
if (onBlur) {
|
|
96
105
|
onBlur();
|
|
97
106
|
}
|
|
@@ -105,7 +114,7 @@ const RosterCheckInput = ({ variable, value, onChange, onBlur, error, disabled,
|
|
|
105
114
|
}
|
|
106
115
|
return (_jsxs("div", { className: "space-y-4", children: [_jsx("div", { children: _jsx("p", { className: "text-sm text-gray-500", children: "Renseignez les options" }) }), _jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: options.map(option => {
|
|
107
116
|
const isChecked = checkedOptions.has(option.code);
|
|
108
|
-
return (_jsx(RosterPanel, { option: option, rosterVariables: sortedRosterVariables, value: currentData[option.code] || {}, onChange: (variableCode, variableValue) => handleVariableChange(option.code, variableCode, variableValue), disabled: disabled, showCheckbox: true, isChecked: isChecked, onCheckChange: (checked) => handleCheckChange(option.code, checked) }, option.code));
|
|
117
|
+
return (_jsx(RosterPanel, { option: option, rosterVariables: sortedRosterVariables, value: currentData[option.code] || {}, onChange: (variableCode, variableValue) => handleVariableChange(option.code, variableCode, variableValue), disabled: disabled, showCheckbox: true, isChecked: isChecked, onCheckChange: (checked) => handleCheckChange(option.code, checked), services: services, isConsultationMode: isConsultationMode }, option.code));
|
|
109
118
|
}) }), checkedOptions.size > 0 && (_jsx("div", { className: "p-2 bg-green-50 border border-green-200 rounded text-sm", children: _jsxs("span", { className: "text-green-800 font-medium", children: [checkedOptions.size, " option(s) coch\u00E9e(s)", Object.keys(currentData).length > 0 && ` · ${Object.keys(currentData).length} avec des données`] }) })), error && (_jsxs("div", { className: "flex items-center space-x-1 text-red-600 text-sm", children: [_jsx(AlertCircle, { className: "h-4 w-4" }), _jsx("span", { children: error })] }))] }));
|
|
110
119
|
};
|
|
111
120
|
export default RosterCheckInput;
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import React from 'react';
|
|
10
10
|
import { VariableFormulaire, VariableValue } from '../../types/enquete';
|
|
11
11
|
import { RosterVariable } from './RosterPanel';
|
|
12
|
+
import { FormRendererServices } from '../../types/services';
|
|
12
13
|
export interface RosterListInputProps {
|
|
13
14
|
variable: VariableFormulaire;
|
|
14
15
|
value: VariableValue;
|
|
@@ -17,6 +18,8 @@ export interface RosterListInputProps {
|
|
|
17
18
|
error?: string;
|
|
18
19
|
disabled?: boolean;
|
|
19
20
|
rosterVariables?: RosterVariable[];
|
|
21
|
+
services?: FormRendererServices;
|
|
22
|
+
isConsultationMode?: boolean;
|
|
20
23
|
}
|
|
21
24
|
declare const RosterListInput: React.FC<RosterListInputProps>;
|
|
22
25
|
export default RosterListInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RosterListInput.d.ts","sourceRoot":"","sources":["../../../src/components/roster/RosterListInput.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIxE,OAAoB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG5D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"RosterListInput.d.ts","sourceRoot":"","sources":["../../../src/components/roster/RosterListInput.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIxE,OAAoB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IAEnC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAYD,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAiJnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -12,7 +12,7 @@ import { useMemo } from 'react';
|
|
|
12
12
|
import { AlertCircle } from 'lucide-react';
|
|
13
13
|
import { VariableValueConverter } from '../../lib/utils/variableValueConverter';
|
|
14
14
|
import RosterPanel from './RosterPanel';
|
|
15
|
-
const RosterListInput = ({ variable, value, onChange, onBlur, error, disabled, rosterVariables = [] }) => {
|
|
15
|
+
const RosterListInput = ({ variable, value, onChange, onBlur, error, disabled, rosterVariables = [], services, isConsultationMode = false }) => {
|
|
16
16
|
// Parser les options depuis la propriété valeur (format: "01#Option1|02#Option2|...")
|
|
17
17
|
const options = useMemo(() => {
|
|
18
18
|
const optionsSource = variable.proprietes?.valeur || variable.valeurDefaut;
|
|
@@ -44,6 +44,13 @@ const RosterListInput = ({ variable, value, onChange, onBlur, error, disabled, r
|
|
|
44
44
|
}, [rosterVariables]);
|
|
45
45
|
// Gérer le changement d'une variable dans un panel
|
|
46
46
|
const handleVariableChange = (optionCode, variableCode, newValue) => {
|
|
47
|
+
console.log('[RosterListInput] handleVariableChange appelé', {
|
|
48
|
+
optionCode,
|
|
49
|
+
variableCode,
|
|
50
|
+
newValue,
|
|
51
|
+
newValueType: typeof newValue,
|
|
52
|
+
currentDataBefore: JSON.stringify(currentData)
|
|
53
|
+
});
|
|
47
54
|
const newData = { ...currentData };
|
|
48
55
|
if (!newData[optionCode]) {
|
|
49
56
|
newData[optionCode] = {};
|
|
@@ -58,8 +65,10 @@ const RosterListInput = ({ variable, value, onChange, onBlur, error, disabled, r
|
|
|
58
65
|
delete newData[optionCode];
|
|
59
66
|
}
|
|
60
67
|
}
|
|
68
|
+
const serializedData = JSON.stringify(newData);
|
|
69
|
+
console.log('[RosterListInput] Nouvelle valeur sérialisée:', serializedData);
|
|
61
70
|
// Sérialiser en JSON pour le stockage
|
|
62
|
-
onChange(
|
|
71
|
+
onChange(serializedData);
|
|
63
72
|
};
|
|
64
73
|
// Obtenir la valeur d'une variable
|
|
65
74
|
const getVariableValue = (optionCode, variableCode) => {
|
|
@@ -72,6 +81,6 @@ const RosterListInput = ({ variable, value, onChange, onBlur, error, disabled, r
|
|
|
72
81
|
if (sortedRosterVariables.length === 0) {
|
|
73
82
|
return (_jsx("div", { className: "p-3 bg-yellow-50 border border-yellow-200 rounded-lg", children: _jsx("p", { className: "text-yellow-800 text-sm", children: "Aucune variable de roster d\u00E9finie. Veuillez configurer les variables du roster." }) }));
|
|
74
83
|
}
|
|
75
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsx("div", { children: _jsx("p", { className: "text-sm text-gray-500", children: "Renseignez les options" }) }), _jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: options.map(option => (_jsx(RosterPanel, { option: option, rosterVariables: sortedRosterVariables, value: currentData[option.code] || {}, onChange: (variableCode, newValue) => handleVariableChange(option.code, variableCode, newValue), disabled: disabled }, option.code))) }), Object.keys(currentData).length > 0 && (_jsx("div", { className: "p-2 bg-green-50 border border-green-200 rounded text-sm", children: _jsxs("span", { className: "text-green-800 font-medium", children: [Object.keys(currentData).length, " option(s) avec des s\u00E9lections"] }) })), error && (_jsxs("div", { className: "flex items-center space-x-1 text-red-600 text-sm", children: [_jsx(AlertCircle, { className: "h-4 w-4" }), _jsx("span", { children: error })] }))] }));
|
|
84
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsx("div", { children: _jsx("p", { className: "text-sm text-gray-500", children: "Renseignez les options" }) }), _jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: options.map(option => (_jsx(RosterPanel, { option: option, rosterVariables: sortedRosterVariables, value: currentData[option.code] || {}, onChange: (variableCode, newValue) => handleVariableChange(option.code, variableCode, newValue), disabled: disabled, services: services, isConsultationMode: isConsultationMode }, option.code))) }), Object.keys(currentData).length > 0 && (_jsx("div", { className: "p-2 bg-green-50 border border-green-200 rounded text-sm", children: _jsxs("span", { className: "text-green-800 font-medium", children: [Object.keys(currentData).length, " option(s) avec des s\u00E9lections"] }) })), error && (_jsxs("div", { className: "flex items-center space-x-1 text-red-600 text-sm", children: [_jsx(AlertCircle, { className: "h-4 w-4" }), _jsx("span", { children: error })] }))] }));
|
|
76
85
|
};
|
|
77
86
|
export default RosterListInput;
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* (RADIO, COMBOBOX, STRING, etc.) au lieu de simples checkboxes/selects
|
|
7
7
|
*/
|
|
8
8
|
import React from 'react';
|
|
9
|
+
import { FormRendererServices } from '../../types/services';
|
|
9
10
|
interface RosterOption {
|
|
10
11
|
code: string;
|
|
11
12
|
designation: string;
|
|
@@ -30,6 +31,8 @@ export interface RosterPanelProps {
|
|
|
30
31
|
showCheckbox?: boolean;
|
|
31
32
|
isChecked?: boolean;
|
|
32
33
|
onCheckChange?: (checked: boolean) => void;
|
|
34
|
+
services?: FormRendererServices;
|
|
35
|
+
isConsultationMode?: boolean;
|
|
33
36
|
}
|
|
34
37
|
declare const RosterPanel: React.FC<RosterPanelProps>;
|
|
35
38
|
export default RosterPanel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RosterPanel.d.ts","sourceRoot":"","sources":["../../../src/components/roster/RosterPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAkB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"RosterPanel.d.ts","sourceRoot":"","sources":["../../../src/components/roster/RosterPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAM5D,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAGD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAE3C,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAqL3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -11,7 +11,7 @@ import { useMemo } from 'react';
|
|
|
11
11
|
import VariableRenderer from '../VariableRenderer';
|
|
12
12
|
import { cn } from '../../lib/utils/cn';
|
|
13
13
|
import { RosterConditionEngine } from '../../lib/roster-condition-engine';
|
|
14
|
-
const RosterPanel = ({ option, rosterVariables, value, onChange, disabled, showCheckbox = false, isChecked = true, onCheckChange }) => {
|
|
14
|
+
const RosterPanel = ({ option, rosterVariables, value, onChange, disabled, showCheckbox = false, isChecked = true, onCheckChange, services, isConsultationMode = false }) => {
|
|
15
15
|
// Trier les variables par ordre
|
|
16
16
|
const sortedVariables = [...rosterVariables].sort((a, b) => a.ordre - b.ordre);
|
|
17
17
|
// Calculer les variables masquées par les jumps
|
|
@@ -88,7 +88,24 @@ const RosterPanel = ({ option, rosterVariables, value, onChange, disabled, showC
|
|
|
88
88
|
};
|
|
89
89
|
// Récupérer la valeur actuelle pour cette variable dans cette option
|
|
90
90
|
const currentValue = value[rosterVar.code] || null;
|
|
91
|
-
|
|
91
|
+
// 🔍 DEBUG: Log pour tracer le problème des STRING dans les rosters
|
|
92
|
+
console.log('[RosterPanel] Rendu variable', {
|
|
93
|
+
code: rosterVar.code,
|
|
94
|
+
uniqueCode,
|
|
95
|
+
typeCode: effectiveTypeCode,
|
|
96
|
+
currentValue,
|
|
97
|
+
currentValueType: typeof currentValue,
|
|
98
|
+
isDisabled: disabled,
|
|
99
|
+
variableIsReadonly: variable.isReadonly
|
|
100
|
+
});
|
|
101
|
+
return (_jsx("div", { className: "roster-variable", children: _jsx(VariableRenderer, { variable: variable, value: currentValue, onChange: (newValue) => {
|
|
102
|
+
console.log('[RosterPanel] onChange appelé', {
|
|
103
|
+
variableCode: rosterVar.code,
|
|
104
|
+
newValue,
|
|
105
|
+
newValueType: typeof newValue
|
|
106
|
+
});
|
|
107
|
+
onChange(rosterVar.code, newValue);
|
|
108
|
+
}, disabled: disabled, services: services, isConsultationMode: isConsultationMode }) }, rosterVar.code));
|
|
92
109
|
}) })) : (_jsx("div", { className: "p-4 text-center text-gray-500 bg-gray-50 rounded border border-gray-200", children: _jsx("p", { className: "text-sm", children: "\u2713 Cochez l'option ci-dessus pour renseigner les variables" }) }))] }));
|
|
93
110
|
};
|
|
94
111
|
export default RosterPanel;
|
|
@@ -16,8 +16,12 @@ export interface UseFormTreeReturn {
|
|
|
16
16
|
formTree: FormTree;
|
|
17
17
|
/** Retourne les variables visibles d'un groupe */
|
|
18
18
|
getVisibleVariables: (groupeCode: string) => VariableFormulaire[];
|
|
19
|
+
/** Retourne les variables visibles d'un groupe pour une instance spécifique (groupes multiples) */
|
|
20
|
+
getVisibleVariablesForInstance: (groupeCode: string, instanceNumber: number) => VariableFormulaire[];
|
|
19
21
|
/** Retourne les codes des variables sautées dans un groupe */
|
|
20
22
|
getJumpedVariableCodes: (groupeCode: string) => Set<string>;
|
|
23
|
+
/** Retourne les codes des variables sautées pour une instance spécifique (groupes multiples) */
|
|
24
|
+
getJumpedVariableCodesForInstance: (groupeCode: string, instanceNumber: number) => Set<string>;
|
|
21
25
|
/** Valide un groupe et retourne les erreurs */
|
|
22
26
|
validateGroup: (groupeCode: string) => {
|
|
23
27
|
isValid: boolean;
|
|
@@ -33,6 +37,8 @@ export interface UseFormTreeReturn {
|
|
|
33
37
|
jumpErrors: JumpError[];
|
|
34
38
|
/** Liste des jumps actifs */
|
|
35
39
|
activeJumps: JumpRange[];
|
|
40
|
+
/** Retourne les jumps actifs pour une instance spécifique */
|
|
41
|
+
getActiveJumpsForInstance: (groupeCode: string, instanceNumber: number) => JumpRange[];
|
|
36
42
|
/** Force une réévaluation de toutes les conditions */
|
|
37
43
|
forceEvaluate: () => void;
|
|
38
44
|
/** Compteur de mise à jour (pour forcer le re-render) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormTree.d.ts","sourceRoot":"","sources":["../../src/hooks/useFormTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7F,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IAEnB,kDAAkD;IAClD,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,kBAAkB,EAAE,CAAC;IAElE,8DAA8D;IAC9D,sBAAsB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;IAE5D,+CAA+C;IAC/C,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAE9E,uEAAuE;IACvE,yBAAyB,EAAE,MAAM,MAAM,EAAE,CAAC;IAE1C,qCAAqC;IACrC,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,iBAAiB,GAAG,SAAS,CAAC;IAE1E,kCAAkC;IAClC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;IAElE,0CAA0C;IAC1C,UAAU,EAAE,SAAS,EAAE,CAAC;IAExB,6BAA6B;IAC7B,WAAW,EAAE,SAAS,EAAE,CAAC;IAEzB,sDAAsD;IACtD,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACzC,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,
|
|
1
|
+
{"version":3,"file":"useFormTree.d.ts","sourceRoot":"","sources":["../../src/hooks/useFormTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7F,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IAEnB,kDAAkD;IAClD,mBAAmB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,kBAAkB,EAAE,CAAC;IAElE,mGAAmG;IACnG,8BAA8B,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,kBAAkB,EAAE,CAAC;IAErG,8DAA8D;IAC9D,sBAAsB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;IAE5D,gGAAgG;IAChG,iCAAiC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/F,+CAA+C;IAC/C,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAE9E,uEAAuE;IACvE,yBAAyB,EAAE,MAAM,MAAM,EAAE,CAAC;IAE1C,qCAAqC;IACrC,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,iBAAiB,GAAG,SAAS,CAAC;IAE1E,kCAAkC;IAClC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;IAElE,0CAA0C;IAC1C,UAAU,EAAE,SAAS,EAAE,CAAC;IAExB,6BAA6B;IAC7B,WAAW,EAAE,SAAS,EAAE,CAAC;IAEzB,6DAA6D;IAC7D,yBAAyB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;IAEvF,sDAAsD;IACtD,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACzC,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CA8GnB;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -57,7 +57,10 @@ export function useFormTree(groupes, responses, options = {}) {
|
|
|
57
57
|
}, [formTree, responses]);
|
|
58
58
|
// Fonctions de requête memoizées
|
|
59
59
|
const getVisibleVariables = useCallback((groupeCode) => formTree.getVisibleVariables(groupeCode), [formTree, updateCount]);
|
|
60
|
+
const getVisibleVariablesForInstance = useCallback((groupeCode, instanceNumber) => formTree.getVisibleVariablesForInstance(groupeCode, instanceNumber), [formTree, updateCount]);
|
|
60
61
|
const getJumpedVariableCodes = useCallback((groupeCode) => formTree.getJumpedVariableCodes(groupeCode), [formTree, updateCount]);
|
|
62
|
+
const getJumpedVariableCodesForInstance = useCallback((groupeCode, instanceNumber) => formTree.getJumpedVariableCodesForInstance(groupeCode, instanceNumber), [formTree, updateCount]);
|
|
63
|
+
const getActiveJumpsForInstance = useCallback((groupeCode, instanceNumber) => formTree.getActiveJumpsForInstance(groupeCode, instanceNumber), [formTree, updateCount]);
|
|
61
64
|
const validateGroup = useCallback((groupeCode) => formTree.validateGroup(groupeCode), [formTree, updateCount]);
|
|
62
65
|
const getVariablesToClearOnSave = useCallback(() => formTree.getVariablesToClearOnSave(), [formTree, updateCount]);
|
|
63
66
|
const getVariableState = useCallback((variableCode) => formTree.getVariableState(variableCode), [formTree, updateCount]);
|
|
@@ -72,13 +75,16 @@ export function useFormTree(groupes, responses, options = {}) {
|
|
|
72
75
|
return {
|
|
73
76
|
formTree,
|
|
74
77
|
getVisibleVariables,
|
|
78
|
+
getVisibleVariablesForInstance,
|
|
75
79
|
getJumpedVariableCodes,
|
|
80
|
+
getJumpedVariableCodesForInstance,
|
|
76
81
|
validateGroup,
|
|
77
82
|
getVariablesToClearOnSave,
|
|
78
83
|
getVariableState,
|
|
79
84
|
getGroupState,
|
|
80
85
|
jumpErrors,
|
|
81
86
|
activeJumps,
|
|
87
|
+
getActiveJumpsForInstance,
|
|
82
88
|
forceEvaluate,
|
|
83
89
|
updateCount
|
|
84
90
|
};
|
package/dist/lib/form-tree.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ export declare class FormTree implements IFormTree {
|
|
|
20
20
|
private conditionEngine;
|
|
21
21
|
private responses;
|
|
22
22
|
private debug;
|
|
23
|
+
private instanceStates;
|
|
24
|
+
private instanceJumpRanges;
|
|
23
25
|
onJumpError?: (error: JumpError) => void;
|
|
24
26
|
constructor(responses?: Record<string, EnqueteReponse>, options?: FormTreeOptions);
|
|
25
27
|
private log;
|
|
@@ -38,6 +40,42 @@ export declare class FormTree implements IFormTree {
|
|
|
38
40
|
private applyJumpRanges;
|
|
39
41
|
private computeFinalVisibility;
|
|
40
42
|
getVisibleVariables(groupeCode: string): VariableFormulaire[];
|
|
43
|
+
/**
|
|
44
|
+
* Retourne les variables visibles pour une instance spécifique d'un groupe multiple
|
|
45
|
+
* Évalue les conditions et jumps dans le contexte de l'instance
|
|
46
|
+
* @param groupeCode Code du groupe
|
|
47
|
+
* @param instanceNumber Numéro de l'instance (1, 2, 3, ...)
|
|
48
|
+
*/
|
|
49
|
+
getVisibleVariablesForInstance(groupeCode: string, instanceNumber: number): VariableFormulaire[];
|
|
50
|
+
/**
|
|
51
|
+
* Évalue les états de visibilité pour une instance spécifique d'un groupe multiple
|
|
52
|
+
* Prend en compte les jumps avec interpolation de l'index d'instance
|
|
53
|
+
*/
|
|
54
|
+
private evaluateInstanceStates;
|
|
55
|
+
/**
|
|
56
|
+
* Récupère la valeur d'une variable pour une instance spécifique
|
|
57
|
+
*/
|
|
58
|
+
private getInstanceValue;
|
|
59
|
+
/**
|
|
60
|
+
* Traite les conditions de jump pour une instance spécifique
|
|
61
|
+
*/
|
|
62
|
+
private processJumpConditionForInstance;
|
|
63
|
+
/**
|
|
64
|
+
* Évalue la partie non-jump d'une condition pour une instance spécifique
|
|
65
|
+
*/
|
|
66
|
+
private evaluateNonJumpPartForInstance;
|
|
67
|
+
/**
|
|
68
|
+
* Applique les jumps pour une instance spécifique
|
|
69
|
+
*/
|
|
70
|
+
private applyInstanceJumpRanges;
|
|
71
|
+
/**
|
|
72
|
+
* Retourne les jumps actifs pour une instance spécifique
|
|
73
|
+
*/
|
|
74
|
+
getActiveJumpsForInstance(groupeCode: string, instanceNumber: number): JumpRange[];
|
|
75
|
+
/**
|
|
76
|
+
* Retourne les codes des variables sautées pour une instance spécifique
|
|
77
|
+
*/
|
|
78
|
+
getJumpedVariableCodesForInstance(groupeCode: string, instanceNumber: number): Set<string>;
|
|
41
79
|
getGroupState(groupeCode: string): GroupNodeState | undefined;
|
|
42
80
|
getVariableState(variableCode: string): VariableNodeState | undefined;
|
|
43
81
|
getJumpedVariableCodes(groupeCode: string): Set<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-tree.d.ts","sourceRoot":"","sources":["../../src/lib/form-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,SAAS,EACT,eAAe,EAEhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAAa,QAAS,YAAW,SAAS;IACxC,OAAO,CAAC,UAAU,CAA0C;IAC5D,OAAO,CAAC,aAAa,CAA6C;IAClE,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,KAAK,CAAU;
|
|
1
|
+
{"version":3,"file":"form-tree.d.ts","sourceRoot":"","sources":["../../src/lib/form-tree.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/form-tree.js
CHANGED
|
@@ -16,6 +16,12 @@ export class FormTree {
|
|
|
16
16
|
this.orderedVariables = [];
|
|
17
17
|
this.jumpRanges = [];
|
|
18
18
|
this.jumpErrors = [];
|
|
19
|
+
// Cache pour les états par instance dans les groupes multiples
|
|
20
|
+
// Clé: "groupeCode_instanceNumber", Valeur: Map<variableCode, VariableNodeState>
|
|
21
|
+
this.instanceStates = new Map();
|
|
22
|
+
// Cache pour les jumps par instance
|
|
23
|
+
// Clé: "groupeCode_instanceNumber", Valeur: JumpRange[]
|
|
24
|
+
this.instanceJumpRanges = new Map();
|
|
19
25
|
this.responses = responses;
|
|
20
26
|
this.conditionEngine = new ConditionEngine(responses);
|
|
21
27
|
this.onJumpError = options.onJumpError;
|
|
@@ -76,6 +82,9 @@ export class FormTree {
|
|
|
76
82
|
for (const [code, state] of this.variableNodes) {
|
|
77
83
|
state.currentValue = responses[code]?.valeur ?? null;
|
|
78
84
|
}
|
|
85
|
+
// Invalider le cache des instances (sera recalculé à la demande)
|
|
86
|
+
this.instanceStates.clear();
|
|
87
|
+
this.instanceJumpRanges.clear();
|
|
79
88
|
// Réévaluer toutes les conditions
|
|
80
89
|
this.evaluateAll();
|
|
81
90
|
}
|
|
@@ -275,6 +284,220 @@ export class FormTree {
|
|
|
275
284
|
.filter(state => state.isVisible)
|
|
276
285
|
.map(state => state.variable);
|
|
277
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* Retourne les variables visibles pour une instance spécifique d'un groupe multiple
|
|
289
|
+
* Évalue les conditions et jumps dans le contexte de l'instance
|
|
290
|
+
* @param groupeCode Code du groupe
|
|
291
|
+
* @param instanceNumber Numéro de l'instance (1, 2, 3, ...)
|
|
292
|
+
*/
|
|
293
|
+
getVisibleVariablesForInstance(groupeCode, instanceNumber) {
|
|
294
|
+
const groupNode = this.groupNodes.get(groupeCode);
|
|
295
|
+
if (!groupNode || !groupNode.isVisible)
|
|
296
|
+
return [];
|
|
297
|
+
// Pour les groupes non-multiples, utiliser la méthode standard
|
|
298
|
+
if (!groupNode.groupe.estMultiple) {
|
|
299
|
+
return this.getVisibleVariables(groupeCode);
|
|
300
|
+
}
|
|
301
|
+
// Calculer ou récupérer du cache les états pour cette instance
|
|
302
|
+
const instanceKey = `${groupeCode}_${instanceNumber}`;
|
|
303
|
+
let instanceStateMap = this.instanceStates.get(instanceKey);
|
|
304
|
+
if (!instanceStateMap) {
|
|
305
|
+
// Calculer les états pour cette instance
|
|
306
|
+
instanceStateMap = this.evaluateInstanceStates(groupNode, instanceNumber);
|
|
307
|
+
this.instanceStates.set(instanceKey, instanceStateMap);
|
|
308
|
+
}
|
|
309
|
+
// Retourner les variables visibles pour cette instance
|
|
310
|
+
return groupNode.variables
|
|
311
|
+
.filter(varState => {
|
|
312
|
+
const instanceState = instanceStateMap.get(varState.variable.code);
|
|
313
|
+
return instanceState ? instanceState.isVisible : varState.isVisible;
|
|
314
|
+
})
|
|
315
|
+
.map(state => state.variable);
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Évalue les états de visibilité pour une instance spécifique d'un groupe multiple
|
|
319
|
+
* Prend en compte les jumps avec interpolation de l'index d'instance
|
|
320
|
+
*/
|
|
321
|
+
evaluateInstanceStates(groupNode, instanceNumber) {
|
|
322
|
+
const instanceStateMap = new Map();
|
|
323
|
+
const instanceJumps = [];
|
|
324
|
+
const groupeCode = groupNode.groupe.code;
|
|
325
|
+
this.log(`Evaluating instance ${instanceNumber} for group ${groupeCode}`);
|
|
326
|
+
// Créer une copie des états pour cette instance
|
|
327
|
+
for (const varState of groupNode.variables) {
|
|
328
|
+
const instanceState = {
|
|
329
|
+
variable: varState.variable,
|
|
330
|
+
isVisible: varState.variable.estVisible,
|
|
331
|
+
isJumpedOver: false,
|
|
332
|
+
isConditionMet: true,
|
|
333
|
+
isValid: true,
|
|
334
|
+
skipValidation: false,
|
|
335
|
+
currentValue: this.getInstanceValue(varState.variable.code, instanceNumber),
|
|
336
|
+
shouldClearOnSave: false
|
|
337
|
+
};
|
|
338
|
+
instanceStateMap.set(varState.variable.code, instanceState);
|
|
339
|
+
}
|
|
340
|
+
// Évaluer les conditions et jumps pour cette instance
|
|
341
|
+
for (const varState of groupNode.variables) {
|
|
342
|
+
const condition = varState.variable.conditionsAffichage;
|
|
343
|
+
const instanceState = instanceStateMap.get(varState.variable.code);
|
|
344
|
+
if (!condition) {
|
|
345
|
+
instanceState.isConditionMet = true;
|
|
346
|
+
continue;
|
|
347
|
+
}
|
|
348
|
+
// Détecter et traiter les jumps avec le contexte de l'instance
|
|
349
|
+
if (this.containsJump(condition)) {
|
|
350
|
+
const jumps = this.processJumpConditionForInstance(instanceState, groupeCode, condition, instanceNumber, instanceStateMap);
|
|
351
|
+
instanceJumps.push(...jumps);
|
|
352
|
+
// Évaluer la partie non-jump de la condition avec le contexte de l'instance
|
|
353
|
+
instanceState.isConditionMet = this.evaluateNonJumpPartForInstance(condition, instanceNumber);
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
// Évaluer la condition avec le contexte de l'instance
|
|
357
|
+
instanceState.isConditionMet = this.conditionEngine.evaluate(condition, instanceNumber);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
// Appliquer les jumps pour cette instance
|
|
361
|
+
this.applyInstanceJumpRanges(instanceJumps, instanceStateMap);
|
|
362
|
+
// Calculer la visibilité finale pour cette instance
|
|
363
|
+
for (const state of instanceStateMap.values()) {
|
|
364
|
+
state.isVisible =
|
|
365
|
+
state.variable.estVisible &&
|
|
366
|
+
state.isConditionMet &&
|
|
367
|
+
!state.isJumpedOver;
|
|
368
|
+
}
|
|
369
|
+
// Stocker les jumps de cette instance pour référence
|
|
370
|
+
const instanceKey = `${groupeCode}_${instanceNumber}`;
|
|
371
|
+
this.instanceJumpRanges.set(instanceKey, instanceJumps);
|
|
372
|
+
return instanceStateMap;
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Récupère la valeur d'une variable pour une instance spécifique
|
|
376
|
+
*/
|
|
377
|
+
getInstanceValue(variableCode, instanceNumber) {
|
|
378
|
+
// Essayer d'abord avec le suffixe d'instance
|
|
379
|
+
const instanceKey = `${variableCode}_${instanceNumber}`;
|
|
380
|
+
const instanceResponse = this.responses[instanceKey];
|
|
381
|
+
if (instanceResponse) {
|
|
382
|
+
return instanceResponse.valeur;
|
|
383
|
+
}
|
|
384
|
+
// Chercher par variableCode et numeroMembre
|
|
385
|
+
const responseByMembre = Object.values(this.responses).find(r => r.variableCode === variableCode && r.numeroMembre === instanceNumber);
|
|
386
|
+
if (responseByMembre) {
|
|
387
|
+
return responseByMembre.valeur;
|
|
388
|
+
}
|
|
389
|
+
return null;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Traite les conditions de jump pour une instance spécifique
|
|
393
|
+
*/
|
|
394
|
+
processJumpConditionForInstance(sourceState, groupeCode, condition, instanceNumber, instanceStateMap) {
|
|
395
|
+
const jumps = [];
|
|
396
|
+
this.log(`Processing jump condition for ${sourceState.variable.code} (instance ${instanceNumber}):`, condition);
|
|
397
|
+
// Parser tous les jumps dans la condition
|
|
398
|
+
const jumpPattern = /jump\s*\(\s*(.+?)\s*,\s*\$\{([A-Z_][A-Z0-9_]*)\}\s*\)/g;
|
|
399
|
+
let match;
|
|
400
|
+
while ((match = jumpPattern.exec(condition)) !== null) {
|
|
401
|
+
const innerCondition = match[1].trim();
|
|
402
|
+
const targetCode = match[2];
|
|
403
|
+
this.log(`Found jump: condition="${innerCondition}", target="${targetCode}" (instance ${instanceNumber})`);
|
|
404
|
+
// Valider que la cible existe dans le groupe
|
|
405
|
+
const targetState = instanceStateMap.get(targetCode);
|
|
406
|
+
if (!targetState) {
|
|
407
|
+
this.log(`Target "${targetCode}" not found in instance ${instanceNumber}`);
|
|
408
|
+
continue;
|
|
409
|
+
}
|
|
410
|
+
// Valider que c'est un jump vers l'avant
|
|
411
|
+
if (targetState.variable.ordre <= sourceState.variable.ordre) {
|
|
412
|
+
this.log(`Backward jump not allowed: ${sourceState.variable.code} -> ${targetCode}`);
|
|
413
|
+
continue;
|
|
414
|
+
}
|
|
415
|
+
// Évaluer la condition avec le contexte de l'instance
|
|
416
|
+
let shouldActivate = false;
|
|
417
|
+
try {
|
|
418
|
+
shouldActivate = this.conditionEngine.evaluate(innerCondition, instanceNumber);
|
|
419
|
+
this.log(`Jump condition evaluated to ${shouldActivate} for instance ${instanceNumber}`);
|
|
420
|
+
}
|
|
421
|
+
catch (e) {
|
|
422
|
+
this.log(`Error evaluating jump condition for instance ${instanceNumber}:`, e);
|
|
423
|
+
}
|
|
424
|
+
const jumpRange = {
|
|
425
|
+
sourceCode: sourceState.variable.code,
|
|
426
|
+
sourceOrdre: sourceState.variable.ordre,
|
|
427
|
+
targetCode: targetCode,
|
|
428
|
+
targetOrdre: targetState.variable.ordre,
|
|
429
|
+
groupeCode,
|
|
430
|
+
condition: innerCondition,
|
|
431
|
+
isActive: shouldActivate,
|
|
432
|
+
instanceNumber: instanceNumber
|
|
433
|
+
};
|
|
434
|
+
jumps.push(jumpRange);
|
|
435
|
+
this.log(`Jump range created for instance ${instanceNumber}:`, jumpRange);
|
|
436
|
+
}
|
|
437
|
+
return jumps;
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Évalue la partie non-jump d'une condition pour une instance spécifique
|
|
441
|
+
*/
|
|
442
|
+
evaluateNonJumpPartForInstance(condition, instanceNumber) {
|
|
443
|
+
// Retirer les appels jump() de la condition
|
|
444
|
+
const withoutJumps = condition
|
|
445
|
+
.replace(/jump\s*\([^)]*\)/g, 'true')
|
|
446
|
+
.replace(/\|\|\s*true/g, '')
|
|
447
|
+
.replace(/true\s*\|\|/g, '')
|
|
448
|
+
.replace(/&&\s*true/g, '')
|
|
449
|
+
.replace(/true\s*&&/g, '')
|
|
450
|
+
.trim();
|
|
451
|
+
if (!withoutJumps || withoutJumps === 'true') {
|
|
452
|
+
return true;
|
|
453
|
+
}
|
|
454
|
+
return this.conditionEngine.evaluate(withoutJumps, instanceNumber);
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Applique les jumps pour une instance spécifique
|
|
458
|
+
*/
|
|
459
|
+
applyInstanceJumpRanges(jumps, instanceStateMap) {
|
|
460
|
+
for (const jump of jumps) {
|
|
461
|
+
if (!jump.isActive)
|
|
462
|
+
continue;
|
|
463
|
+
this.log(`Applying jump for instance ${jump.instanceNumber}: ${jump.sourceCode} -> ${jump.targetCode}`);
|
|
464
|
+
// Marquer les variables entre source et cible comme "jumped over"
|
|
465
|
+
for (const [code, state] of instanceStateMap) {
|
|
466
|
+
const ordre = state.variable.ordre;
|
|
467
|
+
// Variables strictement entre source et cible (exclusif aux deux bornes)
|
|
468
|
+
if (ordre > jump.sourceOrdre && ordre < jump.targetOrdre) {
|
|
469
|
+
state.isJumpedOver = true;
|
|
470
|
+
state.skipValidation = true;
|
|
471
|
+
state.shouldClearOnSave = true;
|
|
472
|
+
this.log(`Variable ${code} marked as jumped over for instance ${jump.instanceNumber}`);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Retourne les jumps actifs pour une instance spécifique
|
|
479
|
+
*/
|
|
480
|
+
getActiveJumpsForInstance(groupeCode, instanceNumber) {
|
|
481
|
+
const instanceKey = `${groupeCode}_${instanceNumber}`;
|
|
482
|
+
const jumps = this.instanceJumpRanges.get(instanceKey);
|
|
483
|
+
return jumps ? jumps.filter(j => j.isActive) : [];
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Retourne les codes des variables sautées pour une instance spécifique
|
|
487
|
+
*/
|
|
488
|
+
getJumpedVariableCodesForInstance(groupeCode, instanceNumber) {
|
|
489
|
+
const codes = new Set();
|
|
490
|
+
const instanceKey = `${groupeCode}_${instanceNumber}`;
|
|
491
|
+
const instanceStateMap = this.instanceStates.get(instanceKey);
|
|
492
|
+
if (instanceStateMap) {
|
|
493
|
+
for (const [code, state] of instanceStateMap) {
|
|
494
|
+
if (state.isJumpedOver) {
|
|
495
|
+
codes.add(code);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
return codes;
|
|
500
|
+
}
|
|
278
501
|
getGroupState(groupeCode) {
|
|
279
502
|
return this.groupNodes.get(groupeCode);
|
|
280
503
|
}
|
|
@@ -62,6 +62,8 @@ export interface JumpRange {
|
|
|
62
62
|
condition: string;
|
|
63
63
|
/** Le jump est actuellement actif */
|
|
64
64
|
isActive: boolean;
|
|
65
|
+
/** Numéro d'instance pour les groupes multiples (undefined = groupe simple) */
|
|
66
|
+
instanceNumber?: number;
|
|
65
67
|
}
|
|
66
68
|
/**
|
|
67
69
|
* Erreur de jump pour notification
|
|
@@ -99,6 +101,13 @@ export interface IFormTree {
|
|
|
99
101
|
* @param groupeCode Code du groupe
|
|
100
102
|
*/
|
|
101
103
|
getVisibleVariables(groupeCode: string): VariableFormulaire[];
|
|
104
|
+
/**
|
|
105
|
+
* Retourne les variables visibles d'un groupe pour une instance spécifique
|
|
106
|
+
* Évalue les conditions et jumps dans le contexte de l'instance
|
|
107
|
+
* @param groupeCode Code du groupe
|
|
108
|
+
* @param instanceNumber Numéro de l'instance (1, 2, 3, ...)
|
|
109
|
+
*/
|
|
110
|
+
getVisibleVariablesForInstance(groupeCode: string, instanceNumber: number): VariableFormulaire[];
|
|
102
111
|
/**
|
|
103
112
|
* Retourne l'état d'un groupe
|
|
104
113
|
* @param groupeCode Code du groupe
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-tree.d.ts","sourceRoot":"","sources":["../../src/types/form-tree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEhG;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,QAAQ,EAAE,kBAAkB,CAAC;IAG7B,+EAA+E;IAC/E,SAAS,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,cAAc,EAAE,OAAO,CAAC;IAGxB,0BAA0B;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,mCAAmC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,cAAc,EAAE,OAAO,CAAC;IAGxB,qCAAqC;IACrC,YAAY,EAAE,aAAa,CAAC;IAC5B,uCAAuC;IACvC,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,MAAM,EAAE,gBAAgB,CAAC;IACzB,uCAAuC;IACvC,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAG/B,4BAA4B;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,UAAU,EAAE,OAAO,CAAC;IACpB,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAG3B,uDAAuD;IACvD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;CAC9C;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,QAAQ,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"form-tree.d.ts","sourceRoot":"","sources":["../../src/types/form-tree.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED