From 13a2a21a89a5c636ae237da3262e9f7dc8327401 Mon Sep 17 00:00:00 2001
From: Xiao Gui <xgui3783@gmail.com>
Date: Wed, 23 Aug 2023 17:38:06 +0200
Subject: [PATCH] fix: switch parc/tmpl dialog (font size, scroll, margin)
 maint: added text Centroid feat: allow fsaverage grid to be toggled

---
 .../region/rich/region.rich.template.html     |  8 +++----
 .../ATPSelector/wrapper/wrapper.component.ts  |  5 ++++-
 src/ui/dialogInfo/tmpl/tmpl.component.ts      |  1 +
 src/ui/dialogInfo/tmpl/tmpl.style.css         |  8 ++++++-
 src/ui/dialogInfo/tmpl/tmpl.template.html     | 20 ++++++++++++-----
 src/viewerModule/threeSurfer/module.ts        |  4 ++++
 .../threeSurferGlue/threeSurfer.component.ts  | 11 +++++++++-
 .../threeSurferGlue/threeSurfer.template.html | 22 +++++++++++++++++++
 8 files changed, 66 insertions(+), 13 deletions(-)

diff --git a/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html b/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html
index c3444ab26..fa9e90bdc 100644
--- a/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html
+++ b/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html
@@ -124,7 +124,7 @@
         <ng-template [ngIf]="regionPosition">
           <button mat-list-item (click)="navigateTo(regionPosition)">
             <mat-icon mat-list-icon fontSet="fas" fontIcon="fa-map-marker"></mat-icon>
-            <div mat-line class="overview-content">{{ regionPosition | numbers | addUnitAndJoin : 'mm' }}</div>
+            <div mat-line class="overview-content">Centroid: {{ regionPosition | numbers | addUnitAndJoin : 'mm' }}</div>
           </button>
         </ng-template>
 
@@ -138,10 +138,8 @@
 
       
       <ng-template [ngIf]="(desc$ | async) || region.desc" let-desc>
-        <readmore-component [collapsedHeight]="240" class="sxplr-mb-8">
-          <markdown-dom class="sxplr-m-2 sxplr-muted" [markdown]="desc">
-          </markdown-dom>
-        </readmore-component>
+        <markdown-dom class="sxplr-m-2 sxplr-muted" [markdown]="desc">
+        </markdown-dom>
       </ng-template>
     </mat-tab>
 
diff --git a/src/atlasComponents/sapiViews/core/rich/ATPSelector/wrapper/wrapper.component.ts b/src/atlasComponents/sapiViews/core/rich/ATPSelector/wrapper/wrapper.component.ts
index a2905e1c8..064e46124 100644
--- a/src/atlasComponents/sapiViews/core/rich/ATPSelector/wrapper/wrapper.component.ts
+++ b/src/atlasComponents/sapiViews/core/rich/ATPSelector/wrapper/wrapper.component.ts
@@ -38,10 +38,11 @@ export class WrapperATPSelector implements OnDestroy{
 
   #subscription: Subscription[] = []
 
-  #askUser(title: string, descMd: string, actions: string[], config?: Partial<AskUserConfig>): Observable<string> {
+  #askUser(title: string, titleMd: string, descMd: string, actions: string[], config?: Partial<AskUserConfig>): Observable<string> {
     return this.dialog.open(DialogFallbackCmp, {
       data: {
         title,
+        titleMd,
         descMd,
         actions: actions,
         actionsAsList: config?.actionsAsList
@@ -95,6 +96,7 @@ export class WrapperATPSelector implements OnDestroy{
                 return this.#askUser(
                   null,
                   `Current parcellation **${selectedATP.parcellation.name}** is not mapped in the selected template **${template.name}**. Please select one of the following parcellations:`,
+                  null,
                   parcs.map(p => p.name),
                   {
                     actionsAsList: true
@@ -120,6 +122,7 @@ export class WrapperATPSelector implements OnDestroy{
                 return this.#askUser(
                   null,
                   `Selected parcellation **${parcellation.name}** is not mapped in the current template **${selectedATP.template.name}**. Please select one of the following templates:`,
+                  null,
                   tmpls.map(tmpl => tmpl.name),
                   {
                     actionsAsList: true
diff --git a/src/ui/dialogInfo/tmpl/tmpl.component.ts b/src/ui/dialogInfo/tmpl/tmpl.component.ts
index 472acbd9d..be6842b0e 100644
--- a/src/ui/dialogInfo/tmpl/tmpl.component.ts
+++ b/src/ui/dialogInfo/tmpl/tmpl.component.ts
@@ -3,6 +3,7 @@ import { MAT_DIALOG_DATA } from "@angular/material/dialog";
 
 export type FallBackData = {
   title: string
+  titleMd?: string
   actions?: string[]
   desc?: string
   descMd?: string
diff --git a/src/ui/dialogInfo/tmpl/tmpl.style.css b/src/ui/dialogInfo/tmpl/tmpl.style.css
index 99437bd95..4784c3a9c 100644
--- a/src/ui/dialogInfo/tmpl/tmpl.style.css
+++ b/src/ui/dialogInfo/tmpl/tmpl.style.css
@@ -6,5 +6,11 @@ mat-dialog-actions a i
 mat-dialog-content
 {
   display: block;
-  max-height: 30dvh;
+  max-height: 24dvh;
+}
+
+.sxplr-dialog-body
+{
+  font-size: 16px;
+  padding: 0 16px;
 }
diff --git a/src/ui/dialogInfo/tmpl/tmpl.template.html b/src/ui/dialogInfo/tmpl/tmpl.template.html
index fc99a7dd3..e8f9cf07a 100644
--- a/src/ui/dialogInfo/tmpl/tmpl.template.html
+++ b/src/ui/dialogInfo/tmpl/tmpl.template.html
@@ -1,15 +1,25 @@
-<h1 *ngIf="data.title" mat-dialog-title>
+<h1 *ngIf="data.title" mat-dialog-title class="sxplr-dialog-body">
   {{ data.title }}
 </h1>
 
+<ng-template [ngIf]="data.titleMd" let-titleMd>
+  <h1 mat-dialog-title>
+    <markdown-dom class="sxplr-dialog-body" [markdown]="titleMd">
+    </markdown-dom>
+  </h1>
+</ng-template>
+
 <mat-dialog-content>
 
   <div *ngIf="data.descMd || data.desc" mat-dialog-content class="mat-body">
-    <ng-template [ngIf]="data.desc">
-      {{ data.desc }}
-    </ng-template>
+
+    <div class="sxplr-dialog-body">
+      <ng-template [ngIf]="data.desc">
+        {{ data.desc }}
+      </ng-template>
+    </div>
     
-    <markdown-dom *ngIf="data.descMd" [markdown]="data.descMd">
+    <markdown-dom class="sxplr-dialog-body" *ngIf="data.descMd" [markdown]="data.descMd">
     </markdown-dom>
   </div>
   
diff --git a/src/viewerModule/threeSurfer/module.ts b/src/viewerModule/threeSurfer/module.ts
index dd1251915..7647de0ce 100644
--- a/src/viewerModule/threeSurfer/module.ts
+++ b/src/viewerModule/threeSurfer/module.ts
@@ -10,6 +10,8 @@ import { ThreeSurferViewerConfig } from "./tsViewerConfig/tsViewerConfig.compone
 import { nameSpace, reducer, ThreeSurferEffects } from "./store"
 import { EffectsModule } from "@ngrx/effects";
 import { TmpThreeSurferLifeCycle } from "./lifecycle/lifecycle.component";
+import { MatSlideToggleModule } from "@angular/material/slide-toggle";
+import { ExperimentalModule } from "src/experimental/experimental.module";
 
 @NgModule({
   imports: [
@@ -18,6 +20,8 @@ import { TmpThreeSurferLifeCycle } from "./lifecycle/lifecycle.component";
     UtilModule,
     FormsModule,
     ComponentsModule,
+    MatSlideToggleModule,
+    ExperimentalModule,
     StoreModule.forFeature(
       nameSpace,
       reducer
diff --git a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
index 522d54c51..33eae8f58 100644
--- a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
+++ b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
@@ -1,6 +1,6 @@
 import { Component, Output, EventEmitter, ElementRef, OnDestroy, AfterViewInit, Inject, Optional, ChangeDetectionStrategy } from "@angular/core";
 import { EnumViewerEvt, IViewer, TViewerEvent } from "src/viewerModule/viewer.interface";
-import { combineLatest, concat, forkJoin, from, merge, NEVER, Observable, of, Subject } from "rxjs";
+import { BehaviorSubject, combineLatest, concat, forkJoin, from, merge, NEVER, Observable, of, Subject } from "rxjs";
 import { catchError, debounceTime, distinctUntilChanged, filter, map, scan, shareReplay, startWith, switchMap, tap, withLatestFrom } from "rxjs/operators";
 import { ComponentStore, LockError } from "src/viewerModule/componentStore";
 import { select, Store } from "@ngrx/store";
@@ -100,6 +100,9 @@ type TThreeSurfer = {
   control: any
   camera: any
   customColormap: WeakMap<TThreeGeometry, any>
+  gridHelper: {
+    visible: boolean
+  }
 }
 
 type LateralityRecord<T> = Record<string, T>
@@ -928,6 +931,12 @@ export class ThreeSurferGlueCmp implements IViewer<'threeSurfer'>, AfterViewInit
     )
   }
 
+  gridVisible$ = new BehaviorSubject<boolean>(true)
+  setGridVisibility(newFlag: boolean){
+    this.tsRef.gridHelper.visible = newFlag
+    this.gridVisible$.next(newFlag)
+  }
+
   private onDestroyCb: (() => void) [] = []
 
   ngOnDestroy(): void {
diff --git a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.template.html b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.template.html
index 778626e2c..7d3196991 100644
--- a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.template.html
+++ b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.template.html
@@ -5,6 +5,28 @@
 
 <div class="button-container">
 
+  <ng-template sxplrExperimentalFlag [ngIf]="exmptToggleGrid.show$ | async"
+    #exmptToggleGrid="sxplrExperimentalFlag"
+    [experimental]="true">
+  <!-- toggle grid line -->
+  <ng-template [ngTemplateOutlet]="toggleGridVisTmpl" [ngTemplateOutletContext]="{
+    $implicit: gridVisible$ | async
+  }">
+  </ng-template>
+  <ng-template let-visibleFlag #toggleGridVisTmpl>
+    <button mat-icon-button color="primary" class="pe-all"
+      (click)="setGridVisibility(!visibleFlag)"
+      matTooltip="Toggle grid visibility">
+      
+      <i class="fas fa-border-all" *ngIf="visibleFlag else fallbackTmpl"></i>
+      <ng-template #fallbackTmpl>
+        <i class="fas fa-border-none"></i> 
+      </ng-template>
+    </button>
+  </ng-template>
+
+  </ng-template>
+
   <!-- selector & configurator -->
   <button mat-icon-button
     color="primary"
-- 
GitLab