diff --git a/jalhyd_branch b/jalhyd_branch index d64531f1305e091791eac674c3a36d86b9e17ddd..1ec9ebc2097b5c3e9a5fb6dc2fe6cea0f6f5b78b 100644 --- a/jalhyd_branch +++ b/jalhyd_branch @@ -1 +1 @@ -devel +315-journal-de-calcul-repliable diff --git a/src/app/app.module.ts b/src/app/app.module.ts index f1d0c02158a2d200aa58511119fd390dd95f0b8a..a76bf4558a49de10d0f8c1510f971f86e27a159a 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -23,7 +23,7 @@ import { MatTableModule } from "@angular/material/table"; import { MatTabsModule } from "@angular/material/tabs"; import { MatToolbarModule } from "@angular/material/toolbar"; import { MatTooltipModule } from "@angular/material/tooltip"; - +import { MatExpansionModule } from '@angular/material/expansion'; import { MaterialFileInputModule } from "ngx-material-file-input"; import { DragDropModule } from "@angular/cdk/drag-drop"; @@ -170,6 +170,7 @@ const appRoutes: Routes = [ MatTabsModule, MatToolbarModule, MatTooltipModule, + MatExpansionModule, MatomoModule, RouterModule.forRoot( appRoutes, diff --git a/src/app/components/app-setup/app-setup.component.html b/src/app/components/app-setup/app-setup.component.html index bcd3946889ee454fcaa79c7139fcebadcf00051d..4c3bb5d355187e1310a50184938400bd09399800 100644 --- a/src/app/components/app-setup/app-setup.component.html +++ b/src/app/components/app-setup/app-setup.component.html @@ -88,6 +88,12 @@ {{ uitextEnableEmptyFieldsOnFormInit }} </mat-checkbox> + <!-- display result messages log folded by default --> + <mat-checkbox id="cb_foldedMessageLog" class="wrapped-checkbox" name="foldedMessageLog" [(ngModel)]="foldedMessageLog" + [ngModelOptions]="{standalone: true}"> + {{ uitextEnableFoldedMessageLog }} + </mat-checkbox> + <!-- langue --> <mat-form-field> <mat-select [placeholder]="uitextLanguage" [(value)]="currentLanguageCode" diff --git a/src/app/components/app-setup/app-setup.component.ts b/src/app/components/app-setup/app-setup.component.ts index 1b3c52d158c498cf992ed9ee31e0fe88dca086c5..7010813af108b281a6e21f69cb8c2e250140827b 100644 --- a/src/app/components/app-setup/app-setup.component.ts +++ b/src/app/components/app-setup/app-setup.component.ts @@ -84,6 +84,15 @@ export class ApplicationSetupComponent implements Observer, OnInit { this.appSetupService.enableEmptyFieldsOnFormInit = v; } + /** fold result messages log by default */ + public get foldedMessageLog(): boolean { + return this.appSetupService.foldedMessageLog; + } + + public set foldedMessageLog(v: boolean) { + this.appSetupService.foldedMessageLog = v; + } + public get uitextTitle(): string { return this.intlService.localizeText("INFO_SETUP_TITLE"); } @@ -116,6 +125,10 @@ export class ApplicationSetupComponent implements Observer, OnInit { return this.intlService.localizeText("INFO_SETUP_ENABLE_EMPTY_FIELDS"); } + public get uitextEnableFoldedMessageLog(): string { + return this.intlService.localizeText("INFO_SETUP_FOLDED_RESULT_MESSAGES_LOG"); + } + public get uitextMustBeANumber(): string { return this.intlService.localizeText("ERROR_PARAM_MUST_BE_A_NUMBER"); } diff --git a/src/app/components/log/log.component.html b/src/app/components/log/log.component.html index 5920817ec90af8c9dae78dbca027e29197cd7071..084e32802829778ad94d322bfd4e5d2a5dca97e5 100644 --- a/src/app/components/log/log.component.html +++ b/src/app/components/log/log.component.html @@ -1,8 +1,9 @@ -<div *ngIf="hasEntries"> - <div class="hyd_log"> - <!-- titre --> - <div class="titre">{{ uitextTitreJournal }}</div> - <!-- entrées du journal --> - <log-entry *ngFor="let m of _log?.messages" [_message]="m"></log-entry> - </div> -</div> +<mat-expansion-panel *ngIf="hasEntries" [expanded]="expandedStatus"> + <mat-expansion-panel-header class="panel_header"> + <mat-panel-title> + {{ uitextTitreJournal }} + </mat-panel-title> + </mat-expansion-panel-header> + <!-- entrées du journal --> + <log-entry *ngFor="let m of _log?.messages" [_message]="m"></log-entry> +</mat-expansion-panel> diff --git a/src/app/components/log/log.component.scss b/src/app/components/log/log.component.scss index 4c37d752b16c35c7d426ce82734044c40d02b32a..b64c47977e5a56bc52895a1cdf589d26f4d36482 100644 --- a/src/app/components/log/log.component.scss +++ b/src/app/components/log/log.component.scss @@ -2,21 +2,6 @@ display: block; } -.hyd_log { - margin-top: 2.5em; - border: solid #ccc 1px; - border-radius: 2px; - padding: 1em; - padding-top : 1.3em; -} - -.titre { - background-color: white; - border: 1px solid #ccc; - border-radius: 2px; - float: left; - font-weight: bold; - margin-bottom: -1em; - margin-top: -2.3em; - padding: 0.2em 0.5em; -} +.panel_header { + font-weight: 600; +} \ No newline at end of file diff --git a/src/app/components/log/log.component.ts b/src/app/components/log/log.component.ts index b3d9c2f7188e4227f5ec1559bfd488d24aa30e80..7b9e8b8e4236ac01e0a9a2c674a23eefc33df909 100644 --- a/src/app/components/log/log.component.ts +++ b/src/app/components/log/log.component.ts @@ -1,6 +1,8 @@ import { Component, Input } from "@angular/core"; +import { LogHelper } from "app/results/log-helper"; +import { ApplicationSetupService } from "app/services/app-setup.service"; -import { cLog, Message } from "jalhyd"; +import { cLog } from "jalhyd"; import { I18nService } from "../../services/internationalisation.service"; @@ -21,16 +23,26 @@ export class LogComponent { @Input() public logTitle: string; + // expanded/folded panel state + public expandedStatus: boolean; + constructor( private intlService: I18nService, - ) { } + private appSetupService: ApplicationSetupService + ) { + this.expandedStatus = !this.appSetupService.foldedMessageLog; + } public get uitextTitreJournal() { + let res; if (this.logTitle) { - return this.logTitle; + res = this.logTitle; } else { - return this.intlService.localizeText("INFO_TITREJOURNAL"); + res = this.intlService.localizeText("INFO_TITREJOURNAL"); } + + const stats = cLog.messagesStats(this._log.messages); + return res + " - " + LogHelper.messagesStatsToString(stats);; } public get hasEntries(): boolean { diff --git a/src/app/results/log-helper.ts b/src/app/results/log-helper.ts index d3b75c621dc6e1575feab757459739365e64e82e..ed7ed901626797c13c8a7dbc32e412bbd46a8664 100644 --- a/src/app/results/log-helper.ts +++ b/src/app/results/log-helper.ts @@ -47,7 +47,7 @@ export class LogHelper { return res; } - private resultElementStatToString(res: any): string { + public static messagesStatsToString(res: any): string { let ret = ""; function ccat(n: number, code: MessageCode, b: string): string { if (n > 0) { @@ -69,7 +69,7 @@ export class LogHelper { public resultElementsStats(index: number): string { const res = this.computeResultElementLogStats(index); - return this.resultElementStatToString(res); + return LogHelper.messagesStatsToString(res); } /* diff --git a/src/app/services/app-setup.service.ts b/src/app/services/app-setup.service.ts index 32b9f517da6c776b8a43fe6df266d80deedefc55..16e3cf00e4398bf9815fa5a6194310b0b871cb4f 100644 --- a/src/app/services/app-setup.service.ts +++ b/src/app/services/app-setup.service.ts @@ -25,6 +25,7 @@ export class ApplicationSetupService extends Observable { public enableNotifications = true; public enableHotkeys = false; private _enableEmptyFieldsOnFormInit = true; + private _foldedMessageLog = false; public set computePrecision(p: number) { this._computePrecision = p; @@ -54,6 +55,14 @@ export class ApplicationSetupService extends Observable { this._enableEmptyFieldsOnFormInit = b; } + public get foldedMessageLog() { + return this._foldedMessageLog; + } + + public set foldedMessageLog(b: boolean) { + this._foldedMessageLog = b; + } + /** * just stores the current language preference, does not transmit it to I18nService, that is * not available here. diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index 649e9e7c1263d8a781b259050a633a3648b29e89..b095f44db790a27e0f08155594be2b39f0bd0b1a 100755 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -586,6 +586,7 @@ "INFO_SETUP_ENABLE_HOTKEYS": "Enable keyboard shortcuts", "INFO_SETUP_ENABLE_EMPTY_FIELDS": "Create new calculators with empty fields (no default values)", "INFO_SETUP_ENABLE_NOTIFICATIONS": "Enable on-screen notifications", + "INFO_SETUP_FOLDED_RESULT_MESSAGES_LOG": "Fold result messages log by default", "INFO_SETUP_LANGUAGE": "Language", "INFO_SETUP_NEWTON_MAX_ITER": "Solver iteration limit", "INFO_SETUP_PRECISION_AFFICHAGE": "Number of displayed decimals", diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index cb3e769e68c4ea5dd34f2c4f1ce36dacd4e84b91..ac3d94292107b94b74e48bee33a1b9ab6cf00cec 100755 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -587,6 +587,7 @@ "INFO_SETUP_ENABLE_HOTKEYS": "Activer les raccourcis clavier", "INFO_SETUP_ENABLE_EMPTY_FIELDS": "Créer les nouveaux modules avec des champs vides (aucune valeur par défaut)", "INFO_SETUP_ENABLE_NOTIFICATIONS": "Activer les notifications à l'écran", + "INFO_SETUP_FOLDED_RESULT_MESSAGES_LOG": "Replier le journal de calcul par défaut", "INFO_SETUP_LANGUAGE": "Langue", "INFO_SETUP_NEWTON_MAX_ITER": "Solveur : nombre d'itérations maximum", "INFO_SETUP_PRECISION_AFFICHAGE": "Nombre de décimales affichées",