diff --git a/src/app/calculators/generic/calculator.component.ts b/src/app/calculators/generic/calculator.component.ts index abf9a9dc5633e1a2cffa9b5b8ce31f40244498a5..a2c79e282bb79dae85591074f7a2b90e30530c6a 100644 --- a/src/app/calculators/generic/calculator.component.ts +++ b/src/app/calculators/generic/calculator.component.ts @@ -520,7 +520,7 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, Observer { // affichage du journal for (let l of log.messages) - this.remousResultsComponent.addLogEntry(l.toString()); + this.remousResultsComponent.addLogEntry(l, nDigits); // affichage des resultats numériques diff --git a/src/app/calculators/remous/remous.fr.json b/src/app/calculators/remous/remous.fr.json index ad73abf681f5b5ed505b55f04f1524af4da0f847..e37d7b2863370ad2c8e0988d93ae4173822166fa 100644 --- a/src/app/calculators/remous/remous.fr.json +++ b/src/app/calculators/remous/remous.fr.json @@ -33,21 +33,21 @@ "fs_target_data": "Donnée à calculer", "select_target": "Choix de la donnée à calculer", "select_target_none": "Aucune", - "select_target_hs": "La charge spécifique (m)", - "select_target_hsc": "La charge critique (m)", - "select_target_b": "La largeur au miroir (m)", - "select_target_p": "Le périmètre mouillé (m)", - "select_target_s": "La surface mouillée (m2)", - "select_target_r": "Le rayon hydraulique (m)", - "select_target_v": "La vitesse moyenne (m/s)", - "select_target_fr": "Le Froude", - "select_target_yc": "Le tirant d'eau critique (m)", - "select_target_yn": "Le tirant d'eau normal (m)", - "select_target_yf": "Le tirant d'eau fluvial (m)", - "select_target_yt": "Le tirant d'eau torrentiel (m)", - "select_target_yco": "Le tirant d'eau conjugué (m)", - "select_target_j": "La perte de charge (m)", - "select_target_i_j": "Variation linéaire de l'énergie spécifique (m/m)", - "select_target_imp": "Impulsion (m/m)", - "select_target_tau0": "La force tractrice (N)" + "select_target_Hs": "La charge spécifique (m)", + "select_target_Hsc": "La charge critique (m)", + "select_target_B": "La largeur au miroir (m)", + "select_target_P": "Le périmètre mouillé (m)", + "select_target_S": "La surface mouillée (m2)", + "select_target_R": "Le rayon hydraulique (m)", + "select_target_V": "La vitesse moyenne (m/s)", + "select_target_Fr": "Le Froude", + "select_target_Yc": "Le tirant d'eau critique (m)", + "select_target_Yn": "Le tirant d'eau normal (m)", + "select_target_Yf": "Le tirant d'eau fluvial (m)", + "select_target_Yt": "Le tirant d'eau torrentiel (m)", + "select_target_Yco": "Le tirant d'eau conjugué (m)", + "select_target_J": "La perte de charge (m)", + "select_target_I-J": "Variation linéaire de l'énergie spécifique (m/m)", + "select_target_Imp": "Impulsion (m/m)", + "select_target_Tau0": "La force tractrice (N)" } \ No newline at end of file diff --git a/src/app/components/remous-results/remous-results.component.html b/src/app/components/remous-results/remous-results.component.html index 2f957c349600569c3eca148a1bcbf77713c451b8..3e2d8ad8178185727c07d6c0998a7afb93d0ea5c 100644 --- a/src/app/components/remous-results/remous-results.component.html +++ b/src/app/components/remous-results/remous-results.component.html @@ -15,7 +15,7 @@ </tr> </thead> <tr *ngFor="let r of _logEntries"> - <td>{{r}}</td> + <td align="left">{{r}}</td> </tr> </table> <br/> diff --git a/src/app/components/remous-results/remous-results.component.ts b/src/app/components/remous-results/remous-results.component.ts index 584950c685b781ae88d39f07af2129c1c9dd16cc..39d5cabea0eae1f9f21633029eeda96163716f8a 100644 --- a/src/app/components/remous-results/remous-results.component.ts +++ b/src/app/components/remous-results/remous-results.component.ts @@ -1,5 +1,9 @@ import { Component } from '@angular/core'; +import { ErrorMessage } from 'jalhyd'; + +import { InternationalisationService } from '../../services/internationalisation/internationalisation.service'; + @Component({ selector: 'remous-results', templateUrl: './remous-results.component.html', @@ -25,16 +29,6 @@ import { Component } from '@angular/core'; ] }) export class RemousResultsComponent { - // /** - // * tirant imposé à l'amont - // */ - // private _Yamont: number; - - // /** - // * tirant imposé à l'aval - // */ - // private _Yaval: number; - /** * pente du fond */ @@ -96,6 +90,9 @@ export class RemousResultsComponent { } }; + constructor(private intlService: InternationalisationService) { + } + public reset() { this._results = []; this._logEntries = []; @@ -175,18 +172,10 @@ export class RemousResultsComponent { this._results.push({ "abs": x, "flu": f, "tor": t }); } - public addLogEntry(s: string) { - this._logEntries.push(s); + public addLogEntry(m: ErrorMessage, nDigits: number) { + this._logEntries.push(this.intlService.localizeErrorMessage(m, nDigits)); } - // public setYamont(v: number) { - // this._Yamont = v; - // } - - // public setYaval(v: number) { - // this._Yaval = v; - // } - public setPenteFond(v: number) { this._penteFond = v; } diff --git a/src/app/services/internationalisation/internationalisation.service.ts b/src/app/services/internationalisation/internationalisation.service.ts index f17f03aa7e2de02c6ca607952f37aeaed39515c8..d76b6c925c1d3233922d2ee380b044d0a01f0244 100644 --- a/src/app/services/internationalisation/internationalisation.service.ts +++ b/src/app/services/internationalisation/internationalisation.service.ts @@ -132,12 +132,22 @@ export class InternationalisationService extends Observable { return str.replace(new RegExp(find, 'g'), replace); } - public localizeErrorMessage(r: ErrorMessage): string { + /** + * traduit un message + * @param r message + * @param nDigits nombre de chiffres à utiliser pour l'arrondi dans le cas de données numériques + */ + public localizeErrorMessage(r: ErrorMessage, nDigits: number = 3): string { let sCode: string = ErrorCode[r.code]; let m: string = this.getErrorMessageFromCode(r.code); for (let k in r.extraVar) { - m = this.replaceAll(m, "%" + k + "%", r.extraVar[k]); + let v: any = r.extraVar[k]; + if (typeof v === "number") + var s = v.toFixed(nDigits); + else + s = v; + m = this.replaceAll(m, "%" + k + "%", s); } return m; diff --git a/src/locale/error_messages.en.json b/src/locale/error_messages.en.json index aa3bdda4afcdd46a8dc761578e9200a6b18aea39..5c90d9e4bd1073a5e4a9b14dc857285584611990 100644 --- a/src/locale/error_messages.en.json +++ b/src/locale/error_messages.en.json @@ -16,5 +16,16 @@ "ERROR_PARAMDOMAIN_INVALID": "parameter '%symbol%' : non supported '%domain%' definition domain", "ERROR_INTERVAL_UNDEF": "Interval : invalid 'undefined' value", "ERROR_INTERVAL_OUTSIDE": "Interval : value %value% is outside of %interval", - "ERROR_LANG_UNSUPPORTED": "internationalisation : unsupported '%locale%' locale" + "ERROR_LANG_UNSUPPORTED": "internationalisation : unsupported '%locale%' locale", + "ERROR_REMOUS_ARRET_CRITIQUE": "Calculation stopped: critical elevation reached at abscissa %x%", + "ERROR_REMOUS_CALCUL_FLUVIAL": "Downstream boundary condition >= Critical elevation : calculation of subcritical part from downstream", + "ERROR_REMOUS_CALCUL_TORRENTIEL": "Uptream boundary condition <= Critical elevation : calculation of supercritical part from upstream", + "ERROR_REMOUS_RESSAUT_DEHORS": "Hydraulic jump detected %sens% abscissa %x% m", + "ERROR_REMOUS_LARGEUR_BERGE": "Width at embankment level = %B% m", + "ERROR_REMOUS_H_CRITIQUE": "Width at embankment level = %Yc% m", + "ERROR_REMOUS_H_NORMALE": "Normal water level = %Yn% m", + "ERROR_REMOUS_RESSAUT_HYDRO": "Hydraulic jump detected between abscissa %xmin% and %xmax% m", + "ERROR_REMOUS_PENTE_FORTE": "The water line slope is too steep at abscissa %x% m (the discretisation step should be reduced)", + "ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL": "Downstream boundary condition < Critical elevation : no possible calculation from downstream", + "ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT": "Upstream boundary condition < Critical elevation : no possible calculation from upstream" } \ No newline at end of file diff --git a/src/locale/error_messages.fr.json b/src/locale/error_messages.fr.json index 406d9f4371fbe96dbc22f77b21d3c6d3ea350252..a519d5beef39c46e50daf4d0b0c85de606658034 100644 --- a/src/locale/error_messages.fr.json +++ b/src/locale/error_messages.fr.json @@ -16,5 +16,16 @@ "ERROR_PARAMDOMAIN_INVALID": "Paramètre '%symbol%' : le domaine de définition '%domain%' est incorrect", "ERROR_INTERVAL_UNDEF": "Interval : valeur 'undefined' incorrecte", "ERROR_INTERVAL_OUTSIDE": "Interval : la valeur %value% est hors de l'intervalle %interval", - "ERROR_LANG_UNSUPPORTED": "internationalisation : locale '%locale%' non prise en charge" + "ERROR_LANG_UNSUPPORTED": "Internationalisation : locale '%locale%' non prise en charge", + "ERROR_REMOUS_ARRET_CRITIQUE": "Arrêt du calcul : hauteur critique atteinte à l'abscisse %x%", + "ERROR_REMOUS_CALCUL_FLUVIAL": "Condition limite aval >= Hauteur critique: calcul de la partie fluviale à partir de l'aval", + "ERROR_REMOUS_CALCUL_TORRENTIEL": "Condition limite amont <= Hauteur critique: calcul de la partie torrentielle à partir de l'amont", + "ERROR_REMOUS_RESSAUT_DEHORS": "Ressaut hydraulique détecté à l'%sens% de l'abscisse %x% m", + "ERROR_REMOUS_LARGEUR_BERGE": "Largeur au niveau des berges = %B% m", + "ERROR_REMOUS_H_CRITIQUE": "Tirant d'eau critique = %Yc% m", + "ERROR_REMOUS_H_NORMALE": "Tirant d'eau normal = %Yn% m", + "ERROR_REMOUS_RESSAUT_HYDRO": "Ressaut hydraulique détecté entre les abscisses %xmin% et %xmax% m", + "ERROR_REMOUS_PENTE_FORTE": "La pente de la ligne d'eau est trop forte à l'abscisse %x% m (il faudrait réduire le pas de discrétisation)", + "ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL": "Condition limite aval < Hauteur critique: pas de calcul possible depuis l'aval", + "ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT": "Condition limite amont > Hauteur critique : pas de calcul possible depuis l'amont" } \ No newline at end of file