Commit bd0f3a13 authored by Dorchies David's avatar Dorchies David
Browse files

Merge branch...

Merge branch '517-macrorugo-complexe-et-prebarrages-modifier-le-message-d-erreur-synthetique' into 'devel'

Resolve "MacroRugo complexe et Prébarrages: modifier le message d'erreur synthétique"

Closes #517

See merge request !138
parents fb29ec90 c65e1df3
Pipeline #36248 passed with stages
in 17 minutes and 10 seconds
master
308-log-ameliorer-la-synthese-de-journal
\ No newline at end of file
......@@ -10,6 +10,7 @@ import { ApplicationSetupService } from "../../services/app-setup.service";
import { I18nService } from "../../services/internationalisation.service";
import { MacrorugoCompoundResults } from "../../results/macrorugo-compound-results";
import { ResultsComponentDirective } from "../fixedvar-results/results.component";
import { LogHelper } from "app/results/log-helper";
@Component({
selector: "macrorugo-compound-results",
......@@ -23,6 +24,8 @@ export class MacrorugoCompoundResultsComponent extends ResultsComponentDirective
/** résultats non mis en forme */
private _mrcResults: MacrorugoCompoundResults;
private _logHelper: LogHelper;
constructor(
private appSetupService: ApplicationSetupService,
private i18nService: I18nService,
......@@ -33,143 +36,19 @@ export class MacrorugoCompoundResultsComponent extends ResultsComponentDirective
@Input()
public set results(rs: CalculatorResults[]) {
this._mrcResults = undefined;
this._logHelper = undefined;
if (rs.length > 0 && rs[0] instanceof MacrorugoCompoundResults) {
this._mrcResults = rs[0] as MacrorugoCompoundResults;
this._logHelper = new LogHelper(this._mrcResults);
}
}
private mergeGlobalLog(result: Result, log: cLog) {
if (result) {
if (result.hasGlobalLog()) {
log.addLog(result.globalLog);
}
// if no parameter is varying, 1st element log is considered "global"
if (this.mrcResults.variatedParameters.length === 0) {
if (result.hasResultElements() && result.resultElement.hasLog()) {
log.addLog(result.log);
}
}
}
}
/**
* Returns the number of errors, warnings, infos among children logs
*/
private logStats(): any {
const ret = {
info: 0,
warning: 0,
error: 0
};
if (this._mrcResults.result && this._mrcResults.result.hasLog()) {
for (const re of this._mrcResults.result.resultElements) {
if (re.hasLog()) {
for (const m of re.log.messages) {
const s = m.getSeverity();
switch (s) {
case MessageSeverity.INFO:
ret.info ++;
break;
case MessageSeverity.WARNING:
ret.warning ++;
break;
case MessageSeverity.ERROR:
ret.error ++;
break;
}
}
}
}
}
for (const cr of this._mrcResults.childrenResults) {
if (cr && cr.hasLog()) {
for (const re of cr.resultElements) {
if (re.hasLog()) {
for (const m of re.log.messages) {
const s = m.getSeverity();
switch (s) {
case MessageSeverity.INFO:
ret.info ++;
break;
case MessageSeverity.WARNING:
ret.warning ++;
break;
case MessageSeverity.ERROR:
ret.error ++;
break;
}
}
}
}
}
}
return ret;
}
/*
* Retourne les logs à afficher dans le composant de log global, au dessus
* du sélecteur d'itération : messages globaux et / ou résumé des messages
* spécifiques à chaque ResultElement
*/
public get globalLog(): cLog {
const l = new cLog();
if (this._mrcResults && this.mrcResults.variatedParameters.length > 0) {
this.mergeGlobalLog(this._mrcResults.result, l);
// un problème avec la MRC en général / les cloisons, à une étape quelconque ?
if (
(this.mrcResults.hasLog)
&& l.messages.length === 0 // existing global messages make generic message below useless
) {
const logStats = this.logStats();
const m = new Message(MessageCode.WARNING_PROBLEMS_ENCOUNTERED);
m.extraVar.info = "" + logStats.info; // to avoid displaying fixed number of digits
m.extraVar.warning = "" + logStats.warning;
m.extraVar.error = "" + logStats.error;
l.add(m);
// l.add(new Message(MessageCode.WARNING_PROBLEMS_ENCOUNTERED));
}
} // sinon pas de log global (aucun paramètre ne varie)
return l;
return this._logHelper.globalLog;
}
/**
* Retourne les logs à afficher dans le composant de log local, en dessous
* du sélecteur d'itération : messages concernant l'itération (le ResultElement)
* en cours
*/
public get iterationLog(): cLog {
const l = new cLog();
if (this._mrcResults) {
if (this.mrcResults.variatedParameters.length > 0) {
// A. si un paramètre varie
const vi = this._mrcResults.variableIndex;
// log de la MRC pour l'itération en cours
if (
this._mrcResults.result
&& this._mrcResults.result.hasResultElements()
&& this._mrcResults.result.resultElements[vi]
&& this._mrcResults.result.resultElements[vi].hasLog()
) {
l.addLog(this._mrcResults.result.resultElements[vi].log);
}
// logs des enfants pour l'itération en cours
for (const cr of this._mrcResults.childrenResults) {
if (cr && cr.hasResultElements() && cr.resultElements[vi].hasLog()) {
l.addLog(cr.resultElements[vi].log);
}
}
} else {
// B. si aucun paramètre ne varie
this.mergeGlobalLog(this._mrcResults.result, l); // faut bien mettre le log global quelque part
// logs des enfants
for (const cr of this._mrcResults.childrenResults) {
if (cr && cr.hasResultElements() && cr.resultElement.hasLog()) {
l.addLog(cr.resultElement.log);
}
}
}
}
return l;
return this._logHelper.iterationLog;
}
public get mrcResults() {
......
import { Component, Input } from "@angular/core";
import { LogHelper } from "app/results/log-helper";
import { Result, cLog, Message, MessageCode, MessageSeverity } from "jalhyd";
......@@ -19,6 +20,8 @@ export class PabResultsComponent extends ResultsComponentDirective {
/** résultats non mis en forme */
private _pabResults: PabResults;
private _logHelper: LogHelper;
constructor(
private i18nService: I18nService,
) {
......@@ -30,167 +33,18 @@ export class PabResultsComponent extends ResultsComponentDirective {
this._pabResults = undefined;
if (rs.length > 0 && rs[0] instanceof PabResults) {
this._pabResults = rs[0] as PabResults;
}
}
private mergeGlobalLog(result: Result, log: cLog) {
if (result) {
if (result.hasGlobalLog()) {
log.addLog(result.globalLog);
}
// if no parameter is varying, 1st element log is considered "global"
if (this.pabResults.variatedParameters.length === 0) {
if (result.hasResultElements() && result.resultElement.hasLog()) {
log.addLog(result.log);
}
}
}
}
/**
* Returns the number of errors, warnings, infos among children logs
*/
private logStats(): any {
const ret = {
info: 0,
warning: 0,
error: 0
};
if (this._pabResults.result && this._pabResults.result.hasLog()) {
for (const re of this._pabResults.result.resultElements) {
if (re.hasLog()) {
for (const m of re.log.messages) {
const s = m.getSeverity();
switch (s) {
case MessageSeverity.INFO:
ret.info ++;
break;
case MessageSeverity.WARNING:
ret.warning ++;
break;
case MessageSeverity.ERROR:
ret.error ++;
break;
}
}
}
}
}
for (const cr of this._pabResults.cloisonsResults) {
if (cr && cr.hasLog()) {
for (const re of cr.resultElements) {
if (re.hasLog()) {
for (const m of re.log.messages) {
const s = m.getSeverity();
switch (s) {
case MessageSeverity.INFO:
ret.info ++;
break;
case MessageSeverity.WARNING:
ret.warning ++;
break;
case MessageSeverity.ERROR:
ret.error ++;
break;
}
}
}
}
}
}
if (this._pabResults.cloisonAvalResults && this._pabResults.cloisonAvalResults.hasLog()) {
for (const re of this._pabResults.cloisonAvalResults.resultElements) {
if (re.hasLog()) {
for (const m of re.log.messages) {
const s = m.getSeverity();
switch (s) {
case MessageSeverity.INFO:
ret.info ++;
break;
case MessageSeverity.WARNING:
ret.warning ++;
break;
case MessageSeverity.ERROR:
ret.error ++;
break;
}
}
}
}
// log helper
this._logHelper = new LogHelper(this._pabResults);
}
return ret;
}
/*
* Retourne les logs à afficher dans le composant de log global, au dessus
* du sélecteur d'itération : messages globaux et / ou résumé des messages
* spécifiques à chaque ResultElement
*/
public get globalLog(): cLog {
const l = new cLog();
if (this._pabResults && this.pabResults.variatedParameters.length > 0) {
this.mergeGlobalLog(this._pabResults.result, l);
// un problème avec la PAB en général / les cloisons, à une étape quelconque ?
if (
(this.pabResults.hasLog)
&& l.messages.length === 0 // existing global messages make generic message below useless
) {
const logStats = this.logStats();
const m = new Message(MessageCode.WARNING_PROBLEMS_ENCOUNTERED);
m.extraVar.info = "" + logStats.info; // to avoid displaying fixed number of digits
m.extraVar.warning = "" + logStats.warning;
m.extraVar.error = "" + logStats.error;
l.add(m);
// l.add(new Message(MessageCode.WARNING_PROBLEMS_ENCOUNTERED));
}
} // sinon pas de log global (aucun paramètre ne varie)
return l;
return this._logHelper.globalLog;
}
/**
* Retourne les logs à afficher dans le composant de log local, en dessous
* du sélecteur d'itération : messages concernant l'itération (le ResultElement)
* en cours
*/
public get iterationLog(): cLog {
const l = new cLog();
if (this._pabResults) {
if (this.pabResults.variatedParameters.length > 0) {
// A. si un paramètre varie
const vi = this._pabResults.variableIndex;
// log de la PAB pour l'itération en cours
if (
this._pabResults.result
&& this._pabResults.result.hasResultElements()
&& this._pabResults.result.resultElements[vi]
&& this._pabResults.result.resultElements[vi].hasLog()
) {
l.addLog(this._pabResults.result.resultElements[vi].log);
}
// logs des enfants pour l'itération en cours
for (const cr of this._pabResults.cloisonsResults) {
if (cr && cr.hasResultElements() && cr.resultElements[vi].hasLog()) {
l.addLog(cr.resultElements[vi].log);
}
}
if (this._pabResults.cloisonAvalResults && this._pabResults.cloisonAvalResults.resultElements[vi].hasLog()) {
l.addLog(this._pabResults.cloisonAvalResults.resultElements[vi].log);
}
} else {
// B. si aucun paramètre ne varie
this.mergeGlobalLog(this._pabResults.result, l); // faut bien mettre le log global quelque part
// logs des enfants
for (const cr of this._pabResults.cloisonsResults) {
if (cr && cr.hasResultElements() && cr.resultElement.hasLog()) {
l.addLog(cr.resultElement.log);
}
}
if (this._pabResults.cloisonAvalResults && this._pabResults.cloisonAvalResults.resultElement.hasLog()) {
l.addLog(this._pabResults.cloisonAvalResults.resultElement.log);
}
}
}
return l;
return this._logHelper.iterationLog;
}
public get pabResults() {
......
......@@ -5,6 +5,8 @@ import { PrebarrageResults } from "../../results/prebarrage-results";
import { I18nService } from "../../services/internationalisation.service";
import { cLog, Message, MessageCode, MessageSeverity, PreBarrage, Result } from "jalhyd";
import { ServiceFactory } from "app/services/service-factory";
import { LogHelper } from "app/results/log-helper";
@Component({
selector: "pb-results",
......@@ -18,6 +20,8 @@ export class PbResultsComponent {
/** résultats des bassins, non mis en forme */
private _pbResults: PrebarrageResults;
private _logHelper: LogHelper;
constructor(
private i18nService: I18nService,
) { }
......@@ -25,9 +29,12 @@ export class PbResultsComponent {
@Input()
public set results(rs: CalculatorResults[]) {
this._pbResults = undefined;
this._logHelper = undefined;
for (const r of rs) {
if (r instanceof PrebarrageResults) {
this._pbResults = r as PrebarrageResults;
// log helper
this._logHelper = new LogHelper(this._pbResults);
}
}
}
......@@ -56,149 +63,12 @@ export class PbResultsComponent {
return this._pbResults && this._pbResults.hasWallResults;
}
private mergeGlobalLog(result: Result, log: cLog) {
if (result) {
if (result.hasGlobalLog()) {
log.addLog(result.globalLog);
}
// if no parameter is varying, 1st element log is considered "global"
if (this.pbResults.variatedParameters.length === 0) {
if (result.hasResultElements() && result.resultElement.hasLog()) {
log.addLog(result.log);
}
}
}
}
/**
* Returns the number of errors, warnings, infos among children logs
*/
private logStats(): any {
const ret = {
info: 0,
warning: 0,
error: 0
};
if (this._pbResults.result?.hasLog()) {
for (const re of this._pbResults.result.resultElements) {
if (re.hasLog()) {
for (const m of re.log.messages) {
const s = m.getSeverity();
switch (s) {
case MessageSeverity.INFO:
ret.info ++;
break;
case MessageSeverity.WARNING:
ret.warning ++;
break;
case MessageSeverity.ERROR:
ret.error ++;
break;
}
}
}
}
}
const pb = this._pbResults.result.sourceNub as PreBarrage;
for (const pbc of pb.children) { // bassins et cloisons
if (pbc.result !== undefined) {
for (const re of pbc.result.resultElements) {
if (re.hasLog()) {
for (const m of re.log.messages) {
const s = m.getSeverity();
switch (s) {
case MessageSeverity.INFO:
ret.info ++;
break;
case MessageSeverity.WARNING:
ret.warning ++;
break;
case MessageSeverity.ERROR:
ret.error ++;
break;
}
}
}
}
}
}
return ret;
}
/*
* Retourne les logs à afficher dans le composant de log global, au dessus
* du sélecteur d'itération : messages globaux et / ou résumé des messages
* spécifiques à chaque ResultElement
*/
public get globalLog(): cLog {
const l = new cLog();
/* console.log(
`>> Global Log >> this._pbResults: ${this._pbResults !== undefined}`
+ `, vpl: ${this?._pbResults?.variatedParameters?.length}`
+ `, hasLog: ${this?._pbResults?.hasLog}`
); */
if (this._pbResults && this.pbResults.variatedParameters.length > 0) {
this.mergeGlobalLog(this._pbResults.result, l);
// console.log(">>>> after merge, messages length=", l.messages.length);
// un problème avec le PB en général / les cloisons / les bassins, à une étape quelconque ?
if (
(this.pbResults.hasLog)
&& l.messages.length === 0 // existing global messages make generic message below useless
) {
const logStats = this.logStats();
const m = new Message(MessageCode.WARNING_PROBLEMS_ENCOUNTERED);
m.extraVar.info = "" + logStats.info; // to avoid displaying fixed number of digits
m.extraVar.warning = "" + logStats.warning;
m.extraVar.error = "" + logStats.error;
l.add(m);
}
} // sinon pas de log global (aucun paramètre ne varie)
return l;
return this._logHelper.globalLog;
}
/**
* Retourne les logs à afficher dans le composant de log local, en dessous
* du sélecteur d'itération : messages concernant l'itération (le ResultElement)
* en cours
*/
public get iterationLog(): cLog {
const l = new cLog();
if (this._pbResults?.result) {
const pb = this._pbResults.result.sourceNub as PreBarrage;
if (this._pbResults.variatedParameters.length > 0) {
// A. si un paramètre varie
const vi = this._pbResults.variableIndex;
// log du PB pour l'itération en cours
if (
this._pbResults.result
&& this._pbResults.result.hasResultElements()
&& this._pbResults.result.resultElements[vi]
&& this._pbResults.result.resultElements[vi]?.hasLog()
) {
l.addLog(this._pbResults.result.resultElements[vi].log);
}
// logs des enfants pour l'itération en cours
if (pb !== undefined) {
for (const pbc of pb.children) {
if (pbc?.result?.hasResultElements() && pbc.result.resultElements[vi]?.hasLog()) {
l.addLog(pbc.result.resultElements[vi].log);
}
}
}
} else {
// B. si aucun paramètre ne varie
this.mergeGlobalLog(this._pbResults.result, l); // faut bien mettre le log global quelque part
// logs des enfants
if (pb !== undefined) {
for (const pbc of pb.children) {
if (pbc?.result?.hasResultElements() && pbc.result.resultElement?.hasLog()) {
l.addLog(pbc.result.resultElement.log);
}
}
}
}
}
return l;
return this._logHelper.iterationLog;
}
public get uitextGeneralLogTitle(): string {
......
......@@ -3,9 +3,9 @@ import { Component, Input, OnChanges } from "@angular/core";
import { I18nService } from "../../services/internationalisation.service";
import { fv, longestVarParam } from "../../util";
import { MultiDimensionResults } from "../../results/multidimension-results";
import { PrebarrageResults } from "../../results/prebarrage-results";
import { CalculatorType, PbBassin, PbCloison, Structure, VariatedDetails } from "jalhyd";
import { VariatedDetails } from "jalhyd";
import { CalculatorResults } from "../../results/calculator-results";
import { LogHelper } from "app/results/log-helper";
@Component({
selector: "variable-results-selector",
......@@ -24,6 +24,9 @@ export class VariableResultsSelectorComponent implements OnChanges {
@Input()
private variatedParameters: VariatedDetails[];
/** stats du log synthétique */
private _logHelper: LogHelper;
/** valeur en cours */
private _selectedValue = 0;
......@@ -61,6 +64,7 @@ export class VariableResultsSelectorComponent implements OnChanges {
// get current variatedIndex even if component was rebuilt
if (this.results) {
this._selectedValue = this.results.variableIndex;
this._logHelper = new LogHelper(this.results);
}
}
......@@ -80,8 +84,17 @@ export class VariableResultsSelectorComponent implements OnChanges {
return ret;
}
/**
* generate entry text for boundary conditions select
* @param index select option index
*/