Skip to content
Snippets Groups Projects
Commit a2b4a06e authored by mathias.chouet's avatar mathias.chouet
Browse files

Fixed #29 in ResultsComponent.formattedValue

currently used only in FixedResults, VarResults, SectionResults
parent 38591e61
No related branches found
No related tags found
No related merge requests found
Pipeline #137555 passed
...@@ -4,10 +4,10 @@ import { FixedResults } from "../../results/fixed-results"; ...@@ -4,10 +4,10 @@ import { FixedResults } from "../../results/fixed-results";
import { NgParameter } from "../../formulaire/ngparam"; import { NgParameter } from "../../formulaire/ngparam";
import { CalculatorResults } from "../../results/calculator-results"; import { CalculatorResults } from "../../results/calculator-results";
import { I18nService } from "../../services/internationalisation/internationalisation.service"; import { I18nService } from "../../services/internationalisation/internationalisation.service";
import { ApplicationSetupService } from "../../services/app-setup/app-setup.service";
import * as XLSX from "xlsx"; import * as XLSX from "xlsx";
import { Structure } from "jalhyd"; import { Structure } from "jalhyd";
import { FormulaireService } from "../../services/formulaire/formulaire.service"; import { FormulaireService } from "../../services/formulaire/formulaire.service";
import { ResultsComponent } from "./results.component";
@Component({ @Component({
selector: "fixed-results", selector: "fixed-results",
...@@ -16,7 +16,7 @@ import { FormulaireService } from "../../services/formulaire/formulaire.service" ...@@ -16,7 +16,7 @@ import { FormulaireService } from "../../services/formulaire/formulaire.service"
"./fixed-results.component.scss" "./fixed-results.component.scss"
] ]
}) })
export class FixedResultsComponent { export class FixedResultsComponent extends ResultsComponent {
/** résultats non mis en forme */ /** résultats non mis en forme */
private _fixedResults: FixedResults; private _fixedResults: FixedResults;
...@@ -27,9 +27,10 @@ export class FixedResultsComponent { ...@@ -27,9 +27,10 @@ export class FixedResultsComponent {
constructor( constructor(
private intlService: I18nService, private intlService: I18nService,
private appSetupService: ApplicationSetupService,
private formService: FormulaireService private formService: FormulaireService
) { } ) {
super();
}
public set results(r: FixedResults) { public set results(r: FixedResults) {
this._fixedResults = r; this._fixedResults = r;
...@@ -63,11 +64,6 @@ export class FixedResultsComponent { ...@@ -63,11 +64,6 @@ export class FixedResultsComponent {
return CalculatorResults.paramLabel(p, false); return CalculatorResults.paramLabel(p, false);
} }
private formattedValue(p: NgParameter): string {
const nDigits = this.appSetupService.displayDigits;
return p.getValue().toFixed(nDigits);
}
/** /**
* Returns a set of parameters and results for mat-table * Returns a set of parameters and results for mat-table
*/ */
......
...@@ -7,9 +7,9 @@ import { ResultsGraphComponent } from "../results-graph/results-graph.component" ...@@ -7,9 +7,9 @@ import { ResultsGraphComponent } from "../results-graph/results-graph.component"
import { CalculatorResults } from "../../results/calculator-results"; import { CalculatorResults } from "../../results/calculator-results";
import { Result, cLog } from "jalhyd"; import { Result, cLog } from "jalhyd";
import { NgParameter } from "../../formulaire/ngparam"; import { NgParameter } from "../../formulaire/ngparam";
import { ApplicationSetupService } from "../../services/app-setup/app-setup.service";
import { FixedResultsComponent } from "./fixed-results.component"; import { FixedResultsComponent } from "./fixed-results.component";
import { VarResultsComponent } from "./var-results.component"; import { VarResultsComponent } from "./var-results.component";
import { ResultsComponent } from "./results.component";
@Component({ @Component({
selector: "fixedvar-results", selector: "fixedvar-results",
...@@ -18,7 +18,7 @@ import { VarResultsComponent } from "./var-results.component"; ...@@ -18,7 +18,7 @@ import { VarResultsComponent } from "./var-results.component";
"./fixedvar-results.component.scss" "./fixedvar-results.component.scss"
] ]
}) })
export class FixedVarResultsComponent implements DoCheck { export class FixedVarResultsComponent extends ResultsComponent implements DoCheck {
/** /**
* résultats non mis en forme * résultats non mis en forme
*/ */
...@@ -48,10 +48,6 @@ export class FixedVarResultsComponent implements DoCheck { ...@@ -48,10 +48,6 @@ export class FixedVarResultsComponent implements DoCheck {
@ViewChild(ResultsGraphComponent, { static: false }) @ViewChild(ResultsGraphComponent, { static: false })
private resultsGraphComponent: ResultsGraphComponent; private resultsGraphComponent: ResultsGraphComponent;
constructor(
private appSetupService: ApplicationSetupService,
) { }
public set results(rs: CalculatorResults[]) { public set results(rs: CalculatorResults[]) {
this._fixedResults = undefined; this._fixedResults = undefined;
this._varResults = undefined; this._varResults = undefined;
...@@ -183,11 +179,6 @@ export class FixedVarResultsComponent implements DoCheck { ...@@ -183,11 +179,6 @@ export class FixedVarResultsComponent implements DoCheck {
return CalculatorResults.paramLabel(p, false); return CalculatorResults.paramLabel(p, false);
} }
private formattedValue(p: NgParameter): string {
const nDigits = this.appSetupService.displayDigits;
return p.getValue().toFixed(nDigits);
}
public get varResults() { public get varResults() {
return this._varResults; return this._varResults;
} }
......
import * as screenfull from "screenfull"; import * as screenfull from "screenfull";
import { Screenfull } from "screenfull"; // @see https://github.com/sindresorhus/screenfull.js/issues/126#issuecomment-488796645 import { Screenfull } from "screenfull"; // @see https://github.com/sindresorhus/screenfull.js/issues/126#issuecomment-488796645
import { NgParameter } from "../../formulaire/ngparam";
import { ServiceFactory } from "../../services/service-factory";
/** /**
* Base class for results components, including common features * Base class for results components, including common features
*/ */
...@@ -52,4 +55,34 @@ export class ResultsComponent { ...@@ -52,4 +55,34 @@ export class ResultsComponent {
"#469990", // teal "#469990", // teal
]; ];
} }
/**
* Formats (rounds) the given number (or the value of the given parameter) with the
* number of decimals specified in app preferences; if given number is too low and
* more decimals would be needed, keep as much significative digits as the number of
* decimals specified in app preferences, except potential trailing zeroes
*
* ex. with 3 decimals:
* 1 => 1.000
* 65431 => 65431.000
* 0.002 => 0.002
* 0.00004521684 => 0.0000452
* 0.000001 => 0.000001
*/
protected formattedValue(p: NgParameter | number): string {
let originalValue: number;
if (p instanceof NgParameter) {
originalValue = p.getValue();
} else if (typeof p === "number") {
originalValue = p;
}
const nDigits = ServiceFactory.instance.applicationSetupService.displayDigits;
const minRenderableNumber = Number("1E-" + nDigits);
// if required precision is too low, avoid rendering only zeroes
if (originalValue < minRenderableNumber) {
return String(Number(originalValue.toPrecision(nDigits))); // double casting avoids trailing zeroes
} else {
return originalValue.toFixed(nDigits);
}
}
} }
...@@ -5,7 +5,6 @@ import { MatDialog } from "@angular/material"; ...@@ -5,7 +5,6 @@ import { MatDialog } from "@angular/material";
import * as XLSX from "xlsx"; import * as XLSX from "xlsx";
import { VarResults } from "../../results/var-results"; import { VarResults } from "../../results/var-results";
import { ApplicationSetupService } from "../../services/app-setup/app-setup.service";
import { ResultElement, Message, MessageSeverity } from "jalhyd"; import { ResultElement, Message, MessageSeverity } from "jalhyd";
import { I18nService } from "../../services/internationalisation/internationalisation.service"; import { I18nService } from "../../services/internationalisation/internationalisation.service";
import { ResultsComponent } from "./results.component"; import { ResultsComponent } from "./results.component";
...@@ -39,7 +38,6 @@ export class VarResultsComponent extends ResultsComponent { ...@@ -39,7 +38,6 @@ export class VarResultsComponent extends ResultsComponent {
table: ElementRef; table: ElementRef;
constructor( constructor(
protected appSetupService: ApplicationSetupService,
protected intlService: I18nService, protected intlService: I18nService,
protected logEntriesDetailsDialog: MatDialog protected logEntriesDetailsDialog: MatDialog
) { ) {
...@@ -53,8 +51,6 @@ export class VarResultsComponent extends ResultsComponent { ...@@ -53,8 +51,6 @@ export class VarResultsComponent extends ResultsComponent {
this._headers = []; this._headers = [];
this._messages = []; this._messages = [];
const nDigits = this.appSetupService.displayDigits;
if (this._varResults) { if (this._varResults) {
const sn = this._varResults.result.sourceNub; const sn = this._varResults.result.sourceNub;
// A. gather messages // A. gather messages
...@@ -87,7 +83,7 @@ export class VarResultsComponent extends ResultsComponent { ...@@ -87,7 +83,7 @@ export class VarResultsComponent extends ResultsComponent {
const iter = v.getExtendedValuesIterator(this.size); const iter = v.getExtendedValuesIterator(this.size);
while (iter.hasNext) { while (iter.hasNext) {
const nv = iter.next(); const nv = iter.next();
vv.push(nv.value.toFixed(nDigits)); vv.push(this.formattedValue(nv.value));
} }
varValues.push(vv); varValues.push(vv);
} }
......
...@@ -4,7 +4,6 @@ import { ResultElement } from "jalhyd"; ...@@ -4,7 +4,6 @@ import { ResultElement } from "jalhyd";
import { SectionCanvasComponent } from "../section-canvas/section-canvas.component"; import { SectionCanvasComponent } from "../section-canvas/section-canvas.component";
import { SectionResults } from "../../results/section-results"; import { SectionResults } from "../../results/section-results";
import { ApplicationSetupService } from "../../services/app-setup/app-setup.service";
import { CalculatorResults } from "../../results/calculator-results"; import { CalculatorResults } from "../../results/calculator-results";
import { ResultsComponent } from "../fixedvar-results/results.component"; import { ResultsComponent } from "../fixedvar-results/results.component";
import { I18nService } from "../../services/internationalisation/internationalisation.service"; import { I18nService } from "../../services/internationalisation/internationalisation.service";
...@@ -19,7 +18,6 @@ import { I18nService } from "../../services/internationalisation/internationalis ...@@ -19,7 +18,6 @@ import { I18nService } from "../../services/internationalisation/internationalis
export class SectionResultsComponent extends ResultsComponent implements DoCheck { export class SectionResultsComponent extends ResultsComponent implements DoCheck {
constructor( constructor(
private appSetupService: ApplicationSetupService,
private intlService: I18nService private intlService: I18nService
) { ) {
super(); super();
...@@ -100,7 +98,6 @@ export class SectionResultsComponent extends ResultsComponent implements DoCheck ...@@ -100,7 +98,6 @@ export class SectionResultsComponent extends ResultsComponent implements DoCheck
private updateResults() { private updateResults() {
if (this._results && this._sectionCanvas) { if (this._results && this._sectionCanvas) {
const nDigits = this.appSetupService.displayDigits;
this._resultElement = new ResultElement(); this._resultElement = new ResultElement();
...@@ -113,7 +110,7 @@ export class SectionResultsComponent extends ResultsComponent implements DoCheck ...@@ -113,7 +110,7 @@ export class SectionResultsComponent extends ResultsComponent implements DoCheck
this._resultElement.addExtraResult(lbl, er); this._resultElement.addExtraResult(lbl, er);
if (this.isSectionLevel(k)) { if (this.isSectionLevel(k)) {
this._sectionCanvas.addLevel(er, k + " = " + er.toFixed(nDigits), SectionResultsComponent.labelColors[k]); this._sectionCanvas.addLevel(er, k + " = " + this.formattedValue(er), SectionResultsComponent.labelColors[k]);
} }
} }
} }
......
...@@ -153,7 +153,6 @@ export class I18nService extends Observable implements Observer { ...@@ -153,7 +153,6 @@ export class I18nService extends Observable implements Observer {
* @param nDigits nombre de chiffres à utiliser pour l'arrondi dans le cas de données numériques * @param nDigits nombre de chiffres à utiliser pour l'arrondi dans le cas de données numériques
*/ */
public localizeMessage(r: Message, nDigits: number = 3): string { public localizeMessage(r: Message, nDigits: number = 3): string {
const sCode: string = MessageCode[r.code];
let m: string = this.getMessageFromCode(r.code); let m: string = this.getMessageFromCode(r.code);
for (const k in r.extraVar) { for (const k in r.extraVar) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment