From a57eca6afddada39b1e838e0862789b77db662c6 Mon Sep 17 00:00:00 2001 From: xgui3783 <xgui3783@gmail.com> Date: Fri, 24 Jul 2020 11:40:49 +0200 Subject: [PATCH] bugfix: restore mat chip for origin ds (#615) feat: allow regional features list to be toggled chore: prettify header banner feat: show dataset card in iav preview --- src/atlasViewer/atlasViewer.template.html | 18 +++++++ .../databrowser/databrowser.component.ts | 3 ++ .../databrowser/databrowser.template.html | 35 +++++++++++-- .../preview/previewCard/previewCard.style.css | 2 +- .../previewCard/previewCard.template.html | 13 ++++- .../detailedView/singleDataset.component.ts | 10 +++- .../detailedView/singleDataset.template.html | 46 +++++++++-------- .../nehubaContainer.template.html | 1 + .../regionMenu/regionMenu.style.css | 2 +- .../regionMenu/regionMenu.template.html | 50 ------------------- 10 files changed, 100 insertions(+), 80 deletions(-) diff --git a/src/atlasViewer/atlasViewer.template.html b/src/atlasViewer/atlasViewer.template.html index 110948e12..f24bb3336 100644 --- a/src/atlasViewer/atlasViewer.template.html +++ b/src/atlasViewer/atlasViewer.template.html @@ -205,6 +205,24 @@ </mat-icon> </mat-chip> + <!-- chips for previewing origin datasets --> + <ng-container *ngFor="let originDataset of (r.originDatasets || []); let index = index"> + <div class="hidden" + iav-dataset-preview-dataset-file + [iav-dataset-preview-dataset-file-kgid]="originDataset.kgId" + [iav-dataset-preview-dataset-file-filename]="originDataset.filename" + #previewDirective="iavDatasetPreviewDatasetFile"> + </div> + <mat-chip *ngIf="previewDirective.active" + (click)="uiNehubaContainer.matDrawerMinor.open() && uiNehubaContainer.navSideDrawerMainSwitch.open()" + class="pe-all"> + {{ regionDirective.regionOriginDatasetLabels$ | async | renderViewOriginDatasetlabel : index }} + <mat-icon (click)="previewDirective.onClick()" + fontSet="fas" + fontIcon="fa-times"> + </mat-icon> + </mat-chip> + </ng-container> </ng-container> </ng-template> diff --git a/src/ui/databrowserModule/databrowser/databrowser.component.ts b/src/ui/databrowserModule/databrowser/databrowser.component.ts index 0227d9092..7a257e749 100644 --- a/src/ui/databrowserModule/databrowser/databrowser.component.ts +++ b/src/ui/databrowserModule/databrowser/databrowser.component.ts @@ -20,6 +20,9 @@ const { MODALITY_FILTER, LIST_OF_DATASETS } = ARIA_LABELS export class DataBrowser implements OnChanges, OnDestroy, OnInit { + @Input() + disableVirtualScroll: boolean = false + @Input() showList: boolean = true diff --git a/src/ui/databrowserModule/databrowser/databrowser.template.html b/src/ui/databrowserModule/databrowser/databrowser.template.html index e25aeee63..f6982a35a 100644 --- a/src/ui/databrowserModule/databrowser/databrowser.template.html +++ b/src/ui/databrowserModule/databrowser/databrowser.template.html @@ -30,8 +30,11 @@ <!-- if not error, show dataset template --> <ng-template [ngIf]="!fetchError"> - <ng-container *ngTemplateOutlet="datasetTemplate"> - </ng-container> + <ng-template [ngTemplateOutlet]="datasetListTmpl" + [ngIf]="disableVirtualScroll" + [ngIfElse]="datasetVirtualScrollTmpl"> + + </ng-template> </ng-template> </ng-template> @@ -56,7 +59,7 @@ </mat-card-content> </ng-template> -<ng-template #datasetTemplate> +<ng-template #datasetVirtualScrollTmpl> <!-- datawrapper --> <ng-container *ngIf="dataentries | filterDataEntriesByMethods : visibleCountedDataM as filteredDataEntry"> @@ -90,6 +93,32 @@ </ng-container> </ng-template> +<ng-template #datasetListTmpl> + + <ng-container *ngIf="dataentries | filterDataEntriesByMethods : visibleCountedDataM as filteredDataEntry"> + <mat-card-content class="w-100"> + <!-- TODO export aria labels to common/constants --> + <div *ngIf="showList"> + <div *ngFor="let dataset of filteredDataEntry; trackBy: trackByFn; templateCacheSize: 20; let index = index" + class="scroll-element overflow-hidden"> + + <mat-divider *ngIf="index !== 0"></mat-divider> + + <single-dataset-list-view + class="d-block pt-1 pb-1 h-100" + [kgSchema]="(dataset.fullId | getKgSchemaIdFromFullIdPipe)[0]" + [kgId]="(dataset.fullId | getKgSchemaIdFromFullIdPipe)[1]" + [dataset]="dataset" + [ripple]="true"> + + </single-dataset-list-view> + + </div> + </div> + </mat-card-content> + </ng-container> +</ng-template> + <!-- modality picker / filter --> <ng-template #modalitySelector> <mat-accordion class="flex-grow-0 flex-shrink-0"> diff --git a/src/ui/databrowserModule/preview/previewCard/previewCard.style.css b/src/ui/databrowserModule/preview/previewCard/previewCard.style.css index 9c44ae66d..8d0266fe7 100644 --- a/src/ui/databrowserModule/preview/previewCard/previewCard.style.css +++ b/src/ui/databrowserModule/preview/previewCard/previewCard.style.css @@ -1,6 +1,6 @@ .header-container { padding: 16px; - margin: -16px -16px 0 -16px; + margin: -16px!important; padding-top: 6rem; } diff --git a/src/ui/databrowserModule/preview/previewCard/previewCard.template.html b/src/ui/databrowserModule/preview/previewCard/previewCard.template.html index 7b027786b..82a521b2c 100644 --- a/src/ui/databrowserModule/preview/previewCard/previewCard.template.html +++ b/src/ui/databrowserModule/preview/previewCard/previewCard.template.html @@ -1,18 +1,27 @@ <mat-card class="mat-elevation-z4"> <div class="header-container"> <mat-card-title> - {{ file.name || filename }} + {{ singleDsView?.name || file.name || filename }} </mat-card-title> <mat-card-subtitle> <mat-icon fontSet="fas" fontIcon="fa-database"></mat-icon> <span> - Previewing data + Dataset preview </span> </mat-card-subtitle> </div> </mat-card> +<mat-card class="mt-4"> + <single-dataset-view [fullId]="datasetId" + [hideTitle]="true" + [hidePreview]="true" + #singleDsView="singleDatasetView"> + + </single-dataset-view> +</mat-card> + <div class="mt-4"> <layer-browser></layer-browser> </div> diff --git a/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.component.ts b/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.component.ts index e5ee2a4ae..338eca132 100644 --- a/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.component.ts +++ b/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectorRef, Component, Inject, Optional} from "@angular/core"; +import { ChangeDetectorRef, Component, Inject, Optional, Input} from "@angular/core"; import { DatabrowserService, KgSingleDatasetService, @@ -12,7 +12,8 @@ import { MatSnackBar } from "@angular/material/snack-bar"; templateUrl: './singleDataset.template.html', styleUrls: [ `./singleDataset.style.css`, - ] + ], + exportAs: 'singleDatasetView' }) export class SingleDatasetView extends SingleDatasetBase { @@ -26,5 +27,10 @@ export class SingleDatasetView extends SingleDatasetBase { ) { super(dbService, singleDatasetService, cdr,snackbar, data) } + + @Input() + hideTitle = false + @Input() + hidePreview = false } diff --git a/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.template.html b/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.template.html index c0e0b370f..5113d07d4 100644 --- a/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.template.html +++ b/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.template.html @@ -1,6 +1,6 @@ <!-- title --> -<mat-card-subtitle> +<mat-card-subtitle *ngIf="!hideTitle"> <span *ngIf="name; else nameLoading"> {{ name }} </span> @@ -130,26 +130,30 @@ <!-- check if has preview --> - <kg-dataset-list - class="d-none" - [backendUrl]="DS_PREVIEW_URL" - *ngIf="kgId" - (kgDsPrvUpdated)="handleKgDsPrvUpdate($event)" - [kgId]="kgId"> - - </kg-dataset-list> - <iav-dynamic-mat-button - *ngIf="hasPreview" - mat-dialog-close - [iav-dynamic-mat-button-style]="mediaBreakPoint < 2 ? 'mat-button' : 'mat-icon-button'" - [iav-dynamic-mat-button-aria-label]="SHOW_DATASET_PREVIEW_ARIA_LABEL" - (click)="showPreviewList(previewFilesListTemplate)"> - - <span *ngIf="mediaBreakPoint < 2"> - Preview - </span> - <i class="ml-1 far fa-eye"></i> - </iav-dynamic-mat-button> + <ng-template [ngIf]="!hidePreview"> + + <kg-dataset-list + class="d-none" + [backendUrl]="DS_PREVIEW_URL" + *ngIf="kgId" + (kgDsPrvUpdated)="handleKgDsPrvUpdate($event)" + [kgId]="kgId"> + + </kg-dataset-list> + + <iav-dynamic-mat-button + *ngIf="hasPreview" + mat-dialog-close + [iav-dynamic-mat-button-style]="mediaBreakPoint < 2 ? 'mat-button' : 'mat-icon-button'" + [iav-dynamic-mat-button-aria-label]="SHOW_DATASET_PREVIEW_ARIA_LABEL" + (click)="showPreviewList(previewFilesListTemplate)"> + + <span *ngIf="mediaBreakPoint < 2"> + Preview + </span> + <i class="ml-1 far fa-eye"></i> + </iav-dynamic-mat-button> + </ng-template> </ng-template> \ No newline at end of file diff --git a/src/ui/nehubaContainer/nehubaContainer.template.html b/src/ui/nehubaContainer/nehubaContainer.template.html index 8b8cba135..6e46e1ee9 100644 --- a/src/ui/nehubaContainer/nehubaContainer.template.html +++ b/src/ui/nehubaContainer/nehubaContainer.template.html @@ -353,6 +353,7 @@ <ng-template #regionalFeaturesTmpl> <data-browser [template]="templateSelected$ | async" [parcellation]="selectedParcellation" + [disableVirtualScroll]="true" [regions]="[region]"> </data-browser> </ng-template> diff --git a/src/ui/parcellationRegion/regionMenu/regionMenu.style.css b/src/ui/parcellationRegion/regionMenu/regionMenu.style.css index 7cccfc149..ee2db754e 100644 --- a/src/ui/parcellationRegion/regionMenu/regionMenu.style.css +++ b/src/ui/parcellationRegion/regionMenu/regionMenu.style.css @@ -24,6 +24,6 @@ mat-icon .header-container { padding: 16px; - margin: -16px -16px 0 -16px; + margin: -16px!important; padding-top: 6rem; } diff --git a/src/ui/parcellationRegion/regionMenu/regionMenu.template.html b/src/ui/parcellationRegion/regionMenu/regionMenu.template.html index a98832690..7cbfc972b 100644 --- a/src/ui/parcellationRegion/regionMenu/regionMenu.template.html +++ b/src/ui/parcellationRegion/regionMenu/regionMenu.template.html @@ -53,56 +53,6 @@ </button> </mat-card-subtitle> </div> - - <mat-card-content> - <mat-divider></mat-divider> - - <!-- region desc --> - <ng-container *ngIf="region?.description?.length > 0"> - <mat-divider></mat-divider> - <div> - {{ region.description }} - </div> - </ng-container> - - <mat-divider></mat-divider> - - <mat-list class="action-list sm cursor-default"> - - <!-- connectivity --> - <div *ngIf="hasConnectivity" iav-switch #connectivitySwitch="iavSwitch"> - - <mat-list-item mat-ripple - (click)="connectivitySwitch.toggle()" - [attr.aria-label]="SHOW_CONNECTIVITY_DATA"> - <mat-icon fontSet="fab" fontIcon="fa-connectdevelop" mat-list-icon></mat-icon > - <div mat-line> - <span> - Connectivity - </span> - <span class="muted"> - ({{ 1 }}) - </span> - </div> - <mat-icon fontSet="fas" [fontIcon]="connectivitySwitch.switchState ? 'fa-chevron-up' : 'fa-chevron-down'"></mat-icon> - </mat-list-item> - - <!-- connectivity --> - <mat-list-item *ngIf="connectivitySwitch.switchState" mat-ripple (click)="showConnectivity(region.name)"> - <mat-icon fontSet="fas" fontIcon="fa-none" mat-list-icon></mat-icon> - <div mat-line>1000 Brain Study - DTI connectivity</div> - </mat-list-item> - - </div> - - <!-- change template --> - <ng-container *ngIf="showRegionInOtherTmpl"> - <ng-container *ngTemplateOutlet="regionInOtherTemplatesTmpl; context: { regionInOtherTemplates: regionInOtherTemplates$ | async }"> - </ng-container> - </ng-container> - - </mat-list> - </mat-card-content> </mat-card> <!-- ToDo make dynamic with AVAILABLE CONNECTIVITY DATASETS data - get info from atlas viewer core --> -- GitLab