wip on react transition 2
This commit is contained in:
1 parent
7425c2beb8
commit
f821ea2b80
9 files changed
+51
-113
No files matched your search
@@ -1,6 +1,8 @@
|
||||
import viewer from './viewer/index.js';
|
||||
|
||||
export {
|
||||
const components = {
|
||||
viewer
|
||||
};
|
||||
|
||||
export default components;
|
||||
|
||||
@@ -14,6 +14,7 @@ import './CornerstoneViewport.css';
|
||||
|
||||
import cloneDeep from 'lodash.clonedeep';
|
||||
import debounce from 'lodash.debounce';
|
||||
import {StackManager} from "../../lib/StackManager";
|
||||
|
||||
const EVENT_RESIZE = 'resize';
|
||||
const loadIndicatorDelay = 45;
|
||||
@@ -42,11 +43,22 @@ class CornerstoneViewport extends Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
const stack = props.viewportData.stack;
|
||||
const { displaySetInstanceUid, studyInstanceUid } = this.props.viewportData;
|
||||
|
||||
// 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);
|
||||
|
||||
// TODO: Allow viewport as a prop
|
||||
this.state = {
|
||||
stack,
|
||||
displaySetInstanceUid,
|
||||
imageId: stack.imageIds[0],
|
||||
viewportHeight: '100%',
|
||||
isLoading: true,
|
||||
@@ -388,10 +400,10 @@ class CornerstoneViewport extends Component {
|
||||
componentDidUpdate(prevProps) {
|
||||
// TODO: Add a real object shallow comparison here?
|
||||
if (
|
||||
this.state.stack.imageIds[0] !== this.props.viewportData.stack.imageIds[0]
|
||||
this.state.displaySetInstanceUid !== this.props.viewportData.displaySetInstanceUid
|
||||
) {
|
||||
this.setState({
|
||||
stack: this.props.viewportData.stack
|
||||
displaySetInstanceUid: this.props.viewportData.displaySetInstanceUid
|
||||
});
|
||||
|
||||
const stackData = cornerstoneTools.getToolState(this.element, 'stack');
|
||||
@@ -413,7 +425,7 @@ class CornerstoneViewport extends Component {
|
||||
|
||||
const imageId = currentStack.imageIds[currentStack.currentImageIdIndex];
|
||||
|
||||
cornerstone.loadAndCacheImage(imageId).then(image => {
|
||||
/*cornerstone.loadAndCacheImage(imageId).then(image => {
|
||||
try {
|
||||
cornerstone.getEnabledElement(this.element);
|
||||
} catch (error) {
|
||||
@@ -426,7 +438,7 @@ class CornerstoneViewport extends Component {
|
||||
|
||||
cornerstoneTools.stackPrefetch.disable(this.element);
|
||||
cornerstoneTools.stackPrefetch.enable(this.element);
|
||||
});
|
||||
});*/
|
||||
}
|
||||
|
||||
if (this.props.activeTool !== prevProps.activeTool) {
|
||||
@@ -438,54 +450,6 @@ class CornerstoneViewport extends Component {
|
||||
isTouchActive: true
|
||||
});
|
||||
}
|
||||
|
||||
if (this.props.currentLesion !== prevProps.currentLesion) {
|
||||
const currentToolData = this.props.toolData[this.props.currentLesion - 1];
|
||||
if (currentToolData) {
|
||||
const { imageId } = currentToolData;
|
||||
const toolState = cornerstoneTools.globalImageIdSpecificToolStateManager.saveToolState();
|
||||
const toolData = toolState[imageId][currentToolData.toolType].data;
|
||||
|
||||
toolData.forEach(data => {
|
||||
if (data._id === currentToolData._id) {
|
||||
data.active = true;
|
||||
} else {
|
||||
data.active = false;
|
||||
}
|
||||
});
|
||||
|
||||
cornerstoneTools.globalImageIdSpecificToolStateManager.restoreToolState(
|
||||
toolState
|
||||
);
|
||||
|
||||
if (this.state.imageId === imageId) {
|
||||
cornerstone.setViewport(this.element, currentToolData.viewport);
|
||||
cornerstone.updateImage(this.element);
|
||||
} else {
|
||||
cornerstone.loadAndCacheImage(imageId).then(image => {
|
||||
try {
|
||||
cornerstone.getEnabledElement(this.element);
|
||||
} catch (error) {
|
||||
// Handle cases where the user ends the session before the image is displayed.
|
||||
console.error(error);
|
||||
return;
|
||||
}
|
||||
|
||||
cornerstone.displayImage(
|
||||
this.element,
|
||||
image,
|
||||
currentToolData.viewport
|
||||
);
|
||||
|
||||
this.setState({
|
||||
imageId
|
||||
});
|
||||
});
|
||||
}
|
||||
} else {
|
||||
cornerstone.updateImage(this.element);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setActiveTool = activeTool => {
|
||||
@@ -636,9 +600,9 @@ class CornerstoneViewport extends Component {
|
||||
}
|
||||
|
||||
CornerstoneViewport.propTypes = {
|
||||
measurementsAddedOrRemoved: PropTypes.func.isRequired,
|
||||
measurementsChanged: PropTypes.func.isRequired,
|
||||
activeTool: PropTypes.string.isRequired,
|
||||
measurementsAddedOrRemoved: PropTypes.func,
|
||||
measurementsChanged: PropTypes.func,
|
||||
activeTool: PropTypes.string,
|
||||
viewportData: PropTypes.object.isRequired
|
||||
};
|
||||
|
||||
|
||||
@@ -74,39 +74,43 @@ class GridLayout extends Component {
|
||||
viewportData = viewportData.slice(0, numViewports);
|
||||
}
|
||||
|
||||
const viewports = viewportData.map((viewport, index) => {
|
||||
const className = `viewportContainer ${this.getClass(index)} ${getActiveClass(index)}`;
|
||||
const viewports = viewportData.map((data, index) => {
|
||||
const className = `viewportContainer ${this.getClass(index)} ${this.getActiveClass(index)}`;
|
||||
|
||||
const styles = {
|
||||
height: `${height}%`,
|
||||
width: `${width}%`,
|
||||
};
|
||||
|
||||
const cornerstoneViewport = (viewport) => (
|
||||
const cornerstoneViewport = (data) => (
|
||||
<div className="removable">
|
||||
<CornerstoneViewport/>
|
||||
<CornerstoneViewport viewportData={data}/>
|
||||
</div>
|
||||
);
|
||||
|
||||
const pluginViewport = (viewport) => (
|
||||
<div className={`viewport-plugin-${viewport.plugin}`} style="height:100%; width: 100%">
|
||||
const pluginViewport = (data) => (
|
||||
<div className={`viewport-plugin-${data.plugin}`} style="height:100%; width: 100%">
|
||||
</div>
|
||||
);
|
||||
|
||||
return (
|
||||
<div className={className} style={styles}>
|
||||
{viewport.plugin === 'cornerstone' ?
|
||||
cornerstoneViewport(viewport) :
|
||||
pluginViewport(viewport)
|
||||
<div key={index} className={className} style={styles}>
|
||||
{data.plugin === 'cornerstone' ?
|
||||
cornerstoneViewport(data) :
|
||||
pluginViewport(data)
|
||||
}
|
||||
{/*{>seriesQuickSwitch (clone this viewport=viewport viewportIndex=@index)}*/}
|
||||
</div>
|
||||
)
|
||||
})
|
||||
|
||||
const layoutClass = `layout-${rows}-${columns}`;
|
||||
|
||||
return (
|
||||
<div id='imageViewerViewports'>
|
||||
{ viewports }
|
||||
<div id='layoutManagerTarget' className={layoutClass}>
|
||||
{ viewports }
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
+2
-2
@@ -89,7 +89,7 @@ class LoadingIndicator extends Component {
|
||||
return (<>
|
||||
<div className="imageViewerLoadingIndicator loadingIndicator">
|
||||
<div className="indicatorContents">
|
||||
<p>Loading... <i className="fa fa-spin fa-circle-o-notch fa-fw"></i> {{percComplete}}</p>
|
||||
<p>Loading... <i className="fa fa-spin fa-circle-o-notch fa-fw"></i> {percComplete}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="imageViewerErrorLoadingIndicator loadingIndicator">
|
||||
@@ -104,7 +104,7 @@ class LoadingIndicator extends Component {
|
||||
}
|
||||
|
||||
LoadingIndicator.propTypes = {
|
||||
percentComplete: PropTypes.number.isRequired
|
||||
percentComplete: PropTypes.number
|
||||
};
|
||||
|
||||
export default LoadingIndicator;
|
||||
@@ -59,9 +59,8 @@ class ViewerMain extends Component {
|
||||
Session.set('OHIFViewerMainRendered', Math.random());
|
||||
}
|
||||
|
||||
setContents(component, data) {
|
||||
const Comp = this.props.component;
|
||||
const contents = (<Comp data={data}/>);
|
||||
setContents(Component, props) {
|
||||
const contents = (<Component {...props}/>);
|
||||
|
||||
this.setState({
|
||||
contents
|
||||
|
||||
File renamed without changes.
File renamed without changes.
@@ -6,7 +6,7 @@ import ImageScrollbar from './ImageScrollbar.js';
|
||||
import ToolContextMenu from './ToolContextMenu.js';
|
||||
import ViewportOverlay from './ViewportOverlay.js';
|
||||
|
||||
export {
|
||||
const viewer = {
|
||||
ViewerMain,
|
||||
GridLayout,
|
||||
LoadingIndicator,
|
||||
@@ -14,4 +14,7 @@ export {
|
||||
ImageScrollbar,
|
||||
ToolContextMenu,
|
||||
ViewportOverlay,
|
||||
test: 'test2'
|
||||
};
|
||||
|
||||
export default viewer;
|
||||
Reference in new issue
Block a user