From 725ced9eb4f85a00aa0c24d89a26fbf8496b217c Mon Sep 17 00:00:00 2001 From: Xiao Gui <xgui3783@gmail.com> Date: Thu, 14 Sep 2023 11:11:37 +0200 Subject: [PATCH] fix: saneurl, hover/context menu --- backend/app/app.py | 1 + backend/app/sane_url.py | 2 +- docs/releases/v2.13.1.md | 8 +++++++ mkdocs.yml | 1 + package.json | 2 +- .../entry/entry.flattened.component.html | 4 ++-- .../nehubaViewer/nehubaViewer.component.ts | 23 +++++++++++++++---- .../nehubaViewerContainer.component.ts | 5 ++-- .../viewerCmp/viewerCmp.template.html | 2 +- 9 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 docs/releases/v2.13.1.md diff --git a/backend/app/app.py b/backend/app/app.py index 952d1c082..5d8c8be2c 100644 --- a/backend/app/app.py +++ b/backend/app/app.py @@ -35,6 +35,7 @@ for vip_route in vip_routes: app.include_router(quickstart_router, prefix="/quickstart") app.include_router(saneurl_router, prefix="/saneUrl") +app.include_router(saneurl_router, prefix="/saneurl") app.include_router(saneurl_router, prefix="/go") app.include_router(plugin_router, prefix="/plugins") app.include_router(user_router, prefix="/user") diff --git a/backend/app/sane_url.py b/backend/app/sane_url.py index 707b2c30f..947466933 100644 --- a/backend/app/sane_url.py +++ b/backend/app/sane_url.py @@ -127,7 +127,7 @@ data_proxy_store = SaneUrlDPStore() async def get_short(short_id:str, request: Request): try: existing_json = data_proxy_store.get(short_id) - accept = request.headers.get("Accept") + accept = request.headers.get("Accept", "") if "text/html" in accept: hashed_path = existing_json.get("hashPath") return RedirectResponse(f"{HOST_PATHNAME}/#{hashed_path}") diff --git a/docs/releases/v2.13.1.md b/docs/releases/v2.13.1.md new file mode 100644 index 000000000..5872a5e48 --- /dev/null +++ b/docs/releases/v2.13.1.md @@ -0,0 +1,8 @@ +# v2.13.1 + +## Bugfixes + +- fixed saneurl query without accept header +- added `saneurl` also to the acceptable route +- fixes `Unknown` on hover prompt, fixes some issues where context menu behaves +- fixes unscrollable feature container on touch devices diff --git a/mkdocs.yml b/mkdocs.yml index 53929148e..da0c7cd79 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.13.1: 'releases/v2.13.1.md' - v2.13.0: 'releases/v2.13.0.md' - v2.12.5: 'releases/v2.12.5.md' - v2.12.4: 'releases/v2.12.4.md' diff --git a/package.json b/package.json index 61905b375..4a5fc8a31 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "siibra-explorer", - "version": "2.13.0", + "version": "2.13.1", "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/features/entry/entry.flattened.component.html b/src/features/entry/entry.flattened.component.html index bf4ba0534..a7067c508 100644 --- a/src/features/entry/entry.flattened.component.html +++ b/src/features/entry/entry.flattened.component.html @@ -187,11 +187,11 @@ let-feature let-last="last"> + <!-- n.b. do not introduce mattooltip in scrollable container --> + <!-- it will override scrollability --> <button mat-button class="virtual-scroll-item sxplr-w-100" - [matTooltip]="feature.name" - matTooltipPosition="right" (click)="onClickFeature(feature)"> {{ feature.name }} </button> diff --git a/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts b/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts index 9ff4c75cc..3871a62d8 100644 --- a/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts +++ b/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts @@ -403,22 +403,24 @@ export class NehubaViewerUnit implements OnDestroy { : null public loadNehuba() { - this.nehubaViewer = this.exportNehuba.createNehubaViewer(this.config, (err: string) => { + + const { registerActionListener, createNehubaViewer } = this.exportNehuba + + this.nehubaViewer = createNehubaViewer(this.config, (err: string) => { /* print in debug mode */ this.log.error(err) }); (window as any).nehubaViewer = this.nehubaViewer + const viewer = window['viewer'] + /** * Hide all layers except the base layer (template) * Then show the layers referenced in multiNgIdLabelIndexMap */ - - /* creation of the layout is done on next frame, hence the settimeout */ const patchSliceview = async () => { - const viewer = window['viewer'] viewer.inputEventBindings.sliceView.set("at:wheel", "proxy-wheel") viewer.inputEventBindings.sliceView.set("at:control+shift+wheel", "proxy-wheel-alt") await (async () => { @@ -426,6 +428,7 @@ export class NehubaViewerUnit implements OnDestroy { while (lenPanels === 0) { lenPanels = viewer.display.panels.size + /* creation of the layout is done on next frame, hence the settimeout */ await new Promise(rs => setTimeout(rs, 150)) } })() @@ -433,6 +436,9 @@ export class NehubaViewerUnit implements OnDestroy { viewer.inputEventBindings.sliceView.set("at:control+shift+wheel", "proxy-wheel-10") viewer.display.panels.forEach(sliceView => patchSliceViewPanel(sliceView, this.exportNehuba, this.multplier)) } + + viewer.inputEventBindings.sliceView.set("at:touchhold1", { action: "noop", stopPropagation: false }) + viewer.inputEventBindings.perspectiveView.set("at:touchhold1", { action: "noop", stopPropagation: false }) patchSliceview() this.newViewerInit() @@ -914,6 +920,13 @@ export class NehubaViewerUnit implements OnDestroy { } } + +const noop = (event: MouseEvent) => { + // TODO either emit contextmenu + // or capture longtouch on higher level as contextmenu + // at the moment, this is required to override default behavior (move to cursur location) +} + const patchSliceViewPanel = (sliceViewPanel: any, exportNehuba: any, mulitplier: Float32Array) => { // patch draw calls to dispatch viewerportToData @@ -950,6 +963,8 @@ const patchSliceViewPanel = (sliceViewPanel: any, exportNehuba: any, mulitplier: navigationState.pose.translateVoxelsRelative(offset) }) } + + registerActionListener(sliceViewPanel.element, `noop`, noop) } export interface ViewerState { diff --git a/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerContainer.component.ts b/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerContainer.component.ts index 2c0184e79..6c0c0eed5 100644 --- a/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerContainer.component.ts +++ b/src/viewerModule/nehuba/nehubaViewerInterface/nehubaViewerContainer.component.ts @@ -66,8 +66,9 @@ export class NehubaViewerContainer implements AfterViewInit, OnDestroy { labelIndices: [ Number(v.segmentId) ], regions: (() => { const record = multiNgIdsRegionsLabelIndexMap[v.layer.name] || {} - if (!record) return [] - return [record[Number(v.segmentId)]] + const region = record[Number(v.segmentId)] + if (!record || !region) return [] + return [region] })() } }) diff --git a/src/viewerModule/viewerCmp/viewerCmp.template.html b/src/viewerModule/viewerCmp/viewerCmp.template.html index 4810207ef..dff8e4b55 100644 --- a/src/viewerModule/viewerCmp/viewerCmp.template.html +++ b/src/viewerModule/viewerCmp/viewerCmp.template.html @@ -902,7 +902,7 @@ <div class="sxplr-list-like-button-body"> - <ng-template [ngIf]="data.point"> + <ng-template [ngIf]="data?.point?.point"> <span class="sxplr-list-like-button-body-line"> {{ data.point | nmToMm | numbers | addUnitAndJoin : '' }} (mm) </span> -- GitLab