diff --git a/src/app/components/fieldset-container/fieldset-container.component.html b/src/app/components/fieldset-container/fieldset-container.component.html index 77049de3211f49d1a90556b80fa85a69339d1b74..02a21f76070d619c1504ecbc47f5190d18d2cb02 100644 --- a/src/app/components/fieldset-container/fieldset-container.component.html +++ b/src/app/components/fieldset-container/fieldset-container.component.html @@ -7,6 +7,12 @@ <mat-card-title> {{ title }} </mat-card-title> + <div class="card-container-right"> + <button type="button" *ngIf="enableAddStructureButton" mat-icon-button (click)="onAddStructureClick()" class="fsc-add-structure" + [title]="uitextAddStructure"> + <mat-icon>add_box</mat-icon> + </button> + </div> </mat-card-header> <mat-card-content> diff --git a/src/app/components/fieldset-container/fieldset-container.component.scss b/src/app/components/fieldset-container/fieldset-container.component.scss index 0a700234caabc6c4d63f888380d39b90d30fd07e..f89f5a9c73435a64781ba578db906579a9e997df 100644 --- a/src/app/components/fieldset-container/fieldset-container.component.scss +++ b/src/app/components/fieldset-container/fieldset-container.component.scss @@ -31,6 +31,11 @@ mat-card-header { font-size: 16px; margin-bottom: 8px; } + + // c'est tout pourri, mais bon... + .card-container-right { + margin-top: -10px; + } } mat-card-content { diff --git a/src/app/components/fieldset-container/fieldset-container.component.ts b/src/app/components/fieldset-container/fieldset-container.component.ts index c98450cdcb53236feb992f69304ac6e7f21b405b..b496bb944d7967124917b52c39e71d2906834ab1 100644 --- a/src/app/components/fieldset-container/fieldset-container.component.ts +++ b/src/app/components/fieldset-container/fieldset-container.component.ts @@ -188,6 +188,14 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit { this.addSubNub(evt.fs, evt.clone); } + /** + * clic sur le bouton "ajouter une structure" + */ + public onAddStructureClick() { + this._container.addFromTemplate(0, 0); + this.validChange.emit(); + } + /** * réception d'un événement de demande de suppression d'un FieldSet */ @@ -227,7 +235,15 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit { return this._container && this._container.helpLink; } + public get enableAddStructureButton() { + return this._container.getKids().length === 0; + } + public get uitextOpenHelp() { return this.i18nService.localizeText("INFO_CALCULATOR_OPEN_HELP"); } + + public get uitextAddStructure(): string { + return this.i18nService.localizeText("INFO_FIELDSET_ADD"); + } } diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts index 04726b0ab638d7f31beac242e29246992ef7174d..cd11ac0b4a7da0cb061d7e820bc49c963823a1ad 100644 --- a/src/app/components/generic-calculator/calculator.component.ts +++ b/src/app/components/generic-calculator/calculator.component.ts @@ -24,7 +24,8 @@ import { PreBarrage, PbCloison, Espece, - VariatedDetails + VariatedDetails, + ParallelStructure } from "jalhyd"; import { generateValuesCombination, getUnformattedIthResult, getUnformattedIthValue } from "../../util"; @@ -523,9 +524,20 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe if (this._pbSchemaComponent !== undefined) { res = res && this._pbSchemaComponent.isValid; } - if (this._formulaire.currentNub.calcType === CalculatorType.PreBarrage) { - const form: FormulairePrebarrage = this._formulaire as FormulairePrebarrage; - res = res && form.checkParameters().length === 0; + switch (this._formulaire.currentNub.calcType) { + case CalculatorType.PreBarrage: + const form: FormulairePrebarrage = this._formulaire as FormulairePrebarrage; + res = res && form.checkParameters().length === 0; + break; + + case CalculatorType.CloisonAval: + case CalculatorType.Cloisons: + case CalculatorType.PbCloison: + case CalculatorType.Dever: + // in case of parallel structures, check that child structures count > 0 + const pstr = this.formulaire.currentNub as ParallelStructure; + res = res && pstr.getChildren().length > 0; + break; } }