Revert "React viewport (#439)" (#487)

This reverts commit b24a502433.
This commit is contained in:
Evren Ozkan 2019-05-27 11:09:11 -04:00 committed by GitHub
parent b24a502433
commit c2eb5f342f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 93 additions and 123 deletions

View File

@ -30,8 +30,7 @@ const mapStateToProps = (state, ownProps) => {
...dataFromStore, ...dataFromStore,
enableStackPrefetch: isActive, enableStackPrefetch: isActive,
//stack: viewportSpecificData.stack, //stack: viewportSpecificData.stack,
cineToolData: viewportSpecificData.cine, cineToolData: viewportSpecificData.cine
viewport: viewportSpecificData.viewport
}; };
}; };

View File

@ -1,44 +1,33 @@
import { connect } from 'react-redux' import { connect } from 'react-redux';
import ViewerMain from './ViewerMain' import ViewerMain from './ViewerMain';
import OHIF from 'ohif-core' import OHIF from 'ohif-core';
const { const { setViewportSpecificData, clearViewportSpecificData } = OHIF.redux.actions;
setViewportSpecificData,
clearViewportSpecificData,
setToolActive,
setActiveViewportSpecificData,
} = OHIF.redux.actions
const mapStateToProps = state => { const mapStateToProps = state => {
const { activeViewportIndex, layout, viewportSpecificData } = state.viewports const { activeViewportIndex, layout, viewportSpecificData } = state.viewports;
return { return {
activeViewportIndex, activeViewportIndex,
layout, layout,
viewportSpecificData, viewportSpecificData
} }
} };
const mapDispatchToProps = dispatch => { const mapDispatchToProps = dispatch => {
return { return {
setViewportSpecificData: (viewportIndex, data) => { setViewportSpecificData: (viewportIndex, data) => {
dispatch(setViewportSpecificData(viewportIndex, data)) dispatch(setViewportSpecificData(viewportIndex, data));
}, },
clearViewportSpecificData: () => { clearViewportSpecificData: () => {
dispatch(clearViewportSpecificData()) dispatch(clearViewportSpecificData());
}, }
setToolActive: tool => { };
dispatch(setToolActive(tool)) };
},
setActiveViewportSpecificData: viewport => {
dispatch(setActiveViewportSpecificData(viewport))
},
}
}
const ConnectedViewerMain = connect( const ConnectedViewerMain = connect(
mapStateToProps, mapStateToProps,
mapDispatchToProps mapDispatchToProps
)(ViewerMain) )(ViewerMain);
export default ConnectedViewerMain export default ConnectedViewerMain;

View File

@ -1,19 +1,19 @@
import { connect } from 'react-redux' import { connect } from 'react-redux';
import ViewerRetrieveStudyData from './ViewerRetrieveStudyData.js' import ViewerRetrieveStudyData from './ViewerRetrieveStudyData.js';
const isActive = a => a.active === true const isActive = (a) => a.active === true;
const mapStateToProps = state => { const mapStateToProps = state => {
const activeServer = state.servers.servers.find(isActive) const activeServer = state.servers.servers.find(isActive);
return { return {
server: activeServer, server: activeServer,
} };
} };
const ConnectedViewerRetrieveStudyData = connect( const ConnectedViewerRetrieveStudyData = connect(
mapStateToProps, mapStateToProps,
null null
)(ViewerRetrieveStudyData) )(ViewerRetrieveStudyData);
export default ConnectedViewerRetrieveStudyData export default ConnectedViewerRetrieveStudyData;

View File

@ -1,61 +1,52 @@
import { Component } from 'react' import { Component } from 'react';
import React from 'react' import React from 'react';
import PropTypes from 'prop-types' import PropTypes from 'prop-types';
import { OHIF } from 'ohif-core' import { OHIF } from 'ohif-core';
import ConnectedLayoutManager from './ConnectedLayoutManager.js' import ConnectedLayoutManager from './ConnectedLayoutManager.js';
import './ViewerMain.css' import './ViewerMain.css';
class ViewerMain extends Component { class ViewerMain extends Component {
static propTypes = { static propTypes = {
studies: PropTypes.array.isRequired, studies: PropTypes.array.isRequired,
setViewportSpecificData: PropTypes.func.isRequired, setViewportSpecificData: PropTypes.func.isRequired,
clearViewportSpecificData: PropTypes.func.isRequired, clearViewportSpecificData: PropTypes.func.isRequired
setToolActive: PropTypes.func.isRequired, };
setActiveViewportSpecificData: PropTypes.func.isRequired,
}
constructor(props) { constructor(props) {
super(props) super(props);
OHIF.hotkeysUtil.setup('viewer');
// OHIF.hotkeysUtil.setup('viewer')
const hotkeysUtil = new OHIF.HotkeysUtil('viewer', {
setViewportSpecificData: props.setViewportSpecificData,
clearViewportSpecificData: props.clearViewportSpecificData,
setToolActive: props.setToolActive,
setActiveViewportSpecificData: props.setActiveViewportSpecificData,
})
this.state = { this.state = {
displaySets: [], displaySets: []
} }
} }
getDisplaySets(studies) { getDisplaySets(studies) {
const displaySets = [] const displaySets = [];
studies.forEach(study => { studies.forEach(study => {
study.displaySets.forEach(dSet => { study.displaySets.forEach(dSet => {
if (!dSet.plugin) { if (!dSet.plugin) {
dSet.plugin = 'cornerstone' dSet.plugin = 'cornerstone';
} }
displaySets.push(dSet) displaySets.push(dSet);
}) });
}) });
return displaySets return displaySets;
} }
findDisplaySet(studies, studyInstanceUid, displaySetInstanceUid) { findDisplaySet(studies, studyInstanceUid, displaySetInstanceUid) {
const study = studies.find(study => { const study = studies.find(study => {
return study.studyInstanceUid === studyInstanceUid return study.studyInstanceUid === studyInstanceUid;
}) });
if (!study) { if (!study) {
return return;
} }
return study.displaySets.find(displaySet => { return study.displaySets.find(displaySet => {
return displaySet.displaySetInstanceUid === displaySetInstanceUid return displaySet.displaySetInstanceUid === displaySetInstanceUid;
}) });
} }
componentDidMount() { componentDidMount() {
@ -63,50 +54,41 @@ class ViewerMain extends Component {
//window.addEventListener('beforeunload', unloadHandlers.beforeUnload); //window.addEventListener('beforeunload', unloadHandlers.beforeUnload);
// Get all the display sets for the viewer studies // Get all the display sets for the viewer studies
const displaySets = this.getDisplaySets(this.props.studies) const displaySets = this.getDisplaySets(this.props.studies);
this.setState({ this.setState({
displaySets, displaySets
}) });
} }
getViewportData = () => { getViewportData = () => {
const viewportData = [] const viewportData = [];
const { layout, viewportSpecificData } = this.props const { layout, viewportSpecificData } = this.props;
for ( for (let viewportIndex = 0; viewportIndex < layout.viewports.length; viewportIndex++) {
let viewportIndex = 0; let displaySet = viewportSpecificData[viewportIndex];
viewportIndex < layout.viewports.length;
viewportIndex++
) {
let displaySet = viewportSpecificData[viewportIndex]
// If the viewport is empty, get one available in study // If the viewport is empty, get one available in study
if (!displaySet || !displaySet.displaySetInstanceUid) { if (!displaySet || !displaySet.displaySetInstanceUid) {
const { displaySets } = this.state const { displaySets } = this.state;
displaySet = displaySets.find( displaySet = displaySets.find(ds => !viewportData.some(v => v.displaySetInstanceUid === ds.displaySetInstanceUid));
ds =>
!viewportData.some(
v => v.displaySetInstanceUid === ds.displaySetInstanceUid
)
)
} }
viewportData.push(displaySet) viewportData.push(displaySet);
} }
return viewportData return viewportData;
} };
setViewportData = ({ viewportIndex, item }) => { setViewportData = ({ viewportIndex, item }) => {
const displaySet = this.findDisplaySet( const displaySet = this.findDisplaySet(
this.props.studies, this.props.studies,
item.studyInstanceUid, item.studyInstanceUid,
item.displaySetInstanceUid item.displaySetInstanceUid
) );
this.props.setViewportSpecificData(viewportIndex, displaySet) this.props.setViewportSpecificData(viewportIndex, displaySet);
} };
render() { render() {
return ( return (
@ -117,15 +99,15 @@ class ViewerMain extends Component {
setViewportData={this.setViewportData} setViewportData={this.setViewportData}
/> />
</div> </div>
) );
} }
componentWillUnmount() { componentWillUnmount() {
// Clear the entire viewport specific data // Clear the entire viewport specific data
const { viewportSpecificData } = this.props const { viewportSpecificData } = this.props;
Object.keys(viewportSpecificData).forEach(viewportIndex => { Object.keys(viewportSpecificData).forEach((viewportIndex) => {
this.props.clearViewportSpecificData(viewportIndex) this.props.clearViewportSpecificData(viewportIndex);
}) });
// Remove beforeUnload event handler... // Remove beforeUnload event handler...
//window.removeEventListener('beforeunload', unloadHandlers.beforeUnload); //window.removeEventListener('beforeunload', unloadHandlers.beforeUnload);
@ -144,4 +126,4 @@ class ViewerMain extends Component {
} }
} }
export default ViewerMain export default ViewerMain;

View File

@ -1,21 +1,21 @@
import { connect } from 'react-redux' import { connect } from 'react-redux';
import StudyListWithData from './StudyListWithData.js' import StudyListWithData from './StudyListWithData.js';
const isActive = a => a.active === true const isActive = (a) => a.active === true;
const mapStateToProps = state => { const mapStateToProps = state => {
const activeServer = state.servers.servers.find(isActive) const activeServer = state.servers.servers.find(isActive);
return { return {
server: activeServer, server: activeServer,
user: state.oidc.user, user: state.oidc.user,
} };
} };
const ConnectedStudyList = connect( const ConnectedStudyList = connect(
mapStateToProps, mapStateToProps,
null null
)(StudyListWithData) )(StudyListWithData);
export default ConnectedStudyList export default ConnectedStudyList;