calculator-list.component.ts 2.45 KiB
import { Component, OnInit } from "@angular/core";
import { Router } from "@angular/router";
import { CalculatorType, EnumEx } from "jalhyd";
import { FormulaireDefinition } from "../../formulaire/definition/form-definition";
import { ServiceFactory } from "../../services/service-factory";
import { InternationalisationService } from "../../services/internationalisation/internationalisation.service";
import { FormulaireParallelStructure } from "../../formulaire/definition/concrete/form-parallel-structures";
import { FieldsetContainer } from "../../formulaire/fieldset-container";
class ListElement {
    private _label: string;
    constructor(private _type: CalculatorType) {
        this._label = ServiceFactory.instance.formulaireService.getLocalisedTitleFromCalculatorType(_type);
    public get label() { return this._label; }
    public get type() { return this._type; }
@Component({
    selector: "list",
    templateUrl: "./calculator-list.component.html",
    styleUrls: ["./calculator-list.component.css"]
export class CalculatorListComponent implements OnInit {
    private _items: ListElement[];
    constructor(private router: Router) {
        ServiceFactory.instance.internationalisationService.addObserver(this);
    private updateLocale() {
        this._items = [];
        for (const t of EnumEx.getValues(CalculatorType)) {
            if (t !== CalculatorType.Structure) {
                this._items.push(new ListElement(t));
    private create(t: CalculatorType) {
        const p: Promise<FormulaireDefinition> = ServiceFactory.instance.formulaireService.createFormulaire(t);
        p.then(f => {
            this.router.navigate(["/calculator", f.uid]);
            return f;
        }).then(f => {
            // on ajoute un ouvrage après l'ouverture de la calculette "ouvrages parallèles"
            if (f instanceof FormulaireParallelStructure) {
                for (const e of f.allFormElements) {
                    if (e instanceof FieldsetContainer) {
                        e.addFromTemplate(0);
                        break;
        });
    public get items() {
        return this._items;
    // interface Observer
    update(sender: any, data: any): void {
        if (sender instanceof InternationalisationService) {
            this.updateLocale();
71727374757677787980
} } // OnInit ngOnInit() { this.updateLocale(); } }