From 6d6f174f9400041ae0c01c198b5882942145986c Mon Sep 17 00:00:00 2001 From: Erik Ziegler Date: Fri, 6 Nov 2015 20:52:28 +0100 Subject: [PATCH] Added double-click to zoom viewports --- .../imageViewerViewport.js | 3 +- .../imageViewerViewports.js | 71 +++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) diff --git a/Packages/viewerbase/components/viewer/imageViewerViewport/imageViewerViewport.js b/Packages/viewerbase/components/viewer/imageViewerViewport/imageViewerViewport.js index b989d318d..b32c5891f 100644 --- a/Packages/viewerbase/components/viewer/imageViewerViewport/imageViewerViewport.js +++ b/Packages/viewerbase/components/viewer/imageViewerViewport/imageViewerViewport.js @@ -284,6 +284,7 @@ function loadSeriesIntoViewport(data) { currentImageIdIndex: data.currentImageIdIndex, viewport: viewport }; + ViewerData[contentId].loadedSeriesData = OHIF.viewer.loadedSeriesData; // Check if image plane (orientation / loction) data is present for the current image var imagePlane = cornerstoneTools.metaData.get('imagePlane', image.imageId); @@ -446,5 +447,5 @@ Template.imageViewerViewport.events({ var element = e.currentTarget; enablePrefetchOnElement(element); displayReferenceLines(element); - }, + } }); \ No newline at end of file diff --git a/Packages/viewerbase/components/viewer/imageViewerViewports/imageViewerViewports.js b/Packages/viewerbase/components/viewer/imageViewerViewports/imageViewerViewports.js index 9b52aee3e..7550d2921 100644 --- a/Packages/viewerbase/components/viewer/imageViewerViewports/imageViewerViewports.js +++ b/Packages/viewerbase/components/viewer/imageViewerViewports/imageViewerViewports.js @@ -67,4 +67,75 @@ Template.imageViewerViewports.helpers({ } return array; }, +}); + +var savedSeriesData, + savedViewportRows, + savedViewportColumns; + +Template.imageViewerViewports.events({ + 'dblclick .imageViewerViewport': function(e) { + var container = $(".viewerMain").get(0); + var data; + var contentId = this.contentId || $("#viewer").parents(".tab-pane.active").attr('id'); + + // If there is more than one viewport on screen + // And one of them is double-clicked, it should be rendered alone + // If it is double-clicked again, the viewer should revert to the previous layout + if ($(e.currentTarget).hasClass('zoomed')) { + // Revert to saved settings + ViewerData[contentId].loadedSeriesData = $.extend(true, {}, savedSeriesData); + ViewerData[contentId].viewportRows = savedViewportRows; + ViewerData[contentId].viewportColumns = savedViewportColumns; + + savedViewportRows = 0; + savedViewportColumns = 0; + + data = { + viewportRows: ViewerData[contentId].viewportRows, + viewportColumns: ViewerData[contentId].viewportColumns, + }; + + // Render the imageViewerViewports template with these settings + $('#imageViewerViewports').remove(); + UI.renderWithData(Template.imageViewerViewports, data, container); + + // Remove the 'zoomed' class from any viewports + $('.imageViewerViewport').removeClass('zoomed'); + } else { + // Zoom to single viewport + + // If only one viewport is on-screen, stop here + if (ViewerData[contentId].viewportRows === 1 && + ViewerData[contentId].viewportColumns === 1) { + return; + } + + // Save the current settings + savedSeriesData = $.extend(true, {}, ViewerData[contentId].loadedSeriesData); + savedViewportRows = ViewerData[contentId].viewportRows; + savedViewportColumns = ViewerData[contentId].viewportColumns; + + // Get the clicked-on viewport's index + var viewportIndex = this.viewportIndex; + + // Set the first viewport's data to be the same as the currently clicked-on viewport + ViewerData[contentId].loadedSeriesData[0] = ViewerData[contentId].loadedSeriesData[viewportIndex]; + + // Set the basic template data + data = { + viewportRows: 1, + viewportColumns: 1, + }; + + // Render the imageViewerViewports template with these settings + $('#imageViewerViewports').remove(); + UI.renderWithData(Template.imageViewerViewports, data, container); + + // Add the 'zoomed' class to the lone remaining viewport + $('.imageViewerViewport').eq(0).addClass('zoomed'); + + } + log.info('dblclick'); + } }); \ No newline at end of file