By default other tool state not loaded into the viewport. (set disabled)

This commit is contained in:
James A. Petts 2020-06-15 12:09:48 +01:00
parent e7501933dd
commit 00f0ae4bbc
6 changed files with 96 additions and 14 deletions

View File

@ -1,6 +1,7 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import cornerstoneTools from 'cornerstone-tools'; import cornerstoneTools from 'cornerstone-tools';
import cornerstone from 'cornerstone-core';
import CornerstoneViewport from 'react-cornerstone-viewport'; import CornerstoneViewport from 'react-cornerstone-viewport';
import OHIF from '@ohif/core'; import OHIF from '@ohif/core';
@ -8,6 +9,10 @@ import { ViewportActionBar, useViewportGrid } from '@ohif/ui';
import TOOL_NAMES from './constants/toolNames'; import TOOL_NAMES from './constants/toolNames';
import id from './id'; import id from './id';
const BaseAnnotationTool = cornerstoneTools.importInternal(
'base/BaseAnnotationTool'
);
// const cine = viewportSpecificData.cine; // const cine = viewportSpecificData.cine;
// isPlaying = cine.isPlaying === true; // isPlaying = cine.isPlaying === true;
@ -33,19 +38,65 @@ function OHIFCornerstoneSRViewport({
const onElementEnabled = evt => { const onElementEnabled = evt => {
const eventData = evt.detail; const eventData = evt.detail;
const { element } = eventData; const targetElement = eventData.element;
debugger;
// TODO -> This will only be temporary until we set a tool on, and isn't very customizable.
const globalTools = cornerstoneTools.store.state.globalTools;
const toolNames = Object.keys(globalTools);
Object.keys(globalTools).forEach(globalToolName => {
cornerstoneTools.setToolDisabledForElement(targetElement, globalToolName);
});
debugger;
cornerstoneTools.setToolEnabledForElement(
targetElement,
TOOL_NAMES.DICOM_SR_DISPLAY_TOOL
);
cornerstoneTools.setToolActiveForElement(targetElement, 'PanMultiTouch', {
pointers: 2,
});
cornerstoneTools.setToolActiveForElement(
targetElement,
'ZoomTouchPinch',
{}
);
cornerstoneTools.setToolActiveForElement(targetElement, 'Wwwc', {
mouseButtonMask: 1,
});
cornerstoneTools.setToolActiveForElement(targetElement, 'Pan', {
mouseButtonMask: 4,
});
cornerstoneTools.setToolActiveForElement(targetElement, 'Zoom', {
mouseButtonMask: 2,
});
cornerstoneTools.setToolActiveForElement(
targetElement,
'StackScrollMouseWheel',
{}
);
setTrackingUniqueIdentifiersForElement(targetElement);
setElement(targetElement);
};
const setTrackingUniqueIdentifiersForElement = targetElement => {
const { measurements } = displaySet; const { measurements } = displaySet;
const srModule = cornerstoneTools.getModule(id); const srModule = cornerstoneTools.getModule(id);
srModule.setters.trackingUniqueIdentifiersForElement( srModule.setters.trackingUniqueIdentifiersForElement(
element, targetElement,
measurements.map(measurement => measurement.TrackingUniqueIdentifier), measurements.map(measurement => measurement.TrackingUniqueIdentifier),
measurementSelected measurementSelected
); );
setElement(element);
}; };
useEffect(() => { useEffect(() => {
@ -85,17 +136,34 @@ function OHIFCornerstoneSRViewport({
).then(({ viewportData, activeDisplaySetData }) => { ).then(({ viewportData, activeDisplaySetData }) => {
setViewportData({ ...viewportData }); setViewportData({ ...viewportData });
setActiveDisplaySetData({ ...activeDisplaySetData }); setActiveDisplaySetData({ ...activeDisplaySetData });
if (element !== null) {
cornerstone.updateImage(element);
}
}); });
}; };
useEffect(() => { useEffect(() => {
updateViewport(); if (element !== null) {
debugger;
setTrackingUniqueIdentifiersForElement(element);
}
}, [ }, [
dataSource, dataSource,
displaySet, displaySet,
displaySet.StudyInstanceUID, displaySet.StudyInstanceUID,
displaySet.displaySetInstanceUID, displaySet.displaySetInstanceUID,
]);
useEffect(() => {
updateViewport();
}, [
measurementSelected, measurementSelected,
dataSource,
displaySet,
displaySet.StudyInstanceUID,
displaySet.displaySetInstanceUID,
element,
]); ]);
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -142,8 +210,6 @@ function OHIFCornerstoneSRViewport({
SeriesNumber, SeriesNumber,
} = activeDisplaySetData; } = activeDisplaySetData;
debugger;
const onMeasurementChange = direction => { const onMeasurementChange = direction => {
let newMeausrementSelected = measurementSelected; let newMeausrementSelected = measurementSelected;
@ -306,8 +372,6 @@ async function _getViewportAndActiveDisplaySetData(
SeriesNumber: image0.SeriesNumber, SeriesNumber: image0.SeriesNumber,
}; };
debugger;
return { viewportData, activeDisplaySetData }; return { viewportData, activeDisplaySetData };
} }

View File

@ -9,6 +9,7 @@ const draw = importInternal('drawing/draw');
const drawJoinedLines = importInternal('drawing/drawJoinedLines'); const drawJoinedLines = importInternal('drawing/drawJoinedLines');
const drawCircle = importInternal('drawing/drawCircle'); const drawCircle = importInternal('drawing/drawCircle');
const drawEllipse = importInternal('drawing/drawEllipse'); const drawEllipse = importInternal('drawing/drawEllipse');
const drawHandles = importInternal('drawing/drawHandles');
const getNewContext = importInternal('drawing/getNewContext'); const getNewContext = importInternal('drawing/getNewContext');
const BaseTool = importInternal('base/BaseTool'); const BaseTool = importInternal('base/BaseTool');

View File

@ -1,13 +1,14 @@
import cornerstoneTools from 'cornerstone-tools'; import cornerstoneTools from 'cornerstone-tools';
import cornerstoneMath from 'cornerstone-math';
import cornerstone from 'cornerstone-core';
import TOOL_NAMES from '../constants/toolNames'; import TOOL_NAMES from '../constants/toolNames';
import SCOORD_TYPES from '../constants/scoordTypes'; import SCOORD_TYPES from '../constants/scoordTypes';
import { cornerstone } from '../../../../platform/core/src';
window.cornerstone = cornerstone;
const globalImageIdSpecificToolStateManager = const globalImageIdSpecificToolStateManager =
cornerstoneTools.globalImageIdSpecificToolStateManager; cornerstoneTools.globalImageIdSpecificToolStateManager;
console.log(globalImageIdSpecificToolStateManager);
export default function addMeasurement( export default function addMeasurement(
measurement, measurement,
imageId, imageId,

View File

@ -93,7 +93,11 @@ export default function mode({ modeConfiguration }) {
}, },
}, },
], ],
extensions: ['org.ohif.default', 'org.ohif.cornerstone'], extensions: [
'org.ohif.default',
'org.ohif.cornerstone',
'org.ohif.dicom-sr',
],
sopClassHandlers: [ sopClassHandlers: [
'org.ohif.default.sopClassHandlerModule.stack', 'org.ohif.default.sopClassHandlerModule.stack',
'org.ohif.dicom-sr.sopClassHandlerModule.dicom-sr', 'org.ohif.dicom-sr.sopClassHandlerModule.dicom-sr',

View File

@ -10,6 +10,11 @@ const tracked = {
viewport: 'org.ohif.measurement-tracking.viewportModule.cornerstone-tracked', viewport: 'org.ohif.measurement-tracking.viewportModule.cornerstone-tracked',
}; };
const dicomsr = {
sopClassHandler: 'org.ohif.dicom-sr.sopClassHandlerModule.dicom-sr',
viewport: 'org.ohif.dicom-sr.viewportModule.dicom-sr',
};
export default function mode({ modeConfiguration }) { export default function mode({ modeConfiguration }) {
return { return {
// TODO: We're using this as a route segment // TODO: We're using this as a route segment
@ -60,6 +65,10 @@ export default function mode({ modeConfiguration }) {
namespace: tracked.viewport, namespace: tracked.viewport,
displaySetsToDisplay: [ohif.sopClassHandler], displaySetsToDisplay: [ohif.sopClassHandler],
}, },
{
namespace: dicomsr.viewport,
displaySetsToDisplay: [dicomsr.sopClassHandler],
},
], ],
}, },
}; };
@ -70,8 +79,9 @@ export default function mode({ modeConfiguration }) {
'org.ohif.default', 'org.ohif.default',
'org.ohif.cornerstone', 'org.ohif.cornerstone',
'org.ohif.measurement-tracking', 'org.ohif.measurement-tracking',
'org.ohif.dicom-sr',
], ],
sopClassHandlers: [ohif.sopClassHandler], sopClassHandlers: [ohif.sopClassHandler, dicomsr.sopClassHandler],
}; };
} }

View File

@ -6,6 +6,8 @@ import fetchPaletteColorLookupTableData from '../utils/metadataProvider/fetchPal
import fetchOverlayData from '../utils/metadataProvider/fetchOverlayData'; import fetchOverlayData from '../utils/metadataProvider/fetchOverlayData';
import DicomMetadataStore from '../services/DicomMetadataStore'; import DicomMetadataStore from '../services/DicomMetadataStore';
window.dcmjs = dcmjs;
class MetadataProvider { class MetadataProvider {
constructor() { constructor() {
// Define the main "metadataLookup" private property as an immutable property. // Define the main "metadataLookup" private property as an immutable property.