Merge branch 'feat/ui-v2-rebase-services' of github.com:OHIF/Viewers into feat/ui-v2-rebase-services

This commit is contained in:
dannyrb 2020-06-17 08:48:38 -04:00
commit 16aa777bda

View File

@ -9,9 +9,7 @@ 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( const scrollToIndex = cornerstoneTools.importInternal('util/scrollToIndex');
'base/BaseAnnotationTool'
);
// const cine = viewportSpecificData.cine; // const cine = viewportSpecificData.cine;
@ -34,18 +32,19 @@ function OHIFCornerstoneSRViewport({
const [activeDisplaySetData, setActiveDisplaySetData] = useState({}); const [activeDisplaySetData, setActiveDisplaySetData] = useState({});
const [element, setElement] = useState(null); const [element, setElement] = useState(null);
const { viewports } = viewportGrid; const { viewports, activeViewportIndex } = viewportGrid;
const onElementEnabled = evt => { const onElementEnabled = evt => {
const eventData = evt.detail; const eventData = evt.detail;
const targetElement = eventData.element; const targetElement = eventData.element;
// TODO -> This will only be temporary until we set a tool on, and isn't very customizable. // TODO -> This will only be temporary until we set a tool on, and isn't very customizable.
// Need to discuss how to deal with tools in general in the redesign, since we
// Previously just had Tool mode state global across the entire viewer.
const globalTools = cornerstoneTools.store.state.globalTools; const globalTools = cornerstoneTools.store.state.globalTools;
const globalToolNames = Object.keys(globalTools);
const toolNames = Object.keys(globalTools); globalToolNames.forEach(globalToolName => {
Object.keys(globalTools).forEach(globalToolName => {
cornerstoneTools.setToolDisabledForElement(targetElement, globalToolName); cornerstoneTools.setToolDisabledForElement(targetElement, globalToolName);
}); });
@ -106,7 +105,7 @@ function OHIFCornerstoneSRViewport({
displaySet.displaySetInstanceUID, displaySet.displaySetInstanceUID,
]); ]);
const updateViewport = () => { const updateViewport = newMeasurementSelected => {
const { const {
StudyInstanceUID, StudyInstanceUID,
displaySetInstanceUID, displaySetInstanceUID,
@ -126,14 +125,16 @@ function OHIFCornerstoneSRViewport({
_getViewportAndActiveDisplaySetData( _getViewportAndActiveDisplaySetData(
dataSource, dataSource,
displaySet, displaySet,
measurementSelected, newMeasurementSelected,
DisplaySetService, DisplaySetService,
element element
).then(({ viewportData, activeDisplaySetData }) => { ).then(({ viewportData, activeDisplaySetData }) => {
setViewportData({ ...viewportData }); setViewportData({ ...viewportData });
setActiveDisplaySetData({ ...activeDisplaySetData }); setActiveDisplaySetData({ ...activeDisplaySetData });
setMeasurementSelected(newMeasurementSelected);
if (element !== null) { if (element !== null) {
scrollToIndex(element, viewportData.stack.currentImageIdIndex);
cornerstone.updateImage(element); cornerstone.updateImage(element);
} }
}); });
@ -151,9 +152,8 @@ function OHIFCornerstoneSRViewport({
]); ]);
useEffect(() => { useEffect(() => {
updateViewport(); updateViewport(measurementSelected);
}, [ }, [
measurementSelected,
dataSource, dataSource,
displaySet, displaySet,
displaySet.StudyInstanceUID, displaySet.StudyInstanceUID,
@ -161,6 +161,10 @@ function OHIFCornerstoneSRViewport({
element, element,
]); ]);
const firstViewportIndexWithMatchingDisplaySetUid = viewports.findIndex(
vp => vp.displaySetInstanceUID === displaySet.displaySetInstanceUID
);
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
let childrenWithProps = null; let childrenWithProps = null;
@ -206,27 +210,27 @@ function OHIFCornerstoneSRViewport({
} = activeDisplaySetData; } = activeDisplaySetData;
const onMeasurementChange = direction => { const onMeasurementChange = direction => {
let newMeausrementSelected = measurementSelected; let newMeasurementSelected = measurementSelected;
if (direction === 'right') { if (direction === 'right') {
newMeausrementSelected++; newMeasurementSelected++;
if (newMeausrementSelected >= measurementCount) { if (newMeasurementSelected >= measurementCount) {
newMeausrementSelected = 0; newMeasurementSelected = 0;
} }
} else { } else {
newMeausrementSelected--; newMeasurementSelected--;
if (newMeausrementSelected < 0) { if (newMeasurementSelected < 0) {
newMeausrementSelected = measurementCount - 1; newMeasurementSelected = measurementCount - 1;
} }
} }
if (newMeausrementSelected === measurementSelected) { if (newMeasurementSelected === measurementSelected) {
// TODO -> Jump to image in this case. // TODO -> Jump to image in this case.
} }
setMeasurementSelected(newMeausrementSelected); updateViewport(newMeasurementSelected);
}; };
console.log(currentImageIdIndex); console.log(currentImageIdIndex);
@ -235,8 +239,10 @@ function OHIFCornerstoneSRViewport({
<> <>
<ViewportActionBar <ViewportActionBar
onSeriesChange={onMeasurementChange} onSeriesChange={onMeasurementChange}
showPatientInfo={viewportIndex === activeViewportIndex}
showNavArrows={viewportIndex === activeViewportIndex}
studyData={{ studyData={{
label: `${measurementSelected + 1}`, label: _viewportLabels[firstViewportIndexWithMatchingDisplaySetUid],
isTracked: false, isTracked: false,
isLocked: false, isLocked: false,
studyDate: StudyDate, studyDate: StudyDate,
@ -264,12 +270,15 @@ function OHIFCornerstoneSRViewport({
isStackPrefetchEnabled={true} // todo isStackPrefetchEnabled={true} // todo
isPlaying={false} isPlaying={false}
frameRate={24} frameRate={24}
isOverlayVisible={false}
/> />
{childrenWithProps} {childrenWithProps}
</> </>
); );
} }
const _viewportLabels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'];
OHIFCornerstoneSRViewport.propTypes = { OHIFCornerstoneSRViewport.propTypes = {
displaySet: PropTypes.object.isRequired, displaySet: PropTypes.object.isRequired,
viewportIndex: PropTypes.number.isRequired, viewportIndex: PropTypes.number.isRequired,