2018-12-12 18:06:25 +01:00
|
|
|
import $ from 'jquery';
|
2018-12-14 14:38:36 +01:00
|
|
|
import { OHIF } from 'ohif-core';
|
2018-12-13 23:24:39 +01:00
|
|
|
//import { StudyPrefetcher } from './classes/StudyPrefetcher';
|
2017-01-16 18:30:54 +01:00
|
|
|
import { displayReferenceLines } from './displayReferenceLines';
|
2016-12-29 14:37:25 +01:00
|
|
|
|
2018-08-08 18:00:53 +02:00
|
|
|
const PLUGIN_CORNERSTONE = 'cornerstone';
|
|
|
|
|
|
2017-01-16 18:30:54 +01:00
|
|
|
/**
|
|
|
|
|
* Sets a viewport element active
|
2018-01-25 20:20:07 +01:00
|
|
|
* @param {node} element DOM element to be activated or viewportIndex
|
2017-01-16 18:30:54 +01:00
|
|
|
*/
|
|
|
|
|
export function setActiveViewport(element) {
|
2018-08-08 18:00:53 +02:00
|
|
|
const $viewports = $('.viewportContainer');
|
|
|
|
|
const viewportIndex = $viewports.index(element);
|
2018-01-25 20:20:07 +01:00
|
|
|
|
2018-08-08 18:00:53 +02:00
|
|
|
const $element = $viewports.eq(viewportIndex);
|
2018-01-25 20:20:07 +01:00
|
|
|
if (!$element.length) {
|
2017-01-16 18:30:54 +01:00
|
|
|
OHIF.log.info('setActiveViewport element does not exist');
|
2015-12-09 15:48:24 +01:00
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2017-01-16 18:30:54 +01:00
|
|
|
OHIF.log.info(`setActiveViewport setting viewport index: ${viewportIndex}`);
|
|
|
|
|
|
|
|
|
|
// If viewport is not active
|
2018-01-25 20:20:07 +01:00
|
|
|
if (!$element.parents('.viewportContainer').hasClass('active')) {
|
2017-01-16 18:30:54 +01:00
|
|
|
// Trigger an event for compatibility with other systems
|
2018-01-25 20:20:07 +01:00
|
|
|
$element.trigger('OHIFBeforeActivateViewport');
|
2017-01-16 18:30:54 +01:00
|
|
|
}
|
|
|
|
|
|
2018-12-03 18:11:39 +01:00
|
|
|
// When an OHIFActivateViewport event is fired, update the Redux state
|
2015-12-09 15:48:24 +01:00
|
|
|
// with the viewport index that it was fired from.
|
2018-12-03 18:11:39 +01:00
|
|
|
window.store.dispatch({
|
|
|
|
|
type: 'SET_VIEWPORT_ACTIVE',
|
|
|
|
|
viewportIndex
|
|
|
|
|
});
|
2015-12-09 15:48:24 +01:00
|
|
|
|
|
|
|
|
// Finally, enable stack prefetching and hide the reference lines from
|
2016-11-04 13:31:15 +01:00
|
|
|
// the newly activated viewport that has a canvas
|
2018-08-08 18:00:53 +02:00
|
|
|
const { layoutManager } = OHIF.viewerbase;
|
|
|
|
|
const viewportData = layoutManager.viewportData[viewportIndex];
|
2016-11-04 13:31:15 +01:00
|
|
|
|
2018-08-08 18:00:53 +02:00
|
|
|
if (viewportData.plugin === PLUGIN_CORNERSTONE &&
|
|
|
|
|
$element.find('canvas').length) {
|
2016-11-04 13:31:15 +01:00
|
|
|
// Cornerstone Tools compare DOM elements (check getEnabledElement cornerstone function)
|
|
|
|
|
// so we can't pass a jQuery object as an argument, otherwise it throws an excepetion
|
2018-08-08 18:00:53 +02:00
|
|
|
const domElement = $element.find('.imageViewerViewport').get(0);
|
2016-11-04 13:31:15 +01:00
|
|
|
displayReferenceLines(domElement);
|
2018-12-13 23:24:39 +01:00
|
|
|
//StudyPrefetcher.getInstance().prefetch();
|
2017-01-26 00:12:36 +01:00
|
|
|
|
2017-01-16 18:30:54 +01:00
|
|
|
// @TODO Add this to OHIFAfterActivateViewport handler...
|
2018-07-20 12:40:09 +02:00
|
|
|
const synchronizer = OHIF.viewer.stackImagePositionOffsetSynchronizer;
|
|
|
|
|
if (!synchronizer) { return; }
|
|
|
|
|
|
|
|
|
|
synchronizer.update();
|
2016-11-04 13:31:15 +01:00
|
|
|
}
|
2015-12-19 04:24:00 +01:00
|
|
|
|
|
|
|
|
// Set the div to focused, so keypress events are handled
|
2016-01-16 04:33:18 +01:00
|
|
|
//$(element).focus();
|
|
|
|
|
//.focus() event breaks in FF&IE
|
2018-01-25 20:20:07 +01:00
|
|
|
$element.triggerHandler('focus');
|
2017-01-16 18:30:54 +01:00
|
|
|
|
|
|
|
|
// Trigger OHIFAfterActivateViewport event on activated instance
|
|
|
|
|
// for compatibility with other systems
|
2018-01-25 20:20:07 +01:00
|
|
|
$element.trigger('OHIFAfterActivateViewport');
|
2017-01-16 18:30:54 +01:00
|
|
|
|
|
|
|
|
}
|