-
David Dorchies authoredDavid Dorchies authored
calculator-list.component.ts 2.39 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;
}
}
}
});
}
// interface Observer
update(sender: any, data: any): void {
if (sender instanceof InternationalisationService) {
this.updateLocale();
}
}
// OnInit
ngOnInit() {
this.updateLocale();
}
}