diff --git a/LesionTracker/client/components/viewer/viewer.js b/LesionTracker/client/components/viewer/viewer.js index 5b0b0a041..ebaf484f5 100644 --- a/LesionTracker/client/components/viewer/viewer.js +++ b/LesionTracker/client/components/viewer/viewer.js @@ -1,15 +1,21 @@ +import { Meteor } from 'meteor/meteor'; import { Template } from 'meteor/templating'; import { Session } from 'meteor/session'; import { ReactiveDict } from 'meteor/reactive-dict'; import { _ } from 'meteor/underscore'; +import { $ } from 'meteor/jquery'; import { OHIF } from 'meteor/ohif:core'; import 'meteor/ohif:viewerbase'; import 'meteor/ohif:metadata'; -Session.set('ViewerMainReady', false); -Session.set('TimepointsReady', false); -Session.set('MeasurementsReady', false); +Meteor.startup(() => { + Session.set('ViewerMainReady', false); + Session.set('TimepointsReady', false); + Session.set('MeasurementsReady', false); + + OHIF.viewer.stackImagePositionOffsetSynchronizer = new OHIF.viewerbase.StackImagePositionOffsetSynchronizer(); +}); Template.viewer.onCreated(() => { const toolManager = OHIF.viewerbase.toolManager; @@ -24,6 +30,7 @@ Template.viewer.onCreated(() => { instance.data.state.set('rightSidebar', Session.get('rightSidebar')); const contentId = instance.data.contentId; + const viewportUtils = OHIF.viewerbase.viewportUtils; OHIF.viewer.functionList = $.extend(OHIF.viewer.functionList, { toggleLesionTrackerTools: OHIF.lesiontracker.toggleLesionTrackerTools, @@ -36,15 +43,15 @@ Template.viewer.onCreated(() => { toolManager.setActiveTool('nonTarget'); }, // Viewport functions - toggleCineDialog: OHIF.viewerbase.viewportUtils.toggleCineDialog, - clearTools: OHIF.viewerbase.viewportUtils.clearTools, - resetViewport: OHIF.viewerbase.viewportUtils.resetViewport, - invert: OHIF.viewerbase.viewportUtils.invert, - flipV: OHIF.viewerbase.viewportUtils.flipV, - flipH: OHIF.viewerbase.viewportUtils.flipH, - rotateL: OHIF.viewerbase.viewportUtils.rotateL, - rotateR: OHIF.viewerbase.viewportUtils.rotateR, - linkStackScroll: OHIF.viewerbase.viewportUtils.linkStackScroll + toggleCineDialog: viewportUtils.toggleCineDialog, + clearTools: viewportUtils.clearTools, + resetViewport: viewportUtils.resetViewport, + invert: viewportUtils.invert, + flipV: viewportUtils.flipV, + flipH: viewportUtils.flipH, + rotateL: viewportUtils.rotateL, + rotateR: viewportUtils.rotateR, + linkStackScroll: viewportUtils.linkStackScroll }); if (ViewerData[contentId].loadedSeriesData) { diff --git a/OHIFViewer/client/components/viewer/viewer.js b/OHIFViewer/client/components/viewer/viewer.js index b2ecef971..e4a23f6a0 100644 --- a/OHIFViewer/client/components/viewer/viewer.js +++ b/OHIFViewer/client/components/viewer/viewer.js @@ -1,26 +1,38 @@ +import { Meteor } from 'meteor/meteor'; +import { Session } from 'meteor/session'; +import { Template } from 'meteor/templating'; +import { ReactiveDict } from 'meteor/reactive-dict'; + import { OHIF } from 'meteor/ohif:core'; import 'meteor/ohif:viewerbase'; import 'meteor/ohif:metadata'; -OHIF.viewer = OHIF.viewer || {}; -OHIF.viewer.defaultTool = 'wwwc'; -OHIF.viewer.refLinesEnabled = true; -OHIF.viewer.cine = { - framesPerSecond: 24, - loop: true -}; +Meteor.startup(() => { + Session.setDefault('activeViewport', false); + Session.setDefault('leftSidebar', false); + Session.setDefault('rightSidebar', false); -OHIF.viewer.functionList = { - toggleCineDialog: OHIF.viewerbase.viewportUtils.toggleCineDialog, - toggleCinePlay: OHIF.viewerbase.viewportUtils.toggleCinePlay, - clearTools: OHIF.viewerbase.viewportUtils.clearTools, - resetViewport: OHIF.viewerbase.viewportUtils.resetViewport, - invert: OHIF.viewerbase.viewportUtils.invert -}; + OHIF.viewer = OHIF.viewer || {}; + OHIF.viewer.defaultTool = 'wwwc'; + OHIF.viewer.refLinesEnabled = true; + OHIF.viewer.cine = { + framesPerSecond: 24, + loop: true + }; + + const viewportUtils = OHIF.viewerbase.viewportUtils; + + OHIF.viewer.functionList = { + toggleCineDialog: viewportUtils.toggleCineDialog, + toggleCinePlay: viewportUtils.toggleCinePlay, + clearTools: viewportUtils.clearTools, + resetViewport: viewportUtils.resetViewport, + invert: viewportUtils.invert + }; + + OHIF.viewer.stackImagePositionOffsetSynchronizer = new OHIF.viewerbase.StackImagePositionOffsetSynchronizer(); +}); -Session.setDefault('activeViewport', false); -Session.setDefault('leftSidebar', false); -Session.setDefault('rightSidebar', false); Template.viewer.onCreated(() => { const instance = Template.instance(); diff --git a/Packages/ohif-hanging-protocols/client/protocolEngine.js b/Packages/ohif-hanging-protocols/client/protocolEngine.js index 96e1b39e5..1a00d23ce 100644 --- a/Packages/ohif-hanging-protocols/client/protocolEngine.js +++ b/Packages/ohif-hanging-protocols/client/protocolEngine.js @@ -4,7 +4,6 @@ import { _ } from 'meteor/underscore'; // OHIF Modules import { OHIF } from 'meteor/ohif:core'; import 'meteor/ohif:viewerbase'; -import 'meteor/ohif:metadata'; // Define a global variable that will be used to refer to the Protocol Engine // It must be populated by HP.setEngine when the Viewer is initialized and a ProtocolEngine diff --git a/Packages/ohif-hanging-protocols/package.js b/Packages/ohif-hanging-protocols/package.js index 5abd1b1ee..b9ec6ba61 100755 --- a/Packages/ohif-hanging-protocols/package.js +++ b/Packages/ohif-hanging-protocols/package.js @@ -19,7 +19,6 @@ Package.onUse(function(api) { api.use('validatejs'); // Our custom packages - api.use('ohif:metadata'); api.use('ohif:viewerbase'); api.addAssets('assets/dots.svg', 'client'); diff --git a/Packages/ohif-viewerbase/client/index.js b/Packages/ohif-viewerbase/client/index.js index 6e53dfe15..96e90e92d 100644 --- a/Packages/ohif-viewerbase/client/index.js +++ b/Packages/ohif-viewerbase/client/index.js @@ -5,7 +5,6 @@ import { Viewerbase } from '../namespace'; */ import './collections'; -import './lib/stackImagePositionOffsetSynchronizer.js'; import './lib/debugReactivity'; /** @@ -208,3 +207,7 @@ Viewerbase.TypeSafeCollection = TypeSafeCollection; // OHIFError import { OHIFError } from './lib/classes/OHIFError'; Viewerbase.OHIFError = OHIFError; + +// StackImagePositionOffsetSynchronizer +import { StackImagePositionOffsetSynchronizer } from './lib/classes/StackImagePositionOffsetSynchronizer'; +Viewerbase.StackImagePositionOffsetSynchronizer = StackImagePositionOffsetSynchronizer; diff --git a/Packages/ohif-viewerbase/client/lib/stackImagePositionOffsetSynchronizer.js b/Packages/ohif-viewerbase/client/lib/classes/StackImagePositionOffsetSynchronizer.js similarity index 96% rename from Packages/ohif-viewerbase/client/lib/stackImagePositionOffsetSynchronizer.js rename to Packages/ohif-viewerbase/client/lib/classes/StackImagePositionOffsetSynchronizer.js index e30d98927..74e86866a 100644 --- a/Packages/ohif-viewerbase/client/lib/stackImagePositionOffsetSynchronizer.js +++ b/Packages/ohif-viewerbase/client/lib/classes/StackImagePositionOffsetSynchronizer.js @@ -1,9 +1,9 @@ import { OHIF } from 'meteor/ohif:core'; import { Session } from 'meteor/session'; import { $ } from 'meteor/jquery'; -import { toolManager } from './toolManager'; +import { toolManager } from '../toolManager'; -class StackImagePositionOffsetSynchronizer { +export class StackImagePositionOffsetSynchronizer { constructor() { this.active = false; this.syncedViewports = []; @@ -208,6 +208,4 @@ class StackImagePositionOffsetSynchronizer { OHIF.log.info(`StackImagePositionOffsetSynchronizer getViewportImageNormal: ${errorMessage}`); } } -} - -OHIF.viewer.stackImagePositionOffsetSynchronizer = new StackImagePositionOffsetSynchronizer(); \ No newline at end of file +}; \ No newline at end of file diff --git a/Packages/ohif-viewerbase/client/lib/helpers/isDisplaySetActive.js b/Packages/ohif-viewerbase/client/lib/helpers/isDisplaySetActive.js index 6b2e9af44..1ea9fe31e 100644 --- a/Packages/ohif-viewerbase/client/lib/helpers/isDisplaySetActive.js +++ b/Packages/ohif-viewerbase/client/lib/helpers/isDisplaySetActive.js @@ -1,7 +1,6 @@ import { Template } from 'meteor/templating'; import { Session } from 'meteor/session'; import { $ } from 'meteor/jquery'; -import { viewportUtils } from '../viewportUtils'; import { OHIF } from 'meteor/ohif:core'; import 'meteor/ohif:viewerbase'; @@ -32,12 +31,6 @@ Template.registerHelper('isDisplaySetActive', (displaySetInstanceUid, viewportIn // (Note, viewportData may have more entries!) const currentNumberOfViewports = OHIF.viewerbase.layoutManager.getNumberOfViewports(); - // Get active viewport element - const activeViewport = viewportUtils.getActiveViewportElement(); - - // Get viewports elements - const viewportsElement = $('.imageViewerViewport'); - // Loop through the viewport data up until the currently displayed // number of viewports const viewportData = OHIF.viewerbase.layoutManager.viewportData; @@ -45,7 +38,7 @@ Template.registerHelper('isDisplaySetActive', (displaySetInstanceUid, viewportIn const data = viewportData[i]; // If the display set is displayed in this viewport and is active, stop here - if (data && data.displaySetInstanceUid === displaySetInstanceUid && viewportsElement.get(data.viewportIndex) === activeViewport) { + if (data && data.displaySetInstanceUid === displaySetInstanceUid) { result = true; break; } diff --git a/Packages/ohif-viewerbase/client/lib/viewportUtils.js b/Packages/ohif-viewerbase/client/lib/viewportUtils.js index 0976d6369..fafbcc565 100644 --- a/Packages/ohif-viewerbase/client/lib/viewportUtils.js +++ b/Packages/ohif-viewerbase/client/lib/viewportUtils.js @@ -124,6 +124,10 @@ const clearTools = () => { const linkStackScroll = () => { const synchronizer = OHIF.viewer.stackImagePositionOffsetSynchronizer; + if(!synchronizer) { + return; + } + if(synchronizer.isActive()) { synchronizer.deactivate(); } else {