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 c3444ab26c494219f9c651dd989be037f82e3bbd..fa9e90bdc672512a632030df3af522c903af4b40 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 a2905e1c8f89462a9c1ea92bd82f6cb1cc97f7f2..064e4612431909b9fbfb014e109ca84f67b6314c 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 472acbd9d59014e8036caa0a850eb7af63fcefc1..be6842b0e54568c52ecfd591b881f0bc978c16f8 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 99437bd9504f174bedd0dc604986d842d68c600b..4784c3a9c8f7224c3342bdd8e76e2cfc8d4cd385 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 fc99a7dd3c5fe272f770ca3cebe871025b403f58..e8f9cf07a5ca56b40788006118994f106f92691c 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 dd12519158ad53646ab038c74c8a82672bcec1b9..7647de0ce175b46f1d5801b7c955b5f8a16e1870 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 522d54c51836e83527b2742b529f3f39a946fa26..33eae8f5833c50ce89e70b106d864610da5eac52 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 778626e2c267217735a3664b82e5644e6a14e1fc..7d319699166f995afbc215f2663188182aaff083 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"