ohif-viewer/Packages/ohif-lesiontracker/client/lib/configureTargetToolsHandles.js
2017-12-28 08:59:25 -02:00

53 lines
1.9 KiB
JavaScript

import { _ } from 'meteor/underscore';
import { OHIF } from 'meteor/ohif:core';
OHIF.lesiontracker.configureTargetToolsHandles = () => {
const toggleLabel = (measurementData, eventData, doneCallback) => {
delete measurementData.isCreating;
if (OHIF.lesiontracker.removeMeasurementIfInvalid(measurementData, eventData)) {
return;
}
const getHandlePosition = key => _.pick(measurementData.handles[key], ['x', 'y']);
const start = getHandlePosition('start');
const end = getHandlePosition('end');
const getDirection = axis => start[axis] < end[axis] ? 1 : -1;
const position = OHIF.cornerstone.pixelToPage(eventData.element, end);
OHIF.measurements.toggleLabelButton({
measurement: measurementData,
element: eventData.element,
measurementApi: OHIF.viewer.measurementApi,
position: position,
direction: {
x: getDirection('x'),
y: getDirection('y')
}
});
};
const callbackConfig = {
// TODO: Check the position for these, the Add Label button position seems very awkward
getMeasurementLocationCallback: toggleLabel,
changeMeasurementLocationCallback: toggleLabel,
};
// TODO: Reconcile this with the configuration in toolManager it would be better to have this
// all in one place.
const appendConfig = toolType => {
const tool = cornerstoneTools[toolType];
const toolConfig = tool.getConfiguration();
const config = Object.assign({}, toolConfig, callbackConfig);
tool.setConfiguration(config);
};
// Append the callback configuration to bidirectional tool
appendConfig('bidirectional');
// Append the callback configuration to CR and UN tools
appendConfig('targetCR');
appendConfig('targetUN');
};