wip on react transition 5
This commit is contained in:
parent
5568490819
commit
1ace720566
@ -126,8 +126,6 @@ class CornerstoneViewport extends Component {
|
|||||||
className="CornerstoneViewport viewportElement"
|
className="CornerstoneViewport viewportElement"
|
||||||
onContextMenu={this.onContextMenu}
|
onContextMenu={this.onContextMenu}
|
||||||
tabIndex='0'
|
tabIndex='0'
|
||||||
unselectable='on'
|
|
||||||
onSelectStart='return false;'
|
|
||||||
ref={input => {
|
ref={input => {
|
||||||
this.element = input;
|
this.element = input;
|
||||||
}}
|
}}
|
||||||
@ -203,9 +201,9 @@ class CornerstoneViewport extends Component {
|
|||||||
onImageRendered() {
|
onImageRendered() {
|
||||||
const viewport = cornerstone.getViewport(this.element);
|
const viewport = cornerstone.getViewport(this.element);
|
||||||
|
|
||||||
this.setState({
|
/*this.setState({
|
||||||
viewport
|
viewport
|
||||||
});
|
});*/
|
||||||
}
|
}
|
||||||
|
|
||||||
onNewImage() {
|
onNewImage() {
|
||||||
@ -416,30 +414,45 @@ class CornerstoneViewport extends Component {
|
|||||||
if (
|
if (
|
||||||
this.state.displaySetInstanceUid !== this.props.viewportData.displaySetInstanceUid
|
this.state.displaySetInstanceUid !== this.props.viewportData.displaySetInstanceUid
|
||||||
) {
|
) {
|
||||||
this.setState({
|
const { displaySetInstanceUid, studyInstanceUid, currentImageIdIndex } = this.props.viewportData;
|
||||||
displaySetInstanceUid: this.props.viewportData.displaySetInstanceUid
|
|
||||||
|
// Create shortcut to displaySet
|
||||||
|
const study = OHIF.viewer.Studies.findBy({ studyInstanceUid });
|
||||||
|
|
||||||
|
const displaySet = study.displaySets.find(set => {
|
||||||
|
return set.displaySetInstanceUid === displaySetInstanceUid;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Get stack from Stack Manager
|
||||||
|
const stack = StackManager.findOrCreateStack(study, displaySet);
|
||||||
|
|
||||||
const stackData = cornerstoneTools.getToolState(this.element, 'stack');
|
const stackData = cornerstoneTools.getToolState(this.element, 'stack');
|
||||||
let currentStack = stackData && stackData.data[0];
|
let currentStack = stackData && stackData.data[0];
|
||||||
|
|
||||||
if (!currentStack) {
|
if (!currentStack) {
|
||||||
currentStack = {
|
currentStack = {
|
||||||
currentImageIdIndex: this.state.stack.currentImageIdIndex,
|
currentImageIdIndex: currentImageIdIndex,
|
||||||
imageIds: this.state.stack.imageIds
|
imageIds: stack.imageIds
|
||||||
};
|
};
|
||||||
|
|
||||||
cornerstoneTools.addStackStateManager(this.element, ['stack']);
|
cornerstoneTools.addStackStateManager(this.element, ['stack']);
|
||||||
cornerstoneTools.addToolState(this.element, 'stack', currentStack);
|
cornerstoneTools.addToolState(this.element, 'stack', currentStack);
|
||||||
} else {
|
} else {
|
||||||
// TODO: we should make something like setToolState by an ID
|
// TODO: we should make something like setToolState by an ID
|
||||||
currentStack.currentImageIdIndex = this.state.stack.currentImageIdIndex;
|
currentStack.currentImageIdIndex = currentImageIdIndex;
|
||||||
currentStack.imageIds = this.state.stack.imageIds;
|
currentStack.imageIds = stack.imageIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
const imageId = currentStack.imageIds[currentStack.currentImageIdIndex];
|
const imageId = currentStack.imageIds[currentStack.currentImageIdIndex];
|
||||||
|
|
||||||
/*cornerstone.loadAndCacheImage(imageId).then(image => {
|
this.setState({
|
||||||
|
displaySetInstanceUid,
|
||||||
|
studyInstanceUid,
|
||||||
|
stack,
|
||||||
|
imageId
|
||||||
|
});
|
||||||
|
|
||||||
|
cornerstone.loadAndCacheImage(imageId).then(image => {
|
||||||
try {
|
try {
|
||||||
cornerstone.getEnabledElement(this.element);
|
cornerstone.getEnabledElement(this.element);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@ -448,11 +461,20 @@ class CornerstoneViewport extends Component {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cornerstone.displayImage(this.element, image);
|
|
||||||
|
const viewport = cornerstone.getDefaultViewportForImage(this.element, image);
|
||||||
|
|
||||||
|
// Workaround for Cornerstone issue #304
|
||||||
|
viewport.displayedArea.brhc = {
|
||||||
|
x: image.width,
|
||||||
|
y: image.height
|
||||||
|
}
|
||||||
|
|
||||||
|
cornerstone.displayImage(this.element, image, viewport);
|
||||||
|
|
||||||
cornerstoneTools.stackPrefetch.disable(this.element);
|
cornerstoneTools.stackPrefetch.disable(this.element);
|
||||||
cornerstoneTools.stackPrefetch.enable(this.element);
|
cornerstoneTools.stackPrefetch.enable(this.element);
|
||||||
});*/
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.props.activeTool !== prevProps.activeTool) {
|
if (this.props.activeTool !== prevProps.activeTool) {
|
||||||
@ -465,7 +487,8 @@ class CornerstoneViewport extends Component {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
this.debouncedResize();
|
// TODO: Check this, causes infinite loop
|
||||||
|
//this.debouncedResize();
|
||||||
}
|
}
|
||||||
|
|
||||||
setActiveTool = activeTool => {
|
setActiveTool = activeTool => {
|
||||||
|
|||||||
@ -6,10 +6,10 @@ import './ViewportOrientationMarkers.styl';
|
|||||||
class ViewportOrientationMarkers extends Component {
|
class ViewportOrientationMarkers extends Component {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div class="viewportOrientationMarkers noselect">
|
<div className="viewportOrientationMarkers noselect">
|
||||||
<div class="topMid orientationMarker">
|
<div className="topMid orientationMarker">
|
||||||
</div>
|
</div>
|
||||||
<div class="leftMid orientationMarker">
|
<div className="leftMid orientationMarker">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -196,64 +196,38 @@ export class LayoutManager {
|
|||||||
*/
|
*/
|
||||||
rerenderViewportWithNewDisplaySet(viewportIndex, viewportData) {
|
rerenderViewportWithNewDisplaySet(viewportIndex, viewportData) {
|
||||||
// Clone the data to prevent changing the original object
|
// Clone the data to prevent changing the original object
|
||||||
const data = _.clone(viewportData);
|
const updatedViewportData = _.clone(viewportData);
|
||||||
|
|
||||||
OHIF.log.info(`LayoutManager rerenderViewportWithNewDisplaySet: ${viewportIndex}`);
|
OHIF.log.info(`LayoutManager rerenderViewportWithNewDisplaySet: ${viewportIndex}`);
|
||||||
|
|
||||||
// The parent container is identified because it is later removed from the DOM
|
|
||||||
const container = $('.viewportContainer').get(viewportIndex);
|
|
||||||
|
|
||||||
// Record the current viewportIndex so this can be passed into the re-rendering call
|
// Record the current viewportIndex so this can be passed into the re-rendering call
|
||||||
data.viewportIndex = viewportIndex;
|
updatedViewportData.viewportIndex = viewportIndex;
|
||||||
|
|
||||||
// If we have been provided with a plugin to use, use it.
|
// If we have been provided with a plugin to use, use it.
|
||||||
// Otherwise, use whichever plugin is currently in use in this viewport.
|
// Otherwise, use whichever plugin is currently in use in this viewport.
|
||||||
const plugin = data.plugin || this.viewportData[viewportIndex].plugin;
|
const plugin = updatedViewportData.plugin || this.viewportData[viewportIndex].plugin;
|
||||||
const pluginData = data.pluginData || this.viewportData[viewportIndex].pluginData;
|
const pluginData = updatedViewportData.pluginData || this.viewportData[viewportIndex].pluginData;
|
||||||
|
|
||||||
// Update the dictionary of loaded displaySet for the specified viewport
|
// Update the dictionary of loaded displaySet for the specified viewport
|
||||||
this.viewportData[viewportIndex] = {
|
this.viewportData[viewportIndex] = {
|
||||||
viewportIndex,
|
viewportIndex,
|
||||||
displaySetInstanceUid: data.displaySetInstanceUid,
|
displaySetInstanceUid: updatedViewportData.displaySetInstanceUid,
|
||||||
seriesInstanceUid: data.seriesInstanceUid,
|
seriesInstanceUid: updatedViewportData.seriesInstanceUid,
|
||||||
studyInstanceUid: data.studyInstanceUid,
|
studyInstanceUid: updatedViewportData.studyInstanceUid,
|
||||||
renderedCallback: data.renderedCallback,
|
renderedCallback: updatedViewportData.renderedCallback,
|
||||||
currentImageIdIndex: data.currentImageIdIndex || 0,
|
currentImageIdIndex: updatedViewportData.currentImageIdIndex || 0,
|
||||||
plugin,
|
plugin,
|
||||||
pluginData,
|
pluginData,
|
||||||
|
...this.layoutProps
|
||||||
};
|
};
|
||||||
|
|
||||||
const newViewportContainer = document.createElement('div');
|
const component = viewerComponents.GridLayout;
|
||||||
|
const data = {
|
||||||
|
viewportData: this.viewportData,
|
||||||
|
...this.layoutProps
|
||||||
|
};
|
||||||
|
|
||||||
// Render and insert the template
|
this.setContents(component, data)
|
||||||
if (plugin === PLUGIN_CORNERSTONE) {
|
|
||||||
// Remove the hover styling
|
|
||||||
const element = $(container).find('.imageViewerViewport');
|
|
||||||
|
|
||||||
element.find('canvas').not('.magnifyTool').removeClass('faded');
|
|
||||||
|
|
||||||
// Remove the whole template, add in the new one
|
|
||||||
const viewportContainer = element.parents('.removable');
|
|
||||||
|
|
||||||
newViewportContainer.className = 'removable';
|
|
||||||
|
|
||||||
// Remove the parent element of the template
|
|
||||||
// This is a workaround since otherwise Blaze UI onDestroyed doesn't fire
|
|
||||||
viewportContainer.remove();
|
|
||||||
|
|
||||||
container.appendChild(newViewportContainer);
|
|
||||||
|
|
||||||
Blaze.renderWithData(Template.imageViewerViewport, data, newViewportContainer);
|
|
||||||
|
|
||||||
|
|
||||||
} else {
|
|
||||||
newViewportContainer.className = `viewport-plugin-${plugin}`;
|
|
||||||
newViewportContainer.style.width = '100%';
|
|
||||||
newViewportContainer.style.height = '100%';
|
|
||||||
|
|
||||||
container.innerHTML = '';
|
|
||||||
container.appendChild(newViewportContainer);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.updateSession();
|
this.updateSession();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user