From 9c398df6c26c6bffed5272bffcd4c61f601fd5c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr>
Date: Tue, 14 Jun 2022 15:50:11 +0200
Subject: [PATCH] feat: add application setup option to fold result messages
 log by default

refs #519
---
 .../components/app-setup/app-setup.component.html   |  6 ++++++
 src/app/components/app-setup/app-setup.component.ts | 13 +++++++++++++
 src/app/components/log/log.component.html           |  2 +-
 src/app/components/log/log.component.ts             |  9 ++++++++-
 src/app/services/app-setup.service.ts               |  9 +++++++++
 src/locale/messages.en.json                         |  1 +
 src/locale/messages.fr.json                         |  1 +
 7 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/src/app/components/app-setup/app-setup.component.html b/src/app/components/app-setup/app-setup.component.html
index bcd394688..4c3bb5d35 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 1b3c52d15..7010813af 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 1dff77174..a92eb6287 100644
--- a/src/app/components/log/log.component.html
+++ b/src/app/components/log/log.component.html
@@ -1,4 +1,4 @@
-<mat-expansion-panel *ngIf="hasEntries" expanded>
+<mat-expansion-panel *ngIf="hasEntries" [expanded]="expandedStatus">
     <mat-expansion-panel-header>
         <mat-panel-title>
             {{ uitextTitreJournal }}
diff --git a/src/app/components/log/log.component.ts b/src/app/components/log/log.component.ts
index b3d9c2f71..6bbead2ab 100644
--- a/src/app/components/log/log.component.ts
+++ b/src/app/components/log/log.component.ts
@@ -1,4 +1,5 @@
 import { Component, Input } from "@angular/core";
+import { ApplicationSetupService } from "app/services/app-setup.service";
 
 import { cLog, Message } from "jalhyd";
 
@@ -21,9 +22,15 @@ 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() {
         if (this.logTitle) {
diff --git a/src/app/services/app-setup.service.ts b/src/app/services/app-setup.service.ts
index 32b9f517d..16e3cf00e 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 649e9e7c1..b095f44db 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 cb3e769e6..ac3d94292 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&nbsp;: nombre d'itérations maximum",
     "INFO_SETUP_PRECISION_AFFICHAGE": "Nombre de décimales affichées",
-- 
GitLab