From ddbe8b38aa9642d68ab280e9590246a1259541cf Mon Sep 17 00:00:00 2001 From: Erik Ziegler Date: Thu, 9 Aug 2018 10:45:58 +0200 Subject: [PATCH] feat(plugins): Add pluginData to viewportData so that plugins can manage their own data --- .../ohif-viewerbase/client/lib/classes/LayoutManager.js | 6 ++++-- .../client/lib/classes/plugins/OHIFPlugin.js | 4 +++- .../client/lib/classes/plugins/ViewportPlugin.js | 7 ++++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Packages/ohif-viewerbase/client/lib/classes/LayoutManager.js b/Packages/ohif-viewerbase/client/lib/classes/LayoutManager.js index da90e8296..0abef3183 100644 --- a/Packages/ohif-viewerbase/client/lib/classes/LayoutManager.js +++ b/Packages/ohif-viewerbase/client/lib/classes/LayoutManager.js @@ -241,16 +241,18 @@ export class LayoutManager { // If we have been provided with a plugin to use, use it. // Otherwise, use whichever plugin is currently in use in this viewport. const plugin = data.plugin || this.viewportData[viewportIndex].plugin; + const pluginData = data.pluginData || this.viewportData[viewportIndex].pluginData; // Update the dictionary of loaded displaySet for the specified viewport this.viewportData[viewportIndex] = { - viewportIndex: viewportIndex, + viewportIndex, displaySetInstanceUid: data.displaySetInstanceUid, seriesInstanceUid: data.seriesInstanceUid, studyInstanceUid: data.studyInstanceUid, renderedCallback: data.renderedCallback, currentImageIdIndex: data.currentImageIdIndex || 0, plugin, + pluginData, }; const newViewportContainer = document.createElement('div'); @@ -282,7 +284,7 @@ export class LayoutManager { container.innerHTML = ''; container.appendChild(newViewportContainer); } - + this.updateSession(); } diff --git a/Packages/ohif-viewerbase/client/lib/classes/plugins/OHIFPlugin.js b/Packages/ohif-viewerbase/client/lib/classes/plugins/OHIFPlugin.js index e91b83920..596addb60 100644 --- a/Packages/ohif-viewerbase/client/lib/classes/plugins/OHIFPlugin.js +++ b/Packages/ohif-viewerbase/client/lib/classes/plugins/OHIFPlugin.js @@ -43,7 +43,9 @@ export class OHIFPlugin { scriptURL += "?" + performance.now(); } - this.loadScript(scriptURL).onload = function() { + const type = plugin.module === true ? 'module' : 'text/javascript' + + this.loadScript(scriptURL, type).onload = function() { const entryPointFunction = OHIF.plugins.entryPoints[plugin.name]; if (entryPointFunction) { diff --git a/Packages/ohif-viewerbase/client/lib/classes/plugins/ViewportPlugin.js b/Packages/ohif-viewerbase/client/lib/classes/plugins/ViewportPlugin.js index f6547eee0..ef33a6175 100644 --- a/Packages/ohif-viewerbase/client/lib/classes/plugins/ViewportPlugin.js +++ b/Packages/ohif-viewerbase/client/lib/classes/plugins/ViewportPlugin.js @@ -64,7 +64,6 @@ export class ViewportPlugin extends OHIFPlugin { const viewportData = layoutManager.viewportData[viewportIndex]; if (viewportData.plugin === this.name) { OHIF.log.info(`setViewportToPlugin: Viewport ${viewportIndex} already set to plugin ${this.name}`); - return; } viewportData.plugin = this.name; @@ -102,16 +101,18 @@ export class ViewportPlugin extends OHIFPlugin { // Retrieve the list of all viewports, so we can figure out the viewport details const allViewports = Array.from(document.querySelectorAll('.viewportContainer')); + const { layoutManager } = OHIF.viewerbase; + emptyPluginDivs.forEach(div => { // Identify the Viewport index, and any display set that is currently // hung in the viewport const viewportIndex = allViewports.indexOf(div.parentNode); - const viewportDetails = { viewportIndex }; + const viewportData = layoutManager.viewportData[viewportIndex]; const displaySet = ViewportPlugin.getDisplaySet(viewportIndex); // Use the plugin's setupViewport function to render the contents // of this viewport. - this.setupViewport(div, viewportDetails, displaySet); + this.setupViewport(div, viewportData, displaySet); }); }