fix(windowLevelPresets) Apply W/L from Image by default when displaying a new image, unless a Custom W/L or W/L Preset has been applied.
This commit is contained in:
parent
25646e3192
commit
ec7dc7ca5a
@ -27,6 +27,8 @@ const allCornerstoneEvents = ['click', 'cornerstonetoolsmousedown', 'cornerstone
|
|||||||
* @param data {object} Object containing the study, series, and viewport element to be used
|
* @param data {object} Object containing the study, series, and viewport element to be used
|
||||||
*/
|
*/
|
||||||
const loadDisplaySetIntoViewport = (data, templateData) => {
|
const loadDisplaySetIntoViewport = (data, templateData) => {
|
||||||
|
const wlPresets = OHIF.viewerbase.wlPresets;
|
||||||
|
|
||||||
OHIF.log.info('imageViewerViewport loadDisplaySetIntoViewport');
|
OHIF.log.info('imageViewerViewport loadDisplaySetIntoViewport');
|
||||||
|
|
||||||
// Make sure we have all the data required to render the series
|
// Make sure we have all the data required to render the series
|
||||||
@ -211,6 +213,9 @@ const loadDisplaySetIntoViewport = (data, templateData) => {
|
|||||||
cornerstone.resize(element, true);
|
cornerstone.resize(element, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set/store W/L preset data to Default on first display
|
||||||
|
wlPresets.updateElementWLPresetData(element);
|
||||||
|
|
||||||
// Remove the data for this viewport from the ViewportLoading object
|
// Remove the data for this viewport from the ViewportLoading object
|
||||||
// This will stop the loading percentage complete from being displayed.
|
// This will stop the loading percentage complete from being displayed.
|
||||||
delete window.ViewportLoading[viewportIndex];
|
delete window.ViewportLoading[viewportIndex];
|
||||||
@ -274,6 +279,7 @@ const loadDisplaySetIntoViewport = (data, templateData) => {
|
|||||||
// (e.g. following a change of window or zoom)
|
// (e.g. following a change of window or zoom)
|
||||||
const onImageRendered = (event) => {
|
const onImageRendered = (event) => {
|
||||||
const eventData = event.detail;
|
const eventData = event.detail;
|
||||||
|
const { viewport, element } = eventData;
|
||||||
|
|
||||||
// Attention: Adding OHIF.log.info in this function may decrease the performance
|
// Attention: Adding OHIF.log.info in this function may decrease the performance
|
||||||
// since this callback function is called multiple times (eg: when a tool is
|
// since this callback function is called multiple times (eg: when a tool is
|
||||||
@ -288,10 +294,12 @@ const loadDisplaySetIntoViewport = (data, templateData) => {
|
|||||||
Session.set('CornerstoneImageRendered' + viewportIndex, Math.random());
|
Session.set('CornerstoneImageRendered' + viewportIndex, Math.random());
|
||||||
|
|
||||||
// Save the current viewport into the OHIF.viewer.data global variable
|
// Save the current viewport into the OHIF.viewer.data global variable
|
||||||
const viewport = cornerstone.getViewport(element);
|
|
||||||
layoutManager.viewportData[viewportIndex].viewport = viewport;
|
layoutManager.viewportData[viewportIndex].viewport = viewport;
|
||||||
OHIF.viewer.data.loadedSeriesData[viewportIndex].viewport = viewport;
|
OHIF.viewer.data.loadedSeriesData[viewportIndex].viewport = viewport;
|
||||||
|
|
||||||
|
// Update the W/L Preset data, if necessary
|
||||||
|
wlPresets.updateElementWLPresetData(element);
|
||||||
|
|
||||||
// Check if it has onImageRendered loadAndCacheImage callback
|
// Check if it has onImageRendered loadAndCacheImage callback
|
||||||
if (typeof callbacks.onImageRendered === 'function') {
|
if (typeof callbacks.onImageRendered === 'function') {
|
||||||
callbacks.onImageRendered(event, eventData, viewportIndex, templateData);
|
callbacks.onImageRendered(event, eventData, viewportIndex, templateData);
|
||||||
@ -345,6 +353,10 @@ const loadDisplaySetIntoViewport = (data, templateData) => {
|
|||||||
OHIF.viewer.data.loadedSeriesData[viewportIndex].currentImageIdIndex = imageIdIndex;
|
OHIF.viewer.data.loadedSeriesData[viewportIndex].currentImageIdIndex = imageIdIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const wlPresetData = cornerstone.getElementData(element, 'wlPreset');
|
||||||
|
const wlPresetDataName = wlPresetData && wlPresetData.name;
|
||||||
|
wlPresets.applyWLPreset(wlPresetDataName, element);
|
||||||
|
|
||||||
// Check if it has onNewImage loadAndCacheImage callback
|
// Check if it has onNewImage loadAndCacheImage callback
|
||||||
if (typeof callbacks.onNewImage === 'function') {
|
if (typeof callbacks.onNewImage === 'function') {
|
||||||
callbacks.onNewImage(event, eventData, viewportIndex, templateData);
|
callbacks.onNewImage(event, eventData, viewportIndex, templateData);
|
||||||
|
|||||||
@ -6,8 +6,8 @@ import { OHIF } from 'meteor/ohif:core';
|
|||||||
import { cornerstone } from 'meteor/ohif:cornerstone';
|
import { cornerstone } from 'meteor/ohif:cornerstone';
|
||||||
import { viewportUtils } from './viewportUtils';
|
import { viewportUtils } from './viewportUtils';
|
||||||
|
|
||||||
const WL_PRESET_CUSTOM = 'Custom';
|
const WL_PRESET_CUSTOM = 'WL_PRESET_CUSTOM';
|
||||||
const WL_PRESET_DEFAULT = 'Default';
|
const WL_PRESET_DEFAULT = 'WL_PRESET_DEFAULT';
|
||||||
const WL_STORAGE_KEY = `WindowLevelPresetsDefinitions`;
|
const WL_STORAGE_KEY = `WindowLevelPresetsDefinitions`;
|
||||||
|
|
||||||
OHIF.viewer.defaultWLPresets = {
|
OHIF.viewer.defaultWLPresets = {
|
||||||
@ -59,29 +59,37 @@ class WindowLevelPresetsManager {
|
|||||||
this.storeFunction = storeFunction;
|
this.storeFunction = storeFunction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the enabledElement data for the Cornerstone element
|
||||||
|
* to reflect the current W/L preset which is applied.
|
||||||
|
*
|
||||||
|
* @param {HTMLElement} element
|
||||||
|
*/
|
||||||
updateElementWLPresetData(element) {
|
updateElementWLPresetData(element) {
|
||||||
const wlPresetData = cornerstone.getElementData(element, 'wlPreset');
|
const wlPresetData = cornerstone.getElementData(element, 'wlPreset');
|
||||||
const enabledElement = cornerstone.getEnabledElement(element);
|
const enabledElement = cornerstone.getEnabledElement(element);
|
||||||
const { viewport, image } = enabledElement;
|
const { viewport, image } = enabledElement;
|
||||||
const { windowCenter, windowWidth } = viewport.voi;
|
const { windowCenter, windowWidth } = viewport.voi;
|
||||||
let preset, presetName;
|
let presetName;
|
||||||
|
|
||||||
if (windowWidth === image.windowWidth && windowCenter === image.windowCenter) {
|
if (windowWidth === image.windowWidth && windowCenter === image.windowCenter) {
|
||||||
presetName = WL_PRESET_DEFAULT;
|
presetName = WL_PRESET_DEFAULT;
|
||||||
} else {
|
} else {
|
||||||
const WLPresets = OHIF.viewer.wlPresets;
|
const WLPresets = OHIF.viewer.wlPresets;
|
||||||
for (let index in WLPresets) {
|
|
||||||
if (!WLPresets.hasOwnProperty(index)) continue;
|
const currentPreset = Object.values(WLPresets).find(currentPreset => {
|
||||||
const currentPreset = WLPresets[index];
|
return (windowCenter === currentPreset.wc &&
|
||||||
if (windowCenter === currentPreset.wc && windowWidth === currentPreset.ww) {
|
windowWidth === currentPreset.ww);
|
||||||
preset = currentPreset;
|
});
|
||||||
presetName = preset.id;
|
|
||||||
break;
|
if (currentPreset) {
|
||||||
}
|
presetName = currentPreset.id;
|
||||||
|
} else {
|
||||||
|
presetName = WL_PRESET_CUSTOM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wlPresetData.name = presetName || WL_PRESET_CUSTOM;
|
wlPresetData.name = presetName;
|
||||||
wlPresetData.ww = windowWidth;
|
wlPresetData.ww = windowWidth;
|
||||||
wlPresetData.wc = windowCenter;
|
wlPresetData.wc = windowCenter;
|
||||||
|
|
||||||
@ -95,7 +103,7 @@ class WindowLevelPresetsManager {
|
|||||||
/**
|
/**
|
||||||
* Set specified W/L preset on given element on fallback to default W/L preset if the specified preset is not valid.
|
* Set specified W/L preset on given element on fallback to default W/L preset if the specified preset is not valid.
|
||||||
* @param {String} presetName The desired W/L preset to be applied
|
* @param {String} presetName The desired W/L preset to be applied
|
||||||
* @param {DOMElement} element An enabled viewport DOM Element.
|
* @param {HTMLElement} element An enabled viewport DOM Element.
|
||||||
*/
|
*/
|
||||||
applyWLPreset(presetName, element) {
|
applyWLPreset(presetName, element) {
|
||||||
const wlPresets = OHIF.viewer.wlPresets;
|
const wlPresets = OHIF.viewer.wlPresets;
|
||||||
@ -124,8 +132,6 @@ class WindowLevelPresetsManager {
|
|||||||
// Update the viewport
|
// Update the viewport
|
||||||
cornerstone.setViewport(element, viewport);
|
cornerstone.setViewport(element, viewport);
|
||||||
|
|
||||||
OHIF.log.info('WLPresets::Applying WL Preset: ' + presetName);
|
|
||||||
|
|
||||||
// Notify other components about W/L Preset changes
|
// Notify other components about W/L Preset changes
|
||||||
Session.set('OHIFWlPresetApplied', presetName);
|
Session.set('OHIFWlPresetApplied', presetName);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user