param-field-line.component.ts 9.24 KiB
import { Component, ViewChild, Input, Output, EventEmitter, OnChanges } from "@angular/core";
import { I18nService } from "../../services/internationalisation/internationalisation.service";
import { NgParameter, ParamRadioConfig } from "../../formulaire/ngparam";
import { NgParamInputComponent } from "../ngparam-input/ngparam-input.component";
import { ServiceFactory } from "../../services/service-factory";
import { ParamValueMode, CalculatorType, ParallelStructure } from "jalhyd";
import { FormulaireService } from "../../services/formulaire/formulaire.service";
import { ParamLinkComponent } from "../param-link/param-link.component";
import { ParamComputedComponent } from "../param-computed/param-computed.component";
import { ParamValuesComponent } from "../param-values/param-values.component";
/**
 * Sélecteur de mode pour chaque paramètre: fixé, varier, calculer, lié
@Component({
    selector: "param-field-line",
    templateUrl: "./param-field-line.component.html",
    styleUrls: [
        "./param-field-line.component.scss"
export class ParamFieldLineComponent implements OnChanges {
    constructor() {
        this.intlService = ServiceFactory.instance.i18nService;
        this._formService = ServiceFactory.instance.formulaireService;
        this.valid = new EventEmitter();
        this.inputChange = new EventEmitter();
    private get uitextParamFixe() {
        return this.intlService.localizeText("INFO_PARAMFIELD_PARAMFIXE");
    private get uitextParamVarier() {
        return this.intlService.localizeText("INFO_PARAMFIELD_PARAMVARIER");
    private get uitextParamCalculer() {
        return this.intlService.localizeText("INFO_PARAMFIELD_PARAMCALCULER");
    private get uitextParamLie() {
        return this.intlService.localizeText("INFO_PARAMFIELD_PARAMLIE");
    /**
     * Parameter symbol (Q, Ks, B, ...) input attribute
    private get symbol(): string {
        return this.param.symbol;
    // états des boutons pour l'interface
    private get radioFixCheck(): string {
        return this.isRadioFixChecked ? "checked" : undefined;
    private get radioVarCheck(): string {
        return this.isRadioVarChecked ? "checked" : undefined;
    private get radioCalCheck(): string {
        return this.isRadioCalChecked ? "checked" : undefined;
    private get radioLinkCheck(): string {
        return this.isRadioLinkChecked ? "checked" : undefined;
    // états booléens des boutons
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
public get isRadioFixChecked(): boolean { return this.param.radioState === ParamRadioConfig.FIX; } public get isRadioVarChecked(): boolean { return this.param.radioState === ParamRadioConfig.VAR; } public get isRadioCalChecked(): boolean { return this.param.radioState === ParamRadioConfig.CAL; } public get isRadioLinkChecked(): boolean { return this.param.radioState === ParamRadioConfig.LINK; } /** * validité des saisies du composant */ public get isValid(): boolean { switch (this.param.radioState) { case ParamRadioConfig.FIX: return this._isInputValid; case ParamRadioConfig.VAR: return this._isRangeValid; case ParamRadioConfig.LINK: // at first this._paramLinkComponent is undefined until view is refreshed return this._paramLinkComponent ? this._paramLinkComponent.isValid : true; default: return true; } } public get formHasResults(): boolean { return ServiceFactory.instance.formulaireService.currentFormHasResults; } @Input() public param: NgParameter; @ViewChild(NgParamInputComponent) private _ngParamInputComponent: NgParamInputComponent; @ViewChild(ParamComputedComponent) private _paramComputedComponent: ParamComputedComponent; @ViewChild(ParamValuesComponent) private _paramValuesComponent: ParamValuesComponent; @ViewChild(ParamLinkComponent) private _paramLinkComponent: ParamLinkComponent; @Output() private valid: EventEmitter<void>; @Output() private inputChange: EventEmitter<void>; /** true si la valeur saisie est valide */ private _isInputValid = false; /** true si le min-max/liste est valide */ private _isRangeValid = true; private intlService: I18nService; private _formService: FormulaireService; /*