diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts index b4a34d345034ab8df49e4fbddc5f6e25f97e8e89..146d1746a8b74f4ffbaf36e2655da910816a9d1f 100644 --- a/src/app/formulaire/definition/form-definition.ts +++ b/src/app/formulaire/definition/form-definition.ts @@ -117,6 +117,27 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs return this._props; } + public parseConfigToProps(): Props { + const res: Props = new Props(); + + const jp = new ConfigParser(this._jsonConfig); + for (const fs of jp.forAll("fieldset")) { + const fsp = new ConfigParser(fs["fields"]); + for (const sel of fsp.forAll("select")) { + const p = sel["property"]; + if (p !== undefined) { // if select has associated property + const v = sel["default"]; + if (v !== undefined) { // if select has a default value for associated property + const enumClass = Props.enumFromProperty[p]; + res.setPropValue(p, enumClass[v]); + } + } + } + } + + return res; + } + /** * Creates a Nub from the given properties, and associates it to the current form */ diff --git a/src/app/services/formulaire.service.ts b/src/app/services/formulaire.service.ts index 880741539bbb62d7a033a5dedc60ad76cc84eeaf..a32a1aec446448eb849d26fcddc3c5d77b81497f 100644 --- a/src/app/services/formulaire.service.ts +++ b/src/app/services/formulaire.service.ts @@ -371,7 +371,9 @@ export class FormulaireService extends Observable { if (nub) { f.currentNub = nub; } else { - f.initNub(); + const confProps = f.parseConfigToProps(); + confProps.setPropValue("calcType", ct); + f.initNub(confProps); } // Restaure le nom du module, sinon affecte le nom par défaut