diff --git a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js index 8f91e2503..3d0a7b9d0 100644 --- a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js +++ b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js @@ -167,6 +167,10 @@ function addNewMeasurement(mouseEventData) { // Bind the event listener for image rendering $element.on('CornerstoneImageRendered', imageRenderedHandler); + // Bind the tool deactivation and enlargement handlers + $element.on('CornerstoneToolsToolDeactivated', cancelAction); + $element.one('ohif.viewer.viewport.toggleEnlargement', cancelAction); + cornerstone.updateImage(element); const timestamp = new Date().getTime(); @@ -192,6 +196,10 @@ function addNewMeasurement(mouseEventData) { // Unbind the event listener for image rendering $element.off('CornerstoneImageRendered', imageRenderedHandler); + // Unbind the tool deactivation and enlargement handlers + $element.off('CornerstoneToolsToolDeactivated', cancelAction); + $element.off('ohif.viewer.viewport.toggleEnlargement', cancelAction); + // perpendicular line is not connected to long-line measurementData.handles.perpendicularStart.locked = false; diff --git a/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.js b/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.js index 1a67c39ec..e0a567c46 100644 --- a/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.js +++ b/Packages/ohif-lesiontracker/client/components/timepointBrowser/quickSwitch.js @@ -61,16 +61,6 @@ Template.timepointBrowserQuickSwitch.onCreated(() => { Template.timepointBrowserQuickSwitch.onRendered(() => { const instance = Template.instance(); - instance.autorun(() => { - const selectedTimepoint = instance.selectedTimepoint.get(); - const selectedTimepointId = (selectedTimepoint && selectedTimepoint.timepointId) || ''; - const $allBrowserItems = instance.$('.timepoint-browser-item'); - const $browserItem = $allBrowserItems.filter(`[data-id=${selectedTimepointId}]`); - if (!$browserItem.hasClass('active')) { - $browserItem.find('.timepoint-item').trigger('click'); - } - }); - instance.updateActiveStudy = () => { const currentStudy = instance.data.currentStudy.get(); const studyInstanceUid = (currentStudy && currentStudy.studyInstanceUid) || ''; @@ -81,6 +71,16 @@ Template.timepointBrowserQuickSwitch.onRendered(() => { }); }; + instance.autorun(() => { + const selectedTimepoint = instance.selectedTimepoint.get(); + const selectedTimepointId = (selectedTimepoint && selectedTimepoint.timepointId) || ''; + const $allBrowserItems = instance.$('.timepoint-browser-item'); + const $browserItem = $allBrowserItems.filter(`[data-id=${selectedTimepointId}]`); + if (!$browserItem.hasClass('active')) { + $browserItem.find('.timepoint-item').trigger('click'); + } + }); + instance.autorun(instance.updateActiveStudy); }); diff --git a/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js b/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js index 396be0938..cd2c1667f 100644 --- a/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js +++ b/Packages/ohif-viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js @@ -2,7 +2,6 @@ import { Meteor } from 'meteor/meteor'; import { Template } from 'meteor/templating'; import { Tracker } from 'meteor/tracker'; import { Session } from 'meteor/session'; -import { Random } from 'meteor/random'; import { $ } from 'meteor/jquery'; // OHIF Modules import { OHIF } from 'meteor/ohif:core'; @@ -382,7 +381,7 @@ const loadDisplaySetIntoViewport = (data, templateData) => { // If it was, no changes are necessary, so stop here. const activeViewportIndex = Session.get('activeViewport'); if (viewportIndex === activeViewportIndex) { - return; + return true; } // Reset the focus, even if we don't need to re-enable reference lines or prefetching @@ -514,9 +513,10 @@ Template.imageViewerViewport.onRendered(function() { // When the imageViewerViewport template is rendered const element = this.find('.imageViewerViewport'); this.element = element; + this.$element = $(element); // Display the loading indicator for this element - $(element).siblings('.imageViewerLoadingIndicator').css('display', 'block'); + this.$element.siblings('.imageViewerLoadingIndicator').css('display', 'block'); // Get the current active viewport index, if this viewport has the same index, // add the CSS 'active' class to highlight this viewport. @@ -548,8 +548,8 @@ Template.imageViewerViewport.onRendered(function() { // instructions and then stop here since we don't know what to display in the viewport. if (!displaySetInstanceUid) { element.classList.add('empty'); - $(element).siblings('.imageViewerLoadingIndicator').css('display', 'none'); - $(element).siblings('.viewportInstructions').show(); + this.$element.siblings('.imageViewerLoadingIndicator').css('display', 'none'); + this.$element.siblings('.viewportInstructions').show(); return; } @@ -558,6 +558,34 @@ Template.imageViewerViewport.onRendered(function() { data.study = study; setDisplaySet(data, displaySetInstanceUid, templateData); + + // Double click event handlers to handle viewport enlargement + this.$element.on('CornerstoneToolsMouseDoubleClick CornerstoneToolsDoubleTap', event => { + this.$element.trigger('ohif.viewer.viewport.toggleEnlargement'); + + // Get the double clicked viewport index + const viewportIndex = $('.imageViewerViewport').index(event.currentTarget); + + // Enlarge the double clicked viewport + const layoutManager = OHIF.viewerbase.layoutManager; + layoutManager.toggleEnlargement(viewportIndex); + + // Wait for DOM re-rendering and update the active viewport + Tracker.afterFlush(() => { + let viewportIndexToZoom; + // Check if the viewer is zoomed + if (layoutManager.isZoomed) { + // Set the active viewport as the only one visible + viewportIndexToZoom = 0; + } else { + // Set the active viewport as the previous zoomed viewport + viewportIndexToZoom = layoutManager.zoomedViewportIndex || 0; + } + // Set zoomed viewport as active... + const element = $('.imageViewerViewport').get(viewportIndexToZoom); + setActiveViewport(element); + }); + }); }); Template.imageViewerViewport.onDestroyed(function() { @@ -607,30 +635,5 @@ Template.imageViewerViewport.events({ 'OHIFActivateViewport .imageViewerViewport'(event) { OHIF.log.info('imageViewerViewport OHIFActivateViewport'); setActiveViewport(event.currentTarget); - }, - - 'CornerstoneToolsMouseDoubleClick .imageViewerViewport, CornerstoneToolsDoubleTap .imageViewerViewport'(event) { - // Get the double clicked viewport index - const viewportIndex = $('.imageViewerViewport').index(event.currentTarget); - - // Enlarge the double clicked viewport - const layoutManager = OHIF.viewerbase.layoutManager; - layoutManager.toggleEnlargement(viewportIndex); - - // Wait for DOM re-rendering and update the active viewport - Tracker.afterFlush(() => { - let viewportIndexToZoom; - // Check if the viewer is zoomed - if (layoutManager.isZoomed) { - // Set the active viewport as the only one visible - viewportIndexToZoom = 0; - } else { - // Set the active viewport as the previous zoomed viewport - viewportIndexToZoom = layoutManager.zoomedViewportIndex || 0; - } - // Set zoomed viewport as active... - const element = $('.imageViewerViewport').get(viewportIndexToZoom); - setActiveViewport(element); - }); } });