Enabling viewport enlargement again

This commit is contained in:
Bruno Alves de Faria 2017-11-06 11:51:56 -02:00
parent daefd83be6
commit 5330ba5982
3 changed files with 51 additions and 40 deletions

View File

@ -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;

View File

@ -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);
});

View File

@ -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);
});
}
});