From 7519006e6418db49ba08c22028ec32964ec00f81 Mon Sep 17 00:00:00 2001 From: Evren Ozkan Date: Tue, 23 May 2017 16:20:23 -0400 Subject: [PATCH] Fix bugs which prevents loading multi-frame instances with custom image loaders - Construct image id based on frame (if defined) for custom image loaders as well - Use DICOMFileLoadingListener for multi-frame images and image loaders except wado --- .../client/lib/classes/StudyLoadingListener.js | 2 +- .../ohif-viewerbase/client/lib/getImageId.js | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Packages/ohif-viewerbase/client/lib/classes/StudyLoadingListener.js b/Packages/ohif-viewerbase/client/lib/classes/StudyLoadingListener.js index 10936e6f3..1c99bd5ae 100644 --- a/Packages/ohif-viewerbase/client/lib/classes/StudyLoadingListener.js +++ b/Packages/ohif-viewerbase/client/lib/classes/StudyLoadingListener.js @@ -373,7 +373,7 @@ class StudyLoadingListener { // how many frames has already been loaded (bytes/s instead of frames/s). if ((schema === 'wadors') || !stackMetaData.isMultiFrame) { return new StackLoadingListener(stack); - } else if ((schema === 'dicomweb') || (schema === 'wadouri')) { + } else { return new DICOMFileLoadingListener(stack); } } diff --git a/Packages/ohif-viewerbase/client/lib/getImageId.js b/Packages/ohif-viewerbase/client/lib/getImageId.js index 0fbac6d2f..42f043454 100644 --- a/Packages/ohif-viewerbase/client/lib/getImageId.js +++ b/Packages/ohif-viewerbase/client/lib/getImageId.js @@ -1,5 +1,17 @@ import { getWADORSImageId } from './getWADORSImageId'; +// https://stackoverflow.com/a/6021027/3895126 +function updateQueryStringParameter(uri, key, value) { + var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i"); + var separator = uri.indexOf('?') !== -1 ? "&" : "?"; + if (uri.match(re)) { + return uri.replace(re, '$1' + key + "=" + value + '$2'); + } + else { + return uri + separator + key + "=" + value; + } +} + /** * Obtain an imageId for Cornerstone from an image instance * @@ -14,7 +26,11 @@ export function getImageId(instance, frame, thumbnail) { } if (instance.url) { - return instance.url; + if (frame !== undefined) { + instance.url = updateQueryStringParameter(instance.url, 'frame', frame); + } + + return instance.url; } const renderingAttr = thumbnail ? 'thumbnailRendering' : 'imageRendering';