-
mathias.chouet authored
utilisation de l'injection tant que possible, plutôt que ServiceFactory simplification de HttpService fichier de configuration JSON pour ApplicationSetupService
mathias.chouet authoredutilisation de l'injection tant que possible, plutôt que ServiceFactory simplification de HttpService fichier de configuration JSON pour ApplicationSetupService
param.service.ts 3.36 KiB
import { ParamDomain, ParamDefinition, ParamDomainValue, ParamCalculability, Session, Props, Nub } from "jalhyd";
import { NgParameter } from "../../formulaire/ngparam";
import { Injectable } from "@angular/core";
import { InternationalisationService } from "../internationalisation/internationalisation.service";
import { ApplicationSetupService } from "../app-setup/app-setup.service";
import { FormulaireNode } from "../../formulaire/formulaire-node";
@Injectable()
export class ParamService {
constructor(
private internationalisationService: InternationalisationService,
private applicationSetupService: ApplicationSetupService
) { }
private get _intlService(): InternationalisationService {
return this.internationalisationService;
}
private get _appSetupService(): ApplicationSetupService {
return this.applicationSetupService;
}
private createAccuracyParameter(): ParamDefinition {
const d = new ParamDomain(ParamDomainValue.INTERVAL, 1e-10, 100);
const p = new ParamDefinition(null, "Pr", d, this._appSetupService.computePrecision);
p.calculability = ParamCalculability.FREE;
return p;
}
/**
*
* @param calcType crée un NgParameter n'appartenant pas à un ComputeNode
* @param symbol symbole du paramètre à créer
*/
public createParameter(symbol: string, parent: FormulaireNode): NgParameter {
let p: NgParameter;
if (symbol === "Pr") {
const prmDef: ParamDefinition = this.createAccuracyParameter();
p = new NgParameter(prmDef.clone(), parent);
p.confId = "Pr";
} else {
const dom = new ParamDomain(ParamDomainValue.POS_NULL);
p = new NgParameter(new ParamDefinition(null, symbol, dom), parent);
p.confId = symbol;
switch (symbol) {
case "Hs":
case "Hsc":
case "B":
case "P":
case "R":
case "Yc":
case "Yn":
case "Yf":
case "Yt":
case "Yco":
case "J":
p.unit = "m";
break;
case "S":
p.unit = "m2";
break;
case "V":
p.unit = "m/s";
break;
case "I-J":
p.unit = "m/m";
break;
case "Fr":
p.unit = "";
break;
case "Imp":
p.unit = "N";
break;
case "Tau0":
p.unit = "Pa";
break;
case "Pr":
break;
default:
throw new Error(`ParamService.createParameter() : symbole ${symbol} non pris en charge`);
}
p.updateLocalisation(this._intlService.currentMap);
}
return p;
}
public createNub(params: Props | {}): Nub {
const truc = Session.getInstance().createSessionNub(params);
return truc;
}
public replaceNub(sn: Nub, params: Props): Nub {
return Session.getInstance().replaceNub(sn, params);
}
public deleteNub(sn: Nub) {
Session.getInstance().deleteNub(sn);
}
}