diff --git a/src/app/components/generic-calculator/calc-name.component.ts b/src/app/components/generic-calculator/calc-name.component.ts index 208d11e9737a1484ac513de75271a67efc88c7fe..3de415d2ee7fd03474c43fe0ffd7768fdc644a7e 100644 --- a/src/app/components/generic-calculator/calc-name.component.ts +++ b/src/app/components/generic-calculator/calc-name.component.ts @@ -76,11 +76,4 @@ export class CalculatorNameComponent extends GenericInputComponent { return { isValid: valid, message: msg }; } - - /** - * convertit une valeur saisie dans l'UI en valeur affectable au modèle - */ - protected uiToModel(ui: string): any { - return ui; - } } diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts index 890d21a4a179cdd197a843ead0ab00dd3386dc58..c6c9afed11cfc800c2e839055946bb7332cf1bb9 100644 --- a/src/app/components/generic-calculator/calculator.component.ts +++ b/src/app/components/generic-calculator/calculator.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit, DoCheck, OnDestroy, ViewChild, ViewChildren, QueryList, AfterViewChecked } from "@angular/core"; import { ActivatedRoute, Router } from "@angular/router"; -import { Observer, Session, ParallelStructure } from "jalhyd"; +import { Observer, Session } from "jalhyd"; import { FormulaireService } from "../../services/formulaire/formulaire.service"; import { I18nService } from "../../services/internationalisation/internationalisation.service"; @@ -122,7 +122,7 @@ export class GenericCalculatorComponent extends BaseComponent implements OnInit, /** * détermine si un FormulaireElement est du type FieldsetContainer */ - private isFieldsetContainer(fe: any): boolean { + public isFieldsetContainer(fe: any): boolean { return fe instanceof FieldsetContainer; } @@ -164,9 +164,8 @@ export class GenericCalculatorComponent extends BaseComponent implements OnInit, } ngDoCheck() { - if (this._formulaire !== undefined) { - this.isCalculateDisabled = !(this._formulaire.isValid && this._isUIValid); - } + console.log(">>> UI validity", this._isUIValid); + this.isCalculateDisabled = ! this._isUIValid; } ngOnDestroy() { @@ -192,7 +191,7 @@ export class GenericCalculatorComponent extends BaseComponent implements OnInit, /* * gestion des événements clic sur les radios */ - private onRadioClick(info: any) { + public onRadioClick(info: any) { this.updateLinkedParameters(); this._pendingRadioClick = true; this._pendingRadioClickInfo = info; @@ -246,11 +245,6 @@ export class GenericCalculatorComponent extends BaseComponent implements OnInit, } } - private getFieldsetStyleDisplay(id: string) { - const isDisplayed: boolean = this._formulaire.isDisplayed(id); - return isDisplayed ? "block" : "none"; - } - private setForm(f: FormulaireDefinition) { if (this._formulaire !== undefined) { this._formulaire.removeObserver(this); @@ -313,11 +307,7 @@ export class GenericCalculatorComponent extends BaseComponent implements OnInit, // accumulator (valeur précédente du résultat) acc, // currentValue (élément courant dans le tableau) - fieldset, - // currentIndex (indice courant dans le tableau) - currIndex, - // array (tableau parcouru) - array + fieldset ) => { return acc && fieldset.isValid; } @@ -331,11 +321,7 @@ export class GenericCalculatorComponent extends BaseComponent implements OnInit, // accumulator (valeur précédente du résultat) acc, // currentValue (élément courant dans le tableau) - fieldsetContainer, - // currentIndex (indice courant dans le tableau) - currIndex, - // array (tableau parcouru) - array + fieldsetContainer ) => { return acc && fieldsetContainer.isValid; } @@ -344,27 +330,36 @@ export class GenericCalculatorComponent extends BaseComponent implements OnInit, } } + public getFieldsetStyleDisplay(id: string) { + const isDisplayed: boolean = this._formulaire.isDisplayed(id); + return isDisplayed ? "block" : "none"; + } + /** * réception d'un événement de validité d'un FieldSetComponent */ - private OnFieldsetValid() { + public OnFieldsetValid() { this.updateUIValidity(); } /** * réception d'un événement de validité d'un FieldsetContainerComponent */ - private onFieldsetContainerValid() { + public onFieldsetContainerValid() { this.updateUIValidity(); } /** * réception d'un événement de changement de valeur d'un input */ - private onInputChange() { + public onInputChange() { this._formulaire.resetResults([]); } + public openHelp() { + window.open("assets/docs-fr/calculators/" + this._formulaire.helpLink + "/", "_blank"); + } + /** * flag d'affichage du bouton d'aide */ @@ -375,10 +370,6 @@ export class GenericCalculatorComponent extends BaseComponent implements OnInit, return false; } - private openHelp() { - window.open("assets/docs-fr/calculators/" + this._formulaire.helpLink + "/", "_blank"); - } - public saveCalculator() { this.formulaireService.saveForm(this._formulaire); } diff --git a/src/app/components/generic-input/generic-input.component.ts b/src/app/components/generic-input/generic-input.component.ts index 8f9f2f7a2c0206d74fc1fdc39a76ed4e542cd7a1..213dfeeaa18e9e6579f6820fd9ab6968d9c082c3 100644 --- a/src/app/components/generic-input/generic-input.component.ts +++ b/src/app/components/generic-input/generic-input.component.ts @@ -204,7 +204,7 @@ export abstract class GenericInputComponent extends BaseComponent implements OnC * MAJ et validation de l'UI */ protected updateAndValidateUI() { - this._uiValue = this.modelToUI(this.getModelValue()); + this._uiValue = String(this.getModelValue()); this.validateUI(); } @@ -226,7 +226,7 @@ export abstract class GenericInputComponent extends BaseComponent implements OnC */ public updateModelFromUI() { if (this.validateUI()) { - this.setAndValidateModel(this, this.uiToModel(this._uiValue)); + this.setAndValidateModel(this, +this._uiValue); // cast UI value to Number } } @@ -270,13 +270,6 @@ export abstract class GenericInputComponent extends BaseComponent implements OnC */ protected abstract validateModelValue(v: any): { isValid: boolean, message: string }; - /** - * convertit le modèle en valeur affichable par l'UI - */ - protected modelToUI(v: any): string { - return String(v); - } - /** * valide une valeur saisie dans l'UI (forme de la saisie : est ce bien une date, un nombre, ...) * @param ui saisie à valider @@ -295,106 +288,4 @@ export abstract class GenericInputComponent extends BaseComponent implements OnC return { isValid: valid, message: msg }; } - - /** - * convertit une valeur saisie dans l'UI en valeur affectable au modèle - */ - protected uiToModel(ui: string): any { - return +ui; - } -} - -/* - * exemples d'utilisation de GenericInputComponent - */ - -/* -import { Component } from "@angular/core"; - -import { isNumeric, Message } from "jalhyd"; - -// exemple où le modèle est un type simple (number) - -@Component({ - selector: "test-input", - template: `<div class="md-form form-sm"> - <input type="text" id="form1" class="form-control" [disabled]="isDisabled" [(ngModel)]="uiValue"> - <label for="form1">{{title}}</label> - <small *ngIf="showError" class="text-danger">{{errorMessage}}</small> -</div>` -}) -export class TestInputComponent extends GenericInputComponent { - constructor() { - super(); - this._model = 0; - } - - protected getModelValue(): any { - return this._model; - } - - protected setModelValue(v: any) { - this._model = v; - } - - protected validateModelValue(v: any): { isValid: boolean, message: string } { - let msg = undefined; - let valid = false; - - if (v < 0) - msg = "La valeur n'est pas >= 0 "; - else - valid = true; - - return { isValid: valid, message: msg }; - } - - protected uiToModel(ui: string): any { - return +ui; - } -} - - -// exemple où le modèle est une classe dont on ne gère qu'un membre - -import { ParamDefinition } from "jalhyd"; - -@Component({ - selector: "test2-input", - template: `<div class="md-form form-sm"> - <input type="text" id="form1" class="form-control" [disabled]="isDisabled" [(ngModel)]="uiValue"> - <label for="form1">{{title}}</label> - <small *ngIf="showError" class="text-danger">{{errorMessage}}</small> -</div>` -}) -export class Test2InputComponent extends GenericInputComponent { - constructor() { - super(); - } - - // paramètre géré - private get _param(): ParamDefinition { - return this._model; - } - - protected getModelValue(): any { - return this._param.getValue(); - } - - protected setModelValue(v: any) { - this._param.setValue(v); - } - - protected validateModelValue(v: any): { isValid: boolean, message: string } { - let msg = undefined; - let valid = false; - - if (v < 0) - msg = "La valeur n'est pas >= 0 "; - else - valid = true; - - return { isValid: valid, message: msg }; - } } -/**/ diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts index e1d9f5433a88176548ee9c053157780103abd20b..4d14b15b7bdadc31e5a26e1c21d09b46d51d9d31 100644 --- a/src/app/formulaire/definition/form-definition.ts +++ b/src/app/formulaire/definition/form-definition.ts @@ -417,16 +417,6 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs return (<FormulaireElement>this.getFormulaireNodeById(id)).isDisplayed; } - public get isValid(): boolean { - let res = true; - for (const fs of this.allFieldsets) { - if (fs.isDisplayed) { - res = res && fs.isValid; - } - } - return res; - } - /** * gestion d'un clic sur les radios */ diff --git a/src/app/formulaire/field.ts b/src/app/formulaire/field.ts index c8d2f84b60290e67cbf9e3b570156758cb9a59ec..3bdbef3c0a504e0364f48ced8fffdaaebc1cccc1 100644 --- a/src/app/formulaire/field.ts +++ b/src/app/formulaire/field.ts @@ -4,7 +4,6 @@ import { Dependency } from "./dependency/dependency"; import { isNumber } from "util"; export abstract class Field extends FormulaireElement { - public abstract get isValid(); public abstract getValue(): any; public abstract setValue(sender: any, val: any): void; diff --git a/src/app/formulaire/fieldset.ts b/src/app/formulaire/fieldset.ts index 14e44ce415a4a929cbde4c0f393edc3d25a662dd..ffa32a38d50050e230430c5671c7e06bde31ee6e 100644 --- a/src/app/formulaire/fieldset.ts +++ b/src/app/formulaire/fieldset.ts @@ -74,18 +74,6 @@ export class FieldSet extends FormulaireElement implements Observer { } } - public get isValid(): boolean { - let res = true; - for (const f of this.kids) { - if (f instanceof Field) { - if (f.isDisplayed) { - res = res && f.isValid; - } - } - } - return res; - } - private parse_select(json: {}): SelectField { const res: SelectField = new SelectField(this); res.parseConfig(json); diff --git a/src/app/formulaire/select-field.ts b/src/app/formulaire/select-field.ts index df078bfbf1a912061129b46786d72cb03e331b7d..c60b4dd506e3f122f01716f8ca95055251ad80ea 100644 --- a/src/app/formulaire/select-field.ts +++ b/src/app/formulaire/select-field.ts @@ -51,10 +51,6 @@ export class SelectField extends Field { } } - public get isValid(): boolean { - return true; - } - public getLabel() { if (this._selectedEntry) { return this._selectedEntry.label;