Newer
Older
François Grand
committed
import { ServiceFactory } from "app/services/service-factory";
import { decodeHtml } from "app/util/util";
François Grand
committed
import { CalculatorType, FishPass, Session, Verificateur } from "jalhyd";
import { FormulaireElement } from "../formulaire-element";
import { FormulaireNode } from "../formulaire-node";
import { SelectEntry } from "./select-entry";
import { SelectField } from "./select-field";
/*
"id": "select_target_pass",
"type": "select_custom",
"source": "verificateur_target",
"messageWhenEmpty": "INFO_VERIF_CREATE_PASS_FRIST"
*/
// Vérificateur, passe cible (à vérifier)
export class SelectFieldTargetPass extends SelectField {
constructor(parent: FormulaireNode) {
super(parent);
this._messageWhenEmpty = "INFO_VERIF_CREATE_PASS_FRIST";
}
protected populate() {
const fs = ServiceFactory.formulaireService;
// find all Nubs of type FishPass
const candidateNubs: any[] = Session.getInstance().getAllNubs().filter((element) => {
return (
(element instanceof FishPass)
&& element.calcType !== CalculatorType.Par // ParSimulation extends Par @TODO find something better
);
});
for (const cn of candidateNubs) {
const nub = fs.getFormulaireFromId(cn.uid);
if (nub) {
const label = nub.calculatorName + " (" + fs.getLocalisedTitleFromCalculatorType(nub.calculatorType) + ")";
this.addEntry(this.createOrGetEntry(this._entriesBaseId + cn.uid, cn.uid, decodeHtml(label)));
François Grand
committed
} else {
// silent fail, this Verificateur nub was probably loaded before all the candidate nubs are done loading
}
}
}
protected initSelectedValue() {
const ntv = (this.nub as Verificateur).nubToVerify;
if (ntv !== undefined) {
this.setValueFromId(this._entriesBaseId + ntv.uid);
}
}
public updateLocalisation() {
// call grand parent updateLocalisation()
super.updateLocalisation(false);
François Grand
committed
}