diff --git a/docs/releases/v2.9.0.md b/docs/releases/v2.9.0.md new file mode 100644 index 0000000000000000000000000000000000000000..fa97ea7892e53228813263460519eecf8867b813 --- /dev/null +++ b/docs/releases/v2.9.0.md @@ -0,0 +1,6 @@ +# v2.9.0 + +## Bugfix + +- Select default connectivity profile +- Show connectivity dataset info diff --git a/mkdocs.yml b/mkdocs.yml index 8d57d34a5eec63f8e99f62cf4a40e554b0821b8c..d6c7b67e173b7577f1e79a7a4fda0d59d92bcbfd 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -33,6 +33,7 @@ nav: - Fetching datasets: 'advanced/datasets.md' - Display non-atlas volumes: 'advanced/otherVolumes.md' - Release notes: + - v2.9.0: 'releases/v2.9.0.md' - v2.8.0: 'releases/v2.8.0.md' - v2.7.7: 'releases/v2.7.7.md' - v2.7.6: 'releases/v2.7.6.md' diff --git a/package.json b/package.json index cd2e81a1d5f1c4f4a52ca56b1f5a0dc82d5bb9e9..a38aed3a21dee98a92205763be72d4d0b0202e92 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "interactive-viewer", - "version": "2.8.0", + "version": "2.9.0", "description": "siibra-explorer - explore brain atlases. Based on humanbrainproject/nehuba & google/neuroglancer. Built with angular", "scripts": { "lint": "eslint src --ext .ts", 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 547567b429028c78987f822ea0f613b60b9446c5..18f77fc1b93f298b44f0a0abca283971145655fe 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 @@ -115,10 +115,10 @@ <sxplr-sapiviews-features-connectivity-browser class="pe-all flex-shrink-1" [region]="region" - [types]="hasConnectivityDirective.availableModalities" [sxplr-sapiviews-features-connectivity-browser-atlas]="atlas" [sxplr-sapiviews-features-connectivity-browser-parcellation]="parcellation" [accordionExpanded]="expandedPanel === CONST.CONNECTIVITY" + [types]="hasConnectivityDirective.availableModalities" > </sxplr-sapiviews-features-connectivity-browser> </ng-template> diff --git a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component.spec.ts b/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component.spec.ts index 9442d04c0d9112715b020c7d5d8da535c31275bd..084a7ed862896c530146930484e131b488b06470 100644 --- a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component.spec.ts +++ b/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component.spec.ts @@ -108,7 +108,6 @@ describe('ConnectivityComponent', () => { beforeEach(async () => { fixture = TestBed.createComponent(ConnectivityBrowserComponent) component = fixture.componentInstance - component.types = types const atlas = 'atlases/juelich/iav/atlas/v1.0.0/1' const parcellation = 'minds/core/parcellationatlas/v1.0.0/94c1125b-b87e-45e4-901c-00daee7f2579-290' @@ -116,8 +115,7 @@ describe('ConnectivityComponent', () => { component.atlas = { '@id': atlas } as SapiAtlasModel component.parcellation = { '@id': parcellation } as SapiParcellationModel - - component.selectType('StreamlineCounts') + component.types = types const url = `${endp}/atlases/${encodeURIComponent(atlas)}/parcellations/${encodeURIComponent(parcellation)}/features?type=${component.selectedTypeId}&size=${100}&page=${1}` diff --git a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component.ts b/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component.ts index 850d763b82a330e69d402ae769b4956c3c1ee57a..579e34570f4bb3d2abf69fe7af7d60ea9eefe433 100644 --- a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component.ts +++ b/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.component.ts @@ -18,6 +18,7 @@ import { HttpClient } from "@angular/common/http"; @Component({ selector: 'sxplr-sapiviews-features-connectivity-browser', templateUrl: './connectivityBrowser.template.html', + styleUrls: ['./connectivityBrowser.style.scss'] }) export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy { @@ -57,8 +58,6 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy { } - @Input() types: SapiModalityModel[] = [] - public selectedType: string public selectedTypeId: string public selectedCohort: string @@ -105,6 +104,16 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy { public logDisabled: boolean = true public logChecked: boolean = true + private _types: SapiModalityModel[] = [] + @Input() + set types(val) { + this._types = val + if (val && val.length) this.selectType(val[0].name) + } + get types() { + return this._types + } + @ViewChild('connectivityComponent', {read: ElementRef}) public connectivityComponentElement: ElementRef<any> @ViewChild('fullConnectivityGrid') public fullConnectivityGridElement: ElementRef<any> @@ -214,6 +223,7 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy { this.cohorts = [...new Set(this.fetchedItems.map(item => item.cohort))] this.fetching = false this.changeDetectionRef.detectChanges() + this.selectCohort(this.cohorts[0]) } }) } @@ -265,20 +275,23 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy { }) : ds fetchConnectivity(datasetId=null) { - this.sapi.getParcellation(this.atlas["@id"], this.parcellation["@id"]).getFeatureInstance(datasetId || this.selectedDataset['@id']) - .pipe(catchError(() => { - this.fetching = false - return of(null) - })) - .subscribe(ds=> { - this.selectedDataset = this.fixDatasetFormat(ds) - this.setMatrixData(ds) - this.fetching = false - }) + const parcellation = this.sapi.getParcellation(this.atlas["@id"], this.parcellation["@id"]) + if (parcellation) { + parcellation.getFeatureInstance(datasetId || this.selectedDataset['@id']) + .pipe(catchError(() => { + this.fetching = false + return of(null) + })) + .subscribe(ds => { + this.selectedDataset = this.fixDatasetFormat(ds) + this.setMatrixData(ds) + this.fetching = false + }) + } } // ToDo need to be fixed on configuration side - fixHemisphereNaming(area) { + fixHemisphereNaming(area: string) { if (area.includes(' - left hemisphere')) { return area.replace('- left hemisphere', 'left') } else if (area.includes(' - right hemisphere')) { diff --git a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.style.scss b/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.style.scss new file mode 100644 index 0000000000000000000000000000000000000000..577f01f651e1919092957a31dd898c213594b00a --- /dev/null +++ b/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.style.scss @@ -0,0 +1,3 @@ +::ng-deep label { + margin-bottom: 0 !important; +} \ No newline at end of file diff --git a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.template.html b/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.template.html index b59216a944a65d0001a2d0160035bde3b78e0f02..df2a233d6349bfe8de3b4e06ebca492e2d4695fa 100644 --- a/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.template.html +++ b/src/atlasComponents/sapiViews/features/connectivity/connectivityBrowser/connectivityBrowser.template.html @@ -93,8 +93,16 @@ [disabled]="logDisabled || noConnectivityForRegion">Log 10</mat-checkbox> <button mat-button [matMenuTriggerFor]="exportMenu" [disabled]="!connectedAreas.value"> - <i class="fas fa-download mb-2 mr-2"></i> - <label>Export</label> + <i class="fas fa-download mr-2"></i> + <span>Export</span> + </button> + <button *ngIf="selectedDataset" iav-stop="mousedown click" class="icons" mat-icon-button sxplr-dialog [sxplr-dialog-size]="null" + [sxplr-dialog-data]="{ + title: selectedDataset?.name, + descMd: selectedDataset?.description + '' + selectedDataset?.authors.join(), + actions: selectedDataset | connectivityDoiPipe + }"> + <i class="fas fa-info"></i> </button> </div> diff --git a/src/atlasComponents/sapiViews/features/connectivity/connectivityDoi.pipe.ts b/src/atlasComponents/sapiViews/features/connectivity/connectivityDoi.pipe.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee527989cefa890fb8af7f1cf2fd8bc52411912b --- /dev/null +++ b/src/atlasComponents/sapiViews/features/connectivity/connectivityDoi.pipe.ts @@ -0,0 +1,15 @@ +import { Pipe, PipeTransform } from "@angular/core" +import { SapiParcellationFeatureModel } from "src/atlasComponents/sapi/type" + +@Pipe({ + name: 'connectivityDoiPipe', + pure: true + }) + + export class ConnectivityDoiPipe implements PipeTransform { + public transform(dataset: SapiParcellationFeatureModel): string[] { + const url = `https://search.kg.ebrains.eu/instances/${dataset['dataset_id']}` + return [url] + } + } + \ No newline at end of file diff --git a/src/atlasComponents/sapiViews/features/connectivity/module.ts b/src/atlasComponents/sapiViews/features/connectivity/module.ts index 82134d44f1a4677d2c15ec0c9abcd225a33e73dc..d796c5f22ce7b132574eadbcda22f8a4f672d949 100644 --- a/src/atlasComponents/sapiViews/features/connectivity/module.ts +++ b/src/atlasComponents/sapiViews/features/connectivity/module.ts @@ -5,16 +5,20 @@ import {ConnectivityBrowserComponent} from "src/atlasComponents/sapiViews/featur import {HasConnectivity} from "src/atlasComponents/sapiViews/features/connectivity/hasConnectivity.directive"; import {AngularMaterialModule} from "src/sharedModules"; import {FormsModule} from "@angular/forms"; +import { DialogModule } from "src/ui/dialogInfo"; +import { ConnectivityDoiPipe } from "./connectivityDoi.pipe"; @NgModule({ imports: [ CommonModule, FormsModule, - AngularMaterialModule + AngularMaterialModule, + DialogModule ], declarations: [ ConnectivityBrowserComponent, - HasConnectivity + HasConnectivity, + ConnectivityDoiPipe ], exports: [ ConnectivityBrowserComponent,