diff --git a/src/app/app.module.ts b/src/app/app.module.ts index cfcff201e7195cdce8a7e160e887a09adde30477..3e8a34f29bde03236fd9e236b9b55c5498ad226d 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -121,6 +121,7 @@ import { LoadSessionURLComponent } from "./components/load-session-url/load-sess import { DialogShowMessageComponent } from "./components/dialog-show-message/dialog-show-message.component"; import { DialogConfirmLoadSessionURLComponent } from "./components/dialog-confirm-load-session-url/dialog-confirm-load-session-url.component"; import { StructureFieldsetContainerComponent } from "./components/structure-fieldset-container/structure-fieldset-container.component"; +import { BasinFieldsetContainerComponent } from "./components/basin-fieldset-container/basin-fieldset-container.component"; const appRoutes: Routes = [ { path: "list/search", component: CalculatorListComponent }, @@ -211,6 +212,7 @@ const appRoutes: Routes = [ FieldSetComponent, FieldsetContainerComponent, StructureFieldsetContainerComponent, + BasinFieldsetContainerComponent, FixedResultsComponent, FixedVarResultsComponent, FlexGtXxsShowHideDirective, diff --git a/src/app/calculators/pbbassin/en.json b/src/app/calculators/pbbassin/en.json index 6566e3fd828cb3b988499fd1881afb6acdbe7f6b..a0c025b65802fd3c6a7c419c30116897cf99ff7e 100644 --- a/src/app/calculators/pbbassin/en.json +++ b/src/app/calculators/pbbassin/en.json @@ -1,5 +1,6 @@ { - "fs_basin_params": "Basin parameters", + "basin_container": "Basins", + "fs_basin": "Basin parameters", "S": "Surface", "ZF": "Bottom elevation" diff --git a/src/app/calculators/pbbassin/fr.json b/src/app/calculators/pbbassin/fr.json index 71d54fd771d5d737f4d6e7267777f36fc1876358..29fe43624e0c3c1f9275e1f96ab56e55ed9c7b9f 100644 --- a/src/app/calculators/pbbassin/fr.json +++ b/src/app/calculators/pbbassin/fr.json @@ -1,5 +1,6 @@ { - "fs_basin_params": "Paramètres du bassin", + "basin_container": "Bassins", + "fs_basin": "Paramètres du bassin", "S": "Surface", "ZF": "Cote de fond" diff --git a/src/app/calculators/prebarrage/config.json b/src/app/calculators/prebarrage/config.json index 3474300cdb19deeb219ba7d619b6be49817c019c..7dada6df94c09621a3c55d9ba3475b3e2298a9f6 100644 --- a/src/app/calculators/prebarrage/config.json +++ b/src/app/calculators/prebarrage/config.json @@ -27,13 +27,21 @@ "type": "subform", "config": [ { - "id": "fs_basin_params", - "type": "fieldset", + "id": "fs_basin", + "type": "fieldset_template", + "calcType": "PbBassin", "fields": [ "S", "ZF" ] }, + { + "id": "basin_container", + "type": "template_container", + "templates": [ + "fs_basin" + ] + }, { "type": "options", "selectIds": [ ] diff --git a/src/app/components/basin-fieldset-container/basin-fieldset-container.component.ts b/src/app/components/basin-fieldset-container/basin-fieldset-container.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..2c6a93a7da56bcaf63f18f9e7633941b0212997f --- /dev/null +++ b/src/app/components/basin-fieldset-container/basin-fieldset-container.component.ts @@ -0,0 +1,19 @@ +import { Component } from "@angular/core"; + +import { I18nService } from "../../services/internationalisation.service"; +import { ApplicationSetupService } from "../../services/app-setup.service"; +import { FieldsetContainerComponent } from "../fieldset-container/fieldset-container.component"; + +@Component({ + selector: "basin-fieldset-container", + templateUrl: "../fieldset-container/fieldset-container.component.html", + styleUrls: [ + "../fieldset-container/fieldset-container.component.scss" + ] +}) +export class BasinFieldsetContainerComponent extends FieldsetContainerComponent { + + constructor(i18nService: I18nService, appSetupService: ApplicationSetupService) { + super(i18nService, appSetupService); + } +} diff --git a/src/app/components/fieldset-container/fieldset-container.component.ts b/src/app/components/fieldset-container/fieldset-container.component.ts index bbaa490daa60e74932c64014c58b454a0451cfea..1231b32eb239bd9ef8865050c82e0d3d885444f2 100644 --- a/src/app/components/fieldset-container/fieldset-container.component.ts +++ b/src/app/components/fieldset-container/fieldset-container.component.ts @@ -37,7 +37,7 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit { * liste des composants FieldSet enfants */ @ViewChildren(FieldSetComponent) - private _fieldsetComponents: QueryList<FieldSetComponent>; + protected _fieldsetComponents: QueryList<FieldSetComponent>; /** * flag de validité des FieldSet enfants @@ -86,7 +86,7 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit { this._container.addFromTemplate(0, after.indexAsKid()); } - private onFieldsetListChange() { + protected onFieldsetListChange() { } public ngAfterViewInit() { diff --git a/src/app/components/generic-calculator/calculator.component.html b/src/app/components/generic-calculator/calculator.component.html index b713123c1459587f626b3634f1020ca6e0d1b557..a61455db06fc8271a318e1955d57b18ba30bcfee 100644 --- a/src/app/components/generic-calculator/calculator.component.html +++ b/src/app/components/generic-calculator/calculator.component.html @@ -95,7 +95,8 @@ <div *ngIf="isPB" id="pb-form-container" [hidden]="! showPBInputData" fxFlex.gt-sm="1 0 400px" fxFlex.lt-md="1 0 500px" - fxFlex.lt-sm="1 0 300px"> + fxFlex.lt-sm="1 0 300px" + fxLayout="column"> <ng-template ngFor let-fe [ngForOf]="formElements"> <field-set *ngIf="isFieldset(fe)" @@ -109,6 +110,13 @@ (radio)=onRadioClick($event) (validChange)=onElementValid() (inputChange)=onInputChange($event) (tabPressed)="onTabPressed($event)"> </structure-fieldset-container> + + <basin-fieldset-container *ngIf="isBasinFieldsetContainer(fe)" + [style.display]="getElementStyleDisplay(fe.id)" [_container]=fe + (radio)=onRadioClick($event) (validChange)=onElementValid() + (inputChange)=onInputChange($event) (tabPressed)="onTabPressed($event)" + fxFlex="1 0 auto"> + </basin-fieldset-container> </ng-template> </div> diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts index c72aa6cbc2a48419d6bcc6107ce5214bf8e72282..e60c2a0bd124519ecf300e03ead3077f5734f03e 100644 --- a/src/app/components/generic-calculator/calculator.component.ts +++ b/src/app/components/generic-calculator/calculator.component.ts @@ -204,6 +204,7 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe if (fe instanceof FieldsetContainer) { switch (fe.getTemplate(0).calcTypeFromConfig) { case CalculatorType.Structure: + case CalculatorType.PbBassin: return false; default: @@ -221,6 +222,14 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe return false; } + /** détermine si un FormulaireElement est du type FieldsetContainer contenant des bassins */ + public isBasinFieldsetContainer(fe: any): boolean { + if( fe instanceof FieldsetContainer){ + return fe.getTemplate(0).calcTypeFromConfig === CalculatorType.PbBassin; + } + return false; + } + /** détermine si un FormulaireElement est du type PabTable */ public isPabTable(fe: any): boolean { return fe instanceof PabTable; diff --git a/src/app/formulaire/definition/form-prebarrage.ts b/src/app/formulaire/definition/form-prebarrage.ts index 993a72e8b5fe00c3daf93888ba338a5fa12c73e2..d642c498fa7616a38cda362fec0796b0b31f4bf4 100644 --- a/src/app/formulaire/definition/form-prebarrage.ts +++ b/src/app/formulaire/definition/form-prebarrage.ts @@ -143,6 +143,24 @@ export class FormulairePrebarrage extends FormulaireFixedVar { this.basinForm.preparseConfig(this.basinFormConfig); this.basinForm.parseConfig(this.basinFormConfig); ServiceFactory.formulaireService.updateFormulaireLocalisation(this.basinForm); + // add fieldsets for existing basins + if (node.parent.bassins.length > 0) { + for (const bassin of node.parent.bassins) { + for (const e of this.basinForm.allFormElements) { + if (e instanceof FieldsetContainer) { // @TODO manage many containers one day ? + e.addFromTemplate(0, undefined, bassin, { resetResults: false }); + } + } + } + } else { + // if there was no existing basin, add a default one + for (const e of this.basinForm.allFormElements) { + if (e instanceof FieldsetContainer) { + e.addFromTemplate(0, undefined, undefined, { resetResults: false }); + break; + } + } + } this.showFormElements(this.basinForm); } else if (node instanceof PbCloison) {