refactor(@ohif/extension-cornerstone): Error handling and removal of viewportData clearing on compon

This commit is contained in:
Erik Ziegler 2019-06-15 11:47:07 +02:00
parent 04e00fad20
commit 537057e4d6
3 changed files with 35 additions and 12 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "@ohif/extension-cornerstone", "name": "@ohif/extension-cornerstone",
"version": "0.0.34", "version": "0.0.36",
"description": "OHIF extension for Cornerstone", "description": "OHIF extension for Cornerstone",
"author": "OHIF", "author": "OHIF",
"license": "MIT", "license": "MIT",

View File

@ -47,10 +47,6 @@ const mapDispatchToProps = (dispatch, ownProps) => {
dispatch(setViewportSpecificData(viewportIndex, data)); dispatch(setViewportSpecificData(viewportIndex, data));
}, },
clearViewportSpecificData: () => {
dispatch(clearViewportSpecificData(viewportIndex));
},
/** /**
* Our component "enables" the underlying dom element on "componentDidMount" * Our component "enables" the underlying dom element on "componentDidMount"
* It listens for that event, and then emits the enabledElement. We can grab * It listens for that event, and then emits the enabledElement. We can grab

View File

@ -54,31 +54,60 @@ class OHIFCornerstoneViewport extends Component {
StackManager.clearStacks(); StackManager.clearStacks();
} }
/**
* Obtain the CornerstoneTools Stack for the specified display set.
*
* @param {Object[]} studies
* @param {String} studyInstanceUid
* @param {String} displaySetInstanceUid
* @param {String} [sopInstanceUid]
* @param {Number} [frameIndex=1]
* @return {Object} CornerstoneTools Stack
*/
static getCornerstoneStack( static getCornerstoneStack(
studies, studies,
studyInstanceUid, studyInstanceUid,
displaySetInstanceUid, displaySetInstanceUid,
sopInstanceUid, sopInstanceUid,
frameIndex frameIndex = 0
) { ) {
if (!studies || !studies.length) {
throw new Error('Studies not provided.');
}
if (!studyInstanceUid) {
throw new Error('StudyInstanceUID not provided.')
}
if (!displaySetInstanceUid) {
throw new Error('StudyInstanceUID not provided.')
}
// Create shortcut to displaySet // Create shortcut to displaySet
const study = studies.find( const study = studies.find(
study => study.studyInstanceUid === studyInstanceUid study => study.studyInstanceUid === studyInstanceUid
); );
if (!study) {
throw new Error('Study not found.');
}
const displaySet = study.displaySets.find(set => { const displaySet = study.displaySets.find(set => {
return set.displaySetInstanceUid === displaySetInstanceUid; return set.displaySetInstanceUid === displaySetInstanceUid;
}); });
if (!displaySet) {
throw new Error('Display Set not found.');
}
// Get stack from Stack Manager // Get stack from Stack Manager
const storedStack = StackManager.findOrCreateStack(study, displaySet); const storedStack = StackManager.findOrCreateStack(study, displaySet);
// Clone the stack here so we don't mutate it // Clone the stack here so we don't mutate it
const stack = Object.assign({}, storedStack); const stack = Object.assign({}, storedStack);
stack.currentImageIdIndex = frameIndex;
if (frameIndex !== undefined) { if (sopInstanceUid) {
stack.currentImageIdIndex = frameIndex;
} else if (sopInstanceUid) {
const index = stack.imageIds.findIndex(imageId => { const index = stack.imageIds.findIndex(imageId => {
const sopCommonModule = cornerstone.metaData.get( const sopCommonModule = cornerstone.metaData.get(
'sopCommonModule', 'sopCommonModule',
@ -94,10 +123,8 @@ class OHIFCornerstoneViewport extends Component {
if (index > -1) { if (index > -1) {
stack.currentImageIdIndex = index; stack.currentImageIdIndex = index;
} else { } else {
stack.currentImageIdIndex = 0; console.warn('SOPInstanceUID provided was not found in specified DisplaySet');
} }
} else {
stack.currentImageIdIndex = 0;
} }
return stack; return stack;