import { Component, Input } from "@angular/core";
import { MatDialog } from "@angular/material";
import { NgParameter } from "../../formulaire/ngparam";
import { ParamCalculability, Structure } from "jalhyd";
import { DialogEditParamComputedComponent } from "../dialog-edit-param-computed/dialog-edit-param-computed.component";

@Component({
    selector: "param-computed",
    templateUrl: "./param-computed.component.html",
    styleUrls: [
        "./param-computed.component.scss"
    ]
})
export class ParamComputedComponent {

    @Input()
    public param: NgParameter;

    @Input()
    public title: string;

    /**
     * id de l'input, utilisé notamment pour les tests
     */
    public get inputId() {
        let id = "calc_" + this.param.symbol;
        // if inside a nested Structure, prefix with Structure position
        // to disambiguate
        const nub = this.param.paramDefinition.parentNub;
        if (nub && nub instanceof Structure) {
            id = nub.findPositionInParent() + "_" + id;
        }
        return id;
    }

    constructor(
        private editInitialValueDialog: MatDialog
    ) { }

    public get isDicho() {
        return this.param.paramDefinition.calculability === ParamCalculability.DICHO;
    }

    public get infoText() {
        return NgParameter.preview(this.param.paramDefinition);
    }

    public openDialog() {
        // modification de la valeur initiale, sans avoir à remettre le mode de
        // paramètre sur "fixé"
        this.editInitialValueDialog.open(
            DialogEditParamComputedComponent,
            {
                data: {
                    param: this.param
                }
            }
        );
    }
}