diff --git a/e2e/calc-all-examples.e2e-spec.ts b/e2e/calc-all-examples.e2e-spec.ts index 31a63bbabd460eb3642394a59963e16ac00ee999..7f6fbc861bc4964c8be5bb0630e853113643238d 100644 --- a/e2e/calc-all-examples.e2e-spec.ts +++ b/e2e/calc-all-examples.e2e-spec.ts @@ -6,7 +6,7 @@ import { browser, by, element } from "protractor"; /** * Calculate all modules of all examples */ -describe("ngHyd − calculate all modules of all examples −", async () => { +describe("ngHyd − example sessions −", async () => { let listPage: ListPage; let calcPage: CalculatorPage; diff --git a/e2e/calculator.po.ts b/e2e/calculator.po.ts index 1edff79f83ad3391330cd1fa6f4453999dd5a94b..2639f2077eac7d2b9d11d01ad144ae54d469a062 100644 --- a/e2e/calculator.po.ts +++ b/e2e/calculator.po.ts @@ -125,6 +125,8 @@ export class CalculatorPage { || await element(by.css("fixedvar-results results-chart > chart-results-container")).isPresent() || + await element(by.css("section-results fixed-results > .fixed-results-container")).isPresent() + || await element(by.css("remous-results #main-chart")).isPresent() || await element(by.css("pab-results pab-results-table")).isPresent() diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 6e9d00408e7ba62eef4f6dd13067a99dd84bfcb1..2fb9161a8d7d5fd97aa930b629aaa308dd7ba520 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -72,6 +72,7 @@ import { SectionCanvasComponent } from "./components/section-canvas/section-canv import { RemousResultsComponent } from "./components/remous-results/remous-results.component"; import { ResultsChartComponent } from "./components/results-chart/results-chart.component"; import { PabResultsComponent } from "./components/pab-results/pab-results.component"; +import { VerificateurResultsComponent } from "./components/verificateur-results/verificateur-results.component"; import { PabResultsTableComponent } from "./components/pab-results/pab-results-table.component"; import { ChartTypeSelectComponent } from "./components/results-chart/chart-type.component"; import { LogComponent } from "./components/log/log.component"; @@ -215,6 +216,7 @@ const appRoutes: Routes = [ NgParamInputComponent, PabProfileChartComponent, PabResultsComponent, + VerificateurResultsComponent, PabResultsTableComponent, PabTableComponent, VariableResultsSelectorComponent, diff --git a/src/app/components/calculator-results/calculator-results.component.html b/src/app/components/calculator-results/calculator-results.component.html index e15f90423460d877543169dc7b5081eb4446e809..319b3eab39c1483dc3b8c646ce2e2c7e040d63be 100644 --- a/src/app/components/calculator-results/calculator-results.component.html +++ b/src/app/components/calculator-results/calculator-results.component.html @@ -1,8 +1,9 @@ <div> - <section-results></section-results> - <remous-results></remous-results> - <pab-results></pab-results> - <macrorugo-compound-results></macrorugo-compound-results> - <jet-results></jet-results> - <fixedvar-results></fixedvar-results> + <section-results [hidden]="! isSP"></section-results> + <remous-results [hidden]="! isRemous"></remous-results> + <pab-results [hidden]="! isPAB"></pab-results> + <verificateur-results [hidden]="! isVerificateur"></verificateur-results> + <macrorugo-compound-results [hidden]="! isMRC"></macrorugo-compound-results> + <jet-results [hidden]="! isJet"></jet-results> + <fixedvar-results [hidden]="! showGenericResults"></fixedvar-results> </div> diff --git a/src/app/components/calculator-results/calculator-results.component.ts b/src/app/components/calculator-results/calculator-results.component.ts index 133296818a2482eb22bfc51a1d02da28a7601fa9..09df29e7e62c915bb3094b2de1d5c0932c39d192 100644 --- a/src/app/components/calculator-results/calculator-results.component.ts +++ b/src/app/components/calculator-results/calculator-results.component.ts @@ -8,6 +8,9 @@ import { MacrorugoCompoundResultsComponent } from "../macrorugo-compound-results import { FormulaireDefinition } from "../../formulaire/definition/form-definition"; import { JetResultsComponent } from "../jet-results/jet-results.component"; import { GenericCalculatorComponent } from "../generic-calculator/calculator.component"; +import { VerificateurResultsComponent } from "../verificateur-results/verificateur-results.component"; + +import { CalculatorType } from 'jalhyd'; @Component({ selector: "calc-results", @@ -41,6 +44,12 @@ export class CalculatorResultsComponent implements AfterViewChecked { @ViewChild(PabResultsComponent, { static: true }) private pabResultsComponent: PabResultsComponent; + /** + * composant d'affichage des résultats des vérificateurs de critères de franchissement + */ + @ViewChild(VerificateurResultsComponent, { static: true }) + private verificateurResultsComponent: VerificateurResultsComponent; + /** * composant d'affichage des résultats des passes à macrorugosités complexes */ @@ -63,45 +72,75 @@ export class CalculatorResultsComponent implements AfterViewChecked { @Inject(forwardRef(() => GenericCalculatorComponent)) private calculatorComponent: GenericCalculatorComponent ) { } + // @TODO this system is sh*tty ! public set formulaire(f: FormulaireDefinition) { this._formulaire = f; if (this._formulaire === undefined) { this.fixedVarResultsComponent.results = undefined; - this.sectionResultsComponent.results = undefined; - this.remousResultsComponent.results = undefined; - this.pabResultsComponent.results = undefined; - this.mrcResultsComponent.results = undefined; this.jetResultsComponent.results = undefined; + this.mrcResultsComponent.results = undefined; + this.pabResultsComponent.results = undefined; + this.remousResultsComponent.results = undefined; + this.sectionResultsComponent.results = undefined; + this.verificateurResultsComponent.results = undefined; } else { - this.sectionResultsComponent.results = f.results; - this.remousResultsComponent.results = f.results; - this.pabResultsComponent.results = f.results; - this.mrcResultsComponent.results = f.results; - // FixedVar and Jet are mutually incompatible (the 2nd extend the 1st) - if (this.isJet) { - this.jetResultsComponent.results = f.results; - this.fixedVarResultsComponent.results = undefined; - } else { - this.fixedVarResultsComponent.results = f.results; - this.jetResultsComponent.results = undefined; - } + if (this.showGenericResults) this.fixedVarResultsComponent.results = f.results; + if (this.isJet) this.jetResultsComponent.results = f.results; + if (this.isMRC) this.mrcResultsComponent.results = f.results; + if (this.isPAB) this.pabResultsComponent.results = f.results; + if (this.isRemous) this.remousResultsComponent.results = f.results; + if (this.isSP) this.sectionResultsComponent.results = f.results; + if (this.isVerificateur) this.verificateurResultsComponent.results = f.results; } } public updateView() { - this.fixedVarResultsComponent.updateView(); - this.sectionResultsComponent.updateView(); - this.remousResultsComponent.updateView(); - this.pabResultsComponent.updateView(); - this.mrcResultsComponent.updateView(); - this.jetResultsComponent.updateView(); + if (this.showGenericResults) this.fixedVarResultsComponent.updateView(); + if (this.isJet) this.jetResultsComponent.updateView(); + if (this.isMRC) this.mrcResultsComponent.updateView(); + if (this.isPAB) this.pabResultsComponent.updateView(); + if (this.isRemous) this.remousResultsComponent.updateView(); + if (this.isSP) this.sectionResultsComponent.updateView(); + if (this.isVerificateur) this.verificateurResultsComponent.updateView(); } public ngAfterViewChecked() { this.afterViewChecked.emit(); } - public get isJet() { + /** Should we show the default FixedVarResultsComponent ? */ + public get showGenericResults(): boolean { + return ( + ! this.isJet + && ! this.isMRC + && ! this.isPAB + && ! this.isRemous + && ! this.isSP + && ! this.isVerificateur + ) + } + + public get isJet(): boolean { return this.calculatorComponent.isJet; } + + public get isMRC(): boolean { + return this.calculatorComponent.isMRC; + } + + public get isPAB(): boolean { + return this.calculatorComponent.isPAB; + } + + public get isRemous(): boolean { + return this.calculatorComponent.is(CalculatorType.CourbeRemous); + } + + public get isSP(): boolean { + return this.calculatorComponent.is(CalculatorType.SectionParametree); + } + + public get isVerificateur(): boolean { + return this.calculatorComponent.is(CalculatorType.Verificateur); + } } diff --git a/src/app/components/fixedvar-results/results.component.ts b/src/app/components/fixedvar-results/results.component.ts index e1829e929bf3b587e1d41e3859b592e12931034a..550cff912523cb20d45f9f8b4e1270a72abc2c5b 100644 --- a/src/app/components/fixedvar-results/results.component.ts +++ b/src/app/components/fixedvar-results/results.component.ts @@ -15,10 +15,6 @@ export class ResultsComponentDirective { /** max number of decimals for auto-adjusting charts axis graduations */ public static CHARTS_AXIS_PRECISION = 10; - public constructor() { - const sf = <Screenfull>screenfull; - } - /** tracks the fullscreen state */ public get isFullscreen() { const sf = <Screenfull>screenfull; diff --git a/src/app/components/jet-results/jet-results.component.ts b/src/app/components/jet-results/jet-results.component.ts index 50d8a1a1df5782adedfe615da6cd47490d1ebdd3..28ecd927c82025e52b4fcaf2434321d33b12dbed 100644 --- a/src/app/components/jet-results/jet-results.component.ts +++ b/src/app/components/jet-results/jet-results.component.ts @@ -46,8 +46,7 @@ export class JetResultsComponent extends FixedVarResultsComponent { protected updateResults() { const superUpdated = super.updateResults(); - let trajectoryChartUpdated: boolean; - trajectoryChartUpdated = this.jetTrajectoryChartComponent !== undefined; + let trajectoryChartUpdated = this.jetTrajectoryChartComponent !== undefined; if (trajectoryChartUpdated) { // draw chart whether params are variating or not, diff --git a/src/app/components/pab-results/pab-results.component.ts b/src/app/components/pab-results/pab-results.component.ts index fe282c196d568946b38992b4ee82ab2d97d5e6d1..79551c24dc0ff2267f69f7a762ec763b23038ab1 100644 --- a/src/app/components/pab-results/pab-results.component.ts +++ b/src/app/components/pab-results/pab-results.component.ts @@ -66,7 +66,7 @@ export class PabResultsComponent implements DoCheck { /** * update results table and chart when the variable index changed (event sent by - * PabVariableResultsSelectorComponent); variable index is already set in + * VariableResultsSelectorComponent); variable index is already set in * pabResults at this time */ public variableIndexChanged() { diff --git a/src/app/components/remous-results/remous-results.component.ts b/src/app/components/remous-results/remous-results.component.ts index 1e2f8d7b3a53006a9fcac2fbe0ce2b47308faa8e..db14a54ceea12f5b03ac76e54b617cb3c10e8114 100644 --- a/src/app/components/remous-results/remous-results.component.ts +++ b/src/app/components/remous-results/remous-results.component.ts @@ -141,11 +141,6 @@ export class RemousResultsComponent extends ResultsComponentDirective implements return this._tableHeaders; } - public getResultClass(i: number) { - // tslint:disable-next-line:no-bitwise - return "result_id_" + String(i & 1); - } - public get hasResults(): boolean { return this._remousResults !== undefined && this._remousResults.hasResults; } diff --git a/src/app/components/section-results/section-results.component.html b/src/app/components/section-results/section-results.component.html index 04625e227ea5500494aa68bd6cb751036bd43063..7911644b140405c606fc05710576ebee9d6d1a4d 100644 --- a/src/app/components/section-results/section-results.component.html +++ b/src/app/components/section-results/section-results.component.html @@ -1,4 +1,5 @@ <div class="section-results-container" #sectionResults *ngIf="hasResults" fxLayout="row wrap" fxLayoutAlign="center center"> + <div fxFlex="1 1 100%"> <div class="section-results-buttons"> <button mat-icon-button (click)="exportAsImage(sectionResults)" [title]="uitextExportImageTitle"> @@ -18,3 +19,21 @@ </div> </div> </div> + +<div class="container"> + <!-- journal --> + <log></log> + + <results-chart *ngIf="showVarResults"></results-chart> + <!--<results-chart [hidden]="! showVarResultsChart"></results-chart>--> + + <div> + <!-- table des résultats fixés --> + <fixed-results [results]=fixedResults></fixed-results> + + <!-- table des résultats variés --> + <div *ngIf="showVarResults"> + <var-results [results]=varResults></var-results> + </div> + </div> +</div> diff --git a/src/app/components/section-results/section-results.component.ts b/src/app/components/section-results/section-results.component.ts index 130f45e7fd1453246ee8684820806e49dd814b4e..ea10156d3edb37c321ccaf3f598c7e9523c74cb5 100644 --- a/src/app/components/section-results/section-results.component.ts +++ b/src/app/components/section-results/section-results.component.ts @@ -5,9 +5,9 @@ import { ResultElement } from "jalhyd"; import { SectionCanvasComponent } from "../section-canvas/section-canvas.component"; import { SectionResults } from "../../results/section-results"; import { CalculatorResults } from "../../results/calculator-results"; -import { ResultsComponentDirective } from "../fixedvar-results/results.component"; import { I18nService } from "../../services/internationalisation.service"; import { AppComponent } from "../../app.component"; +import { FixedVarResultsComponent } from '../fixedvar-results/fixedvar-results.component'; @Component({ selector: "section-results", @@ -16,7 +16,7 @@ import { AppComponent } from "../../app.component"; "./section-results.component.scss" ] }) -export class SectionResultsComponent extends ResultsComponentDirective implements DoCheck { +export class SectionResultsComponent extends FixedVarResultsComponent implements DoCheck { constructor( private intlService: I18nService, @@ -26,6 +26,7 @@ export class SectionResultsComponent extends ResultsComponentDirective implement } public set results(rs: CalculatorResults[]) { + super.results = rs; this._resultElement = undefined; this._results = undefined; if (rs) { @@ -68,28 +69,17 @@ export class SectionResultsComponent extends ResultsComponentDirective implement */ private _resultElement: ResultElement; - private _doUpdate = false; - @ViewChild(SectionCanvasComponent) - private _sectionCanvas: SectionCanvasComponent; + private _sectionCanvasComponent: SectionCanvasComponent; public updateView() { - if (this._sectionCanvas) { - this._sectionCanvas.reset(); + if (this._sectionCanvasComponent) { + this._sectionCanvasComponent.reset(); } - if (this._results) { this._doUpdate = this._results.hasResults; } - } - - /** - * appelé pour gérer les changements non détectés par Angular - */ - public ngDoCheck() { - if (this._doUpdate) { - this._doUpdate = !this.updateResults(); - } + super.updateView(); } private isSectionLevel(s: string) { @@ -101,17 +91,18 @@ export class SectionResultsComponent extends ResultsComponentDirective implement return false; } - private updateResults() { - if (this._results && this._sectionCanvas) { + protected updateResults() { + const superUpdated = super.updateResults(); + if (this._results && this._sectionCanvasComponent !== undefined) { this._resultElement = new ResultElement(); // compute canvas optimal size the first time - if (this._sectionCanvas.originalSize === undefined) { + if (this._sectionCanvasComponent.originalSize === undefined) { const container = this.element.nativeElement.querySelector(".section-results-container"); const size = Math.min(container.offsetWidth, container.offsetHeight); - this._sectionCanvas.originalSize = size - 17; // 417 - 17 = 400 - this._sectionCanvas.size = this._sectionCanvas.originalSize; + this._sectionCanvasComponent.originalSize = size - 17; // 417 - 17 = 400 + this._sectionCanvasComponent.size = this._sectionCanvasComponent.originalSize; } // traduction des symboles des variables calculées @@ -123,30 +114,25 @@ export class SectionResultsComponent extends ResultsComponentDirective implement this._resultElement.addExtraResult(lbl, er); if (this.isSectionLevel(k)) { - this._sectionCanvas.addLevel(er, k + " = " + this.formattedValue(er), SectionResultsComponent.labelColors[k]); + this._sectionCanvasComponent.addLevel(er, k + " = " + this.formattedValue(er), SectionResultsComponent.labelColors[k]); } } } // ajout du tirant d'eau saisi const valY = this._results.result.sourceNub.getParameter("Y").singleValue; - this._sectionCanvas.addLevel(valY, "Y = " + this.formattedValue(valY), SectionResultsComponent.labelColors["Y"]); + this._sectionCanvasComponent.addLevel(valY, "Y = " + this.formattedValue(valY), SectionResultsComponent.labelColors["Y"]); // wait just a little to draw, in case this._sectionCanvas.size was changed above (1st run) setTimeout(() => { if (this._results && this._results.section) { - this._sectionCanvas.section = this._results.section; + this._sectionCanvasComponent.section = this._results.section; } }, 100); - - return true; } - return false; - } - public getResultClass(i: number) { - // tslint:disable-next-line:no-bitwise - return "result_id_" + String(i & 1); + let canvasUpdated = (! this.hasResults || this._sectionCanvasComponent !== undefined); + return superUpdated && canvasUpdated; } public exportAsImage(element: HTMLDivElement) { @@ -155,10 +141,10 @@ export class SectionResultsComponent extends ResultsComponentDirective implement /** redraw canvas on fullscreen state change (scale drawing) */ public fullscreenChange(isFullscreen: boolean) { - this._sectionCanvas.size = this.getContainerSize(! isFullscreen); - this.previousContainerSize = this._sectionCanvas.size; + this._sectionCanvasComponent.size = this.getContainerSize(! isFullscreen); + this.previousContainerSize = this._sectionCanvasComponent.size; setTimeout(() => { - this._sectionCanvas.draw(); + this._sectionCanvasComponent.draw(); }, 100); } @@ -173,7 +159,7 @@ export class SectionResultsComponent extends ResultsComponentDirective implement // when going back from fullscreen mode, container size tends to be // too high for whatever reason; use originalSize on this purpose if (useOriginalSize) { - size = Math.min(size, this._sectionCanvas.originalSize); + size = Math.min(size, this._sectionCanvasComponent.originalSize); } return size; } diff --git a/src/app/components/verificateur-results/verificateur-results.component.html b/src/app/components/verificateur-results/verificateur-results.component.html new file mode 100644 index 0000000000000000000000000000000000000000..dbe866617be9e420673623c0abbf5c9024192533 --- /dev/null +++ b/src/app/components/verificateur-results/verificateur-results.component.html @@ -0,0 +1,8 @@ +<div class="container"> + <log #generalLog [logTitle]="uitextGeneralLogTitle">log général</log> + + <variable-results-selector [results]="verificateurResults" (indexChange)="variableIndexChanged()"> + </variable-results-selector> + + <log #iterationLog></log> +</div> diff --git a/src/app/components/verificateur-results/verificateur-results.component.scss b/src/app/components/verificateur-results/verificateur-results.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/components/verificateur-results/verificateur-results.component.ts b/src/app/components/verificateur-results/verificateur-results.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..8a00642ccd38ef4b33c1b0981c8109dd8fc7e0ea --- /dev/null +++ b/src/app/components/verificateur-results/verificateur-results.component.ts @@ -0,0 +1,161 @@ +import { Component, ViewChild, DoCheck } from "@angular/core"; + +import { cLog } from "jalhyd"; + +import { LogComponent } from "../log/log.component"; +import { CalculatorResults } from "../../results/calculator-results"; +import { VariableResultsSelectorComponent } from "../variable-results-selector/variable-results-selector.component"; +import { I18nService } from "../../services/internationalisation.service"; +import { VerificateurResults } from "../../results/verificateur-results"; +import { ResultsComponentDirective } from '../fixedvar-results/results.component'; + +@Component({ + selector: "verificateur-results", + templateUrl: "./verificateur-results.component.html", + styleUrls: [ + "./verificateur-results.component.scss" + ] +}) +export class VerificateurResultsComponent extends ResultsComponentDirective implements DoCheck { + + /** résultats non mis en forme */ + private _verificateurResults: VerificateurResults; + + /** true si les résultats doiventt être remis à jour */ + private _doUpdate = false; + + @ViewChild(VariableResultsSelectorComponent) + private variableResultsSelectorComponent: VariableResultsSelectorComponent; + + @ViewChild("generalLog") + private generalLogComponent: LogComponent; + + @ViewChild("iterationLog") + private iterationLogComponent: LogComponent; + + constructor( + private i18nService: I18nService, + ) { + super(); + } + + public set results(rs: CalculatorResults[]) { + this._verificateurResults = undefined; + if (rs.length > 0 && rs[0] instanceof VerificateurResults) { + this._verificateurResults = rs[0] as VerificateurResults; + } + this.updateView(); + } + + /** + * update iteration log when the variable index changed (event sent by + * VariableResultsSelectorComponent); variable index is already set in + * verificateurResults at this time + */ + public variableIndexChanged() { + this.updateView(); + } + + public updateView() { + if (this.iterationLogComponent) { + this.iterationLogComponent.log = undefined; + } + if (this.generalLogComponent) { + this.generalLogComponent.log = undefined; + } + if (this.variableResultsSelectorComponent) { + this.variableResultsSelectorComponent.results = undefined; + } + // set _doUpdate flag so that results are rebuilt on the next Angular display cycle + this._doUpdate = false; + if (this._verificateurResults !== undefined) { + this._doUpdate = this._doUpdate || this._verificateurResults.hasResults || this._verificateurResults.hasLog; + } + } + + public ngDoCheck() { + if (this._doUpdate) { + this._doUpdate = !this.updateResults(); + } + } + + /* + * Retourne les messages à afficher dans le composant de log global, au dessus + * du sélecteur d'itération : messages globaux du Verificateur + */ + private get globalLog(): cLog { + const l = new cLog(); + if (this._verificateurResults && this._verificateurResults.result && this._verificateurResults.result.hasGlobalLog()) { + l.addLog(this._verificateurResults.result.globalLog); + } + return l; + } + + /** + * Retourne les messages à afficher dans le composant de log "du bas" : logs de l'itération + * en cours (messages non-globaux du Vérificateur et eds Espèce), que le résultat varie ou non + */ + private get iterationLog(): cLog { + const l = new cLog(); + if (this._verificateurResults) { + // = 0 lorsque rien ne varie + const vi = this._verificateurResults.variableIndex; + // log du Verificateur pour l'itération en cours + if ( + this._verificateurResults.result + && this._verificateurResults.result.hasResultElements() + && this._verificateurResults.result.resultElements[vi] + && this._verificateurResults.result.resultElements[vi].hasLog() + ) { + l.addLog(this._verificateurResults.result.resultElements[vi].log); + } + // logs des Espece pour l'itération en cours + for (const er of this._verificateurResults.especeResults) { + if (er && er.hasResultElements() && er.resultElements[vi].hasLog()) { + l.addLog(er.resultElements[vi].log); + } + } + } + return l; + } + + /** + * met à jour l'affichage des résultats + * @returns true si les résultats ont pu être mis à jour + */ + private updateResults() { + let selectorUpdated: boolean; + + // results or not, there might be a log + const logUpdated = (this.iterationLogComponent !== undefined || this.generalLogComponent !== undefined); // gne ? + if (logUpdated) { + // order of logs is important ! + this.iterationLogComponent.log = this.iterationLog; + this.generalLogComponent.log = this.globalLog; + } + + if (this.hasResults) { + selectorUpdated = this.variableResultsSelectorComponent !== undefined; + if (selectorUpdated) { + this.variableResultsSelectorComponent.results = this._verificateurResults; + } + } else { + selectorUpdated = true; + } + + return logUpdated && selectorUpdated; + } + + public get verificateurResults() { + return this._verificateurResults; + } + + public get hasResults(): boolean { + return this._verificateurResults && this._verificateurResults.hasResults; + } + + public get uitextGeneralLogTitle(): string { + return this.i18nService.localizeText("INFO_TITREJOURNAL_GLOBAL"); + } + +} diff --git a/src/app/formulaire/definition/form-pab.ts b/src/app/formulaire/definition/form-pab.ts index 723d0713a7e11c498e08e312533d0cb2bdd0f6b5..08bd3f1ab8a0626385ce4a4503d27cb9460e5296 100644 --- a/src/app/formulaire/definition/form-pab.ts +++ b/src/app/formulaire/definition/form-pab.ts @@ -82,7 +82,7 @@ export class FormulairePab extends FormulaireDefinition { return this._pabResults; } - public resetResults() { + public resetResults() { // @TODO why not resetFormResults() only ? this._pabResults.reset(); } diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts index a55e3357ef58420fb6873d8cc94751c94b267f73..2a46caf52b9c543a4a40bd7d23cdbd3004053f9a 100644 --- a/src/app/formulaire/definition/form-verificateur.ts +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -1,13 +1,72 @@ -import { IObservable, Nub, Verificateur } from "jalhyd"; +import { IObservable, Nub, Verificateur, Result } from "jalhyd"; import { SelectFieldCustom } from "../elements/select-field-custom"; import { FormulaireFixedVar } from "./form-fixedvar"; +import { VerificateurResults } from "../../results/verificateur-results"; +import { CalculatorResults } from "../../results/calculator-results"; /** * Formulaire pour les Vérificateurs */ export class FormulaireVerificateur extends FormulaireFixedVar { + protected _verificateurResults: VerificateurResults; + + constructor() { + super(); + this._verificateurResults = new VerificateurResults(); + } + + public get verificateurNub(): Verificateur { + return this.currentNub as Verificateur; + } + + public get verificateurResults() { + return this._verificateurResults; + } + + protected compute() { + this.runNubCalc(this.currentNub); + // reset variable index to avoid trying to access an index > 0 when nothing varies + const mrcr = this.verificateurResults; + mrcr.variableIndex = 0; + + this.reaffectResultComponents(); + } + + protected reaffectResultComponents() { + const ver: Verificateur = (this.currentNub as Verificateur); + // const varParams: NgParameter[] = this.getVariatedParameters(); + + // résultat de calcul de la passe à macrorugo complexe + const vr = this.verificateurResults; + // vr.calculatedParameter = computedParam; + vr.result = ver.result; + /* if (varParams) { + vr.variatedParameters = varParams; + } */ + vr.variatedParameters = []; + + // résultat de chaque Espece + const er: Result[] = []; + for (const sp of ver.species) { + er.push(sp.result); + } + vr.especeResults = er; + } + + public resetFormResults() { + this._verificateurResults.reset(); + } + + public get results(): CalculatorResults[] { + return [ this._verificateurResults ]; + } + + public get hasResults(): boolean { + return this._verificateurResults.hasResults; + } + // interface Observer public update(sender: IObservable, data: any) { diff --git a/src/app/results/param-calc-results.ts b/src/app/results/param-calc-results.ts index 62cd26f84b8ca682534471461b54e08fe38f259d..6a24188484a22305e7e9ba15c2be440f351d13a0 100644 --- a/src/app/results/param-calc-results.ts +++ b/src/app/results/param-calc-results.ts @@ -20,7 +20,7 @@ export abstract class CalculatedParamResults extends CalculatorResults { /** custom variables order for results tables */ public variablesOrder: string[] = []; - protected reset() { + public reset() { this._calculatedParam = undefined; this.calculatedParameterHeader = undefined; this.result = undefined; diff --git a/src/app/results/verificateur-results.ts b/src/app/results/verificateur-results.ts new file mode 100644 index 0000000000000000000000000000000000000000..04f686404246413a3bbf44dcdf59b5dba6cc7f57 --- /dev/null +++ b/src/app/results/verificateur-results.ts @@ -0,0 +1,14 @@ +import { MultiDimensionResults } from "./multidimension-results"; + +import { Result } from 'jalhyd'; + +export class VerificateurResults extends MultiDimensionResults { + + /** résultats des modules Espece */ + public especeResults: Result[]; + + public reset() { + super.reset(); + this.especeResults = []; + } +}