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 PropTypes from 'prop-types';
import cornerstoneTools from 'cornerstone-tools';
import cornerstone from 'cornerstone-core';
import CornerstoneViewport from 'react-cornerstone-viewport';
import OHIF from '@ohif/core';
@ -8,6 +9,10 @@ import { ViewportActionBar, useViewportGrid } from '@ohif/ui';
import TOOL_NAMES from './constants/toolNames';
import id from './id';
const BaseAnnotationTool = cornerstoneTools.importInternal(
'base/BaseAnnotationTool'
);
// const cine = viewportSpecificData.cine;
// isPlaying = cine.isPlaying === true;
@ -33,19 +38,65 @@ function OHIFCornerstoneSRViewport({
const onElementEnabled = evt => {
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 srModule = cornerstoneTools.getModule(id);
srModule.setters.trackingUniqueIdentifiersForElement(
element,
targetElement,
measurements.map(measurement => measurement.TrackingUniqueIdentifier),
measurementSelected
);
setElement(element);
};
useEffect(() => {
@ -85,17 +136,34 @@ function OHIFCornerstoneSRViewport({
).then(({ viewportData, activeDisplaySetData }) => {
setViewportData({ ...viewportData });
setActiveDisplaySetData({ ...activeDisplaySetData });
if (element !== null) {
cornerstone.updateImage(element);
}
});
};
useEffect(() => {
updateViewport();
if (element !== null) {
debugger;
setTrackingUniqueIdentifiersForElement(element);
}
}, [
dataSource,
displaySet,
displaySet.StudyInstanceUID,
displaySet.displaySetInstanceUID,
]);
useEffect(() => {
updateViewport();
}, [
measurementSelected,
dataSource,
displaySet,
displaySet.StudyInstanceUID,
displaySet.displaySetInstanceUID,
element,
]);
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -142,8 +210,6 @@ function OHIFCornerstoneSRViewport({
SeriesNumber,
} = activeDisplaySetData;
debugger;
const onMeasurementChange = direction => {
let newMeausrementSelected = measurementSelected;
@ -306,8 +372,6 @@ async function _getViewportAndActiveDisplaySetData(
SeriesNumber: image0.SeriesNumber,
};
debugger;
return { viewportData, activeDisplaySetData };
}

View File

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

View File

@ -1,13 +1,14 @@
import cornerstoneTools from 'cornerstone-tools';
import cornerstoneMath from 'cornerstone-math';
import cornerstone from 'cornerstone-core';
import TOOL_NAMES from '../constants/toolNames';
import SCOORD_TYPES from '../constants/scoordTypes';
import { cornerstone } from '../../../../platform/core/src';
window.cornerstone = cornerstone;
const globalImageIdSpecificToolStateManager =
cornerstoneTools.globalImageIdSpecificToolStateManager;
console.log(globalImageIdSpecificToolStateManager);
export default function addMeasurement(
measurement,
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: [
'org.ohif.default.sopClassHandlerModule.stack',
'org.ohif.dicom-sr.sopClassHandlerModule.dicom-sr',

View File

@ -10,6 +10,11 @@ const 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 }) {
return {
// TODO: We're using this as a route segment
@ -60,6 +65,10 @@ export default function mode({ modeConfiguration }) {
namespace: tracked.viewport,
displaySetsToDisplay: [ohif.sopClassHandler],
},
{
namespace: dicomsr.viewport,
displaySetsToDisplay: [dicomsr.sopClassHandler],
},
],
},
};
@ -70,8 +79,9 @@ export default function mode({ modeConfiguration }) {
'org.ohif.default',
'org.ohif.cornerstone',
'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 DicomMetadataStore from '../services/DicomMetadataStore';
window.dcmjs = dcmjs;
class MetadataProvider {
constructor() {
// Define the main "metadataLookup" private property as an immutable property.