diff --git a/src/app/formulaire/formulaire-definition.ts b/src/app/formulaire/formulaire-definition.ts index b47d429c9000fa5f01766d883f29f58fea8b5e6b..8b4ae86299051ae4d3b4cc160d5e414a0d0865a3 100644 --- a/src/app/formulaire/formulaire-definition.ts +++ b/src/app/formulaire/formulaire-definition.ts @@ -73,11 +73,27 @@ class AbstractFormulaireElementIterator<T extends FormulaireElement> { } } +/** + * itérateur qui extrait les FormulaireElement de 1er niveau dans un tableau de FormulaireElement + * (qui peut contenir des FieldsetContainer) + */ +class TopFormulaireElementIterator extends AbstractFormulaireElementIterator<FormulaireElement> implements IterableIterator<FormulaireElement> { + protected isDeepIterator(): boolean { + return false; + } + + // interface IterableIterator + + [Symbol.iterator](): IterableIterator<FormulaireElement> { + return this; + } +} + /** * itérateur qui extrait récursivement les FormulaireElement dans un tableau de FormulaireElement * (qui peut contenir des FieldsetContainer) */ -class FormulaireElementIterator extends AbstractFormulaireElementIterator<FormulaireElement> implements IterableIterator<FormulaireElement> { +class DeepFormulaireElementIterator extends AbstractFormulaireElementIterator<FormulaireElement> implements IterableIterator<FormulaireElement> { // interface IterableIterator [Symbol.iterator](): IterableIterator<FormulaireElement> { @@ -467,14 +483,10 @@ export class FormulaireDefinition extends Observable implements Observer { //, I } public getFormulaireElementById(id: string): FormulaireElement { - for (let fs of this.allFieldsets) { + for (let fs of this.allFormElements) if (fs.id == id) return fs; - for (let p of fs.fields) - if (p.id === id) - return p; - } return undefined; } @@ -1251,7 +1263,7 @@ export class FormulaireDefinition extends Observable implements Observer { //, I } public updateLocalisation(localisation: StringMap) { - for (let fe of this.allFormElements) + for (let fe of this.topFormElements) fe.updateLocalisation(localisation); if (this.hasResults) @@ -1293,7 +1305,11 @@ export class FormulaireDefinition extends Observable implements Observer { //, I return new DeepFieldsetIterator(this._formElements); } + private get topFormElements(): IterableIterator<FormulaireElement> { + return new TopFormulaireElementIterator(this._formElements); + } + private get allFormElements(): IterableIterator<FormulaireElement> { - return new FormulaireElementIterator(this._formElements); + return new DeepFormulaireElementIterator(this._formElements); } }