From 42308dd77462c752ccfc0aae6cf006dcbbe3ffab Mon Sep 17 00:00:00 2001 From: Xiao Gui <xgui3783@gmail.com> Date: Tue, 12 Oct 2021 16:03:38 +0200 Subject: [PATCH] hotfix: region centroid hotfix: origin dataset --- src/atlasComponents/parcellationRegion/region.base.ts | 5 +++++ .../regionMenu/regionMenu.template.html | 6 +++--- src/state/effects/viewerState.useEffect.ts | 10 +++++----- src/util/siibraApiConstants/fn.ts | 5 +++-- src/util/siibraApiConstants/types.ts | 11 ++++++----- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/atlasComponents/parcellationRegion/region.base.ts b/src/atlasComponents/parcellationRegion/region.base.ts index b6e234f7b..baa623fc8 100644 --- a/src/atlasComponents/parcellationRegion/region.base.ts +++ b/src/atlasComponents/parcellationRegion/region.base.ts @@ -59,6 +59,11 @@ export class RegionBase { this.rgbDarkmode = l < 0.4 } + get originDatainfos(){ + if (!this._region) return [] + return this._region._dataset_specs || this._region.originDatainfos + } + get region(){ return this._region } diff --git a/src/atlasComponents/parcellationRegion/regionMenu/regionMenu.template.html b/src/atlasComponents/parcellationRegion/regionMenu/regionMenu.template.html index 9717bea44..1849ae929 100644 --- a/src/atlasComponents/parcellationRegion/regionMenu/regionMenu.template.html +++ b/src/atlasComponents/parcellationRegion/regionMenu/regionMenu.template.html @@ -47,7 +47,7 @@ </button> <!-- explore doi --> - <ng-template let-infos [ngIf]="region?.originDatainfos"> + <ng-template let-infos [ngIf]="originDatainfos"> <ng-container *ngFor="let info of infos"> <a *ngFor="let url of info.urls" [href]="url.doi | doiParserPipe" @@ -67,8 +67,8 @@ <mat-accordion class="d-block mt-2"> <!-- description --> - <ng-template [ngIf]="(region.originDatainfos || []).length > 0"> - <ng-container *ngFor="let originData of region.originDatainfos"> + <ng-template [ngIf]="(originDatainfos || []).length > 0"> + <ng-container *ngFor="let originData of originDatainfos"> <ng-template #descTmpl> <markdown-dom [markdown]="originData.description" class="text-muted text-sm"> diff --git a/src/state/effects/viewerState.useEffect.ts b/src/state/effects/viewerState.useEffect.ts index 8474c9d2b..e1c78a6db 100644 --- a/src/state/effects/viewerState.useEffect.ts +++ b/src/state/effects/viewerState.useEffect.ts @@ -14,6 +14,7 @@ import { CONST } from 'common/constants' import { viewerStateFetchedAtlasesSelector, viewerStateGetSelectedAtlas } from "src/services/state/viewerState/selectors"; import { viewerStateChangeNavigation } from "src/services/state/viewerState/actions"; import { cvtNavigationObjToNehubaConfig } from 'src/viewerModule/nehuba/util' +import { getPosFromRegion } from "src/util/siibraApiConstants/fn"; const defaultPerspectiveZoom = 1e6 const defaultZoom = 1e6 @@ -402,15 +403,14 @@ export class ViewerStateControllerUseEffect implements OnDestroy { return this.pureService.getRegionDetail(selectedAtlas['@id'], selectedParcellation['@id'], selectedTemplate['@id'], region).pipe( map(regDetail => { const pos = (() => { - if (!regDetail) throw new Error(`region detail not found!`) - if (!regDetail.props) throw new Error(`region does not have props defined!`) - if (!regDetail.props.length) throw new Error(`region props not found!`) - return regDetail.props[0].centroid_mm + const position = getPosFromRegion(regDetail) + if (!position) throw new Error(`centroid not found`) + return position })() return viewerStateChangeNavigation({ navigation: { - position: pos.map(v => v * 1e6), + position: pos, animation: {}, } }) diff --git a/src/util/siibraApiConstants/fn.ts b/src/util/siibraApiConstants/fn.ts index cf820dcf6..d1cc7ff55 100644 --- a/src/util/siibraApiConstants/fn.ts +++ b/src/util/siibraApiConstants/fn.ts @@ -1,6 +1,7 @@ import { TRegionDetail } from "./types"; export function getPosFromRegion(region: TRegionDetail){ - if (!region?.props?.[0]) return null - return region.props[0].centroid_mm.map(v => v*1e6) as [number, number, number] + if (!region?.props) return null + if (!region.props.components?.[0]) return null + return region.props.components[0].centroid.map(v => v*1e6) as [number, number, number] } \ No newline at end of file diff --git a/src/util/siibraApiConstants/types.ts b/src/util/siibraApiConstants/types.ts index b73781a02..62fc6057d 100644 --- a/src/util/siibraApiConstants/types.ts +++ b/src/util/siibraApiConstants/types.ts @@ -165,11 +165,12 @@ export type TRegionDetail = { }[] hasRegionalMap: boolean props: { - centroid_mm: [number, number, number] - volume_mm: number - surface_mm: number - is_cortical: number - }[] + components: { + centroid: [number, number, number] + volume: number + }[] + space: any + } links: { [key: string]: string } -- GitLab