From 10b6e76e819d359cefdbc591430b8a9bf7984b08 Mon Sep 17 00:00:00 2001 From: Joe Boccanfuso Date: Sat, 27 Jun 2026 18:46:38 +0200 Subject: [PATCH 1/2] fix(wsi): render WSIViewport via setDisplaySets by resolving the registered generic dataset --- .../core/src/RenderingEngine/WSIViewport.ts | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/packages/core/src/RenderingEngine/WSIViewport.ts b/packages/core/src/RenderingEngine/WSIViewport.ts index 942dc304f5..58e5cb8fcb 100644 --- a/packages/core/src/RenderingEngine/WSIViewport.ts +++ b/packages/core/src/RenderingEngine/WSIViewport.ts @@ -30,6 +30,7 @@ import { type WSITransformUtilitiesLike, type WSIViewerLike, } from '../utilities/WSIUtilities'; +import { getGenericViewportWSIDataSet } from './GenericViewport/genericViewportDataSetAccess'; let WSIUtilFunctions: WSITransformUtilitiesLike | null = null; const EVENT_POSTRENDER = 'postrender'; @@ -626,6 +627,33 @@ class WSIViewport extends Viewport { }); } + /** + * Renders a registered whole-slide display set. The dataset (imageIds + + * webClient) must first be registered with + * `utilities.genericViewportDataSetMetadataProvider` keyed by `displaySetId`. + * This reads from the same registry as the GenericViewport WSI data provider, + * so the same caller code drives both the legacy and generic render paths. + */ + public async setDisplaySets( + ...entries: Array<{ displaySetId: string; options?: unknown }> + ): Promise { + const [entry] = entries; + if (!entry?.displaySetId) { + throw new Error( + '[WSIViewport] setDisplaySets requires a displaySetId to render whole slide imaging' + ); + } + + const dataSet = getGenericViewportWSIDataSet(entry.displaySetId); + if (!dataSet?.imageIds?.length || !dataSet.options?.webClient) { + throw new Error( + `[WSIViewport] No registered WSI dataset (imageIds + webClient) for display set ${entry.displaySetId}` + ); + } + + await this.setWSI(dataSet.imageIds, dataSet.options.webClient); + } + public postrender = () => { this.refreshRenderValues(); triggerEvent(this.element, EVENTS.IMAGE_RENDERED, { From e0e67d9e65cf57d505f194d74fc830c875cfbf55 Mon Sep 17 00:00:00 2001 From: Joe Boccanfuso Date: Sat, 27 Jun 2026 19:34:26 +0200 Subject: [PATCH 2/2] PR feedback. --- packages/core/src/RenderingEngine/WSIViewport.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/RenderingEngine/WSIViewport.ts b/packages/core/src/RenderingEngine/WSIViewport.ts index 58e5cb8fcb..edda62c2b9 100644 --- a/packages/core/src/RenderingEngine/WSIViewport.ts +++ b/packages/core/src/RenderingEngine/WSIViewport.ts @@ -651,7 +651,7 @@ class WSIViewport extends Viewport { ); } - await this.setWSI(dataSet.imageIds, dataSet.options.webClient); + return this.setDataIds(dataSet.imageIds, dataSet.options); } public postrender = () => {