diff --git a/extensions/ohif-cornerstone-extension/src/ConnectedCornerstoneViewport.js b/extensions/ohif-cornerstone-extension/src/ConnectedCornerstoneViewport.js index 4f8e65d56..9095ab2e5 100644 --- a/extensions/ohif-cornerstone-extension/src/ConnectedCornerstoneViewport.js +++ b/extensions/ohif-cornerstone-extension/src/ConnectedCornerstoneViewport.js @@ -30,7 +30,8 @@ const mapStateToProps = (state, ownProps) => { ...dataFromStore, enableStackPrefetch: isActive, //stack: viewportSpecificData.stack, - cineToolData: viewportSpecificData.cine + cineToolData: viewportSpecificData.cine, + viewport: viewportSpecificData.viewport }; }; diff --git a/src/connectedComponents/ConnectedViewerMain.js b/src/connectedComponents/ConnectedViewerMain.js index 211a99146..4a021e407 100644 --- a/src/connectedComponents/ConnectedViewerMain.js +++ b/src/connectedComponents/ConnectedViewerMain.js @@ -1,33 +1,44 @@ -import { connect } from 'react-redux'; -import ViewerMain from './ViewerMain'; -import OHIF from 'ohif-core'; +import { connect } from 'react-redux' +import ViewerMain from './ViewerMain' +import OHIF from 'ohif-core' -const { setViewportSpecificData, clearViewportSpecificData } = OHIF.redux.actions; +const { + setViewportSpecificData, + clearViewportSpecificData, + setToolActive, + setActiveViewportSpecificData, +} = OHIF.redux.actions const mapStateToProps = state => { - const { activeViewportIndex, layout, viewportSpecificData } = state.viewports; + const { activeViewportIndex, layout, viewportSpecificData } = state.viewports - return { - activeViewportIndex, - layout, - viewportSpecificData - } -}; + return { + activeViewportIndex, + layout, + viewportSpecificData, + } +} const mapDispatchToProps = dispatch => { - return { - setViewportSpecificData: (viewportIndex, data) => { - dispatch(setViewportSpecificData(viewportIndex, data)); - }, - clearViewportSpecificData: () => { - dispatch(clearViewportSpecificData()); - } - }; -}; + return { + setViewportSpecificData: (viewportIndex, data) => { + dispatch(setViewportSpecificData(viewportIndex, data)) + }, + clearViewportSpecificData: () => { + dispatch(clearViewportSpecificData()) + }, + setToolActive: tool => { + dispatch(setToolActive(tool)) + }, + setActiveViewportSpecificData: viewport => { + dispatch(setActiveViewportSpecificData(viewport)) + }, + } +} const ConnectedViewerMain = connect( - mapStateToProps, - mapDispatchToProps -)(ViewerMain); + mapStateToProps, + mapDispatchToProps +)(ViewerMain) -export default ConnectedViewerMain; +export default ConnectedViewerMain diff --git a/src/connectedComponents/ConnectedViewerRetrieveStudyData.js b/src/connectedComponents/ConnectedViewerRetrieveStudyData.js index b6d10d8e1..7dd57437b 100644 --- a/src/connectedComponents/ConnectedViewerRetrieveStudyData.js +++ b/src/connectedComponents/ConnectedViewerRetrieveStudyData.js @@ -1,19 +1,19 @@ -import { connect } from 'react-redux'; -import ViewerRetrieveStudyData from './ViewerRetrieveStudyData.js'; +import { connect } from 'react-redux' +import ViewerRetrieveStudyData from './ViewerRetrieveStudyData.js' -const isActive = (a) => a.active === true; +const isActive = a => a.active === true const mapStateToProps = state => { - const activeServer = state.servers.servers.find(isActive); + const activeServer = state.servers.servers.find(isActive) - return { - server: activeServer, - }; -}; + return { + server: activeServer, + } +} const ConnectedViewerRetrieveStudyData = connect( - mapStateToProps, - null -)(ViewerRetrieveStudyData); + mapStateToProps, + null +)(ViewerRetrieveStudyData) -export default ConnectedViewerRetrieveStudyData; +export default ConnectedViewerRetrieveStudyData diff --git a/src/connectedComponents/ViewerMain.js b/src/connectedComponents/ViewerMain.js index 93dd9395b..871a2db7d 100644 --- a/src/connectedComponents/ViewerMain.js +++ b/src/connectedComponents/ViewerMain.js @@ -1,52 +1,61 @@ -import { Component } from 'react'; -import React from 'react'; -import PropTypes from 'prop-types'; -import { OHIF } from 'ohif-core'; -import ConnectedLayoutManager from './ConnectedLayoutManager.js'; -import './ViewerMain.css'; +import { Component } from 'react' +import React from 'react' +import PropTypes from 'prop-types' +import { OHIF } from 'ohif-core' +import ConnectedLayoutManager from './ConnectedLayoutManager.js' +import './ViewerMain.css' class ViewerMain extends Component { static propTypes = { studies: PropTypes.array.isRequired, setViewportSpecificData: PropTypes.func.isRequired, - clearViewportSpecificData: PropTypes.func.isRequired - }; + clearViewportSpecificData: PropTypes.func.isRequired, + setToolActive: PropTypes.func.isRequired, + setActiveViewportSpecificData: PropTypes.func.isRequired, + } constructor(props) { - super(props); - OHIF.hotkeysUtil.setup('viewer'); + super(props) + + // OHIF.hotkeysUtil.setup('viewer') + const hotkeysUtil = new OHIF.HotkeysUtil('viewer', { + setViewportSpecificData: props.setViewportSpecificData, + clearViewportSpecificData: props.clearViewportSpecificData, + setToolActive: props.setToolActive, + setActiveViewportSpecificData: props.setActiveViewportSpecificData, + }) this.state = { - displaySets: [] + displaySets: [], } } getDisplaySets(studies) { - const displaySets = []; + const displaySets = [] studies.forEach(study => { study.displaySets.forEach(dSet => { if (!dSet.plugin) { - dSet.plugin = 'cornerstone'; + dSet.plugin = 'cornerstone' } - displaySets.push(dSet); - }); - }); + displaySets.push(dSet) + }) + }) - return displaySets; + return displaySets } findDisplaySet(studies, studyInstanceUid, displaySetInstanceUid) { const study = studies.find(study => { - return study.studyInstanceUid === studyInstanceUid; - }); + return study.studyInstanceUid === studyInstanceUid + }) if (!study) { - return; + return } return study.displaySets.find(displaySet => { - return displaySet.displaySetInstanceUid === displaySetInstanceUid; - }); + return displaySet.displaySetInstanceUid === displaySetInstanceUid + }) } componentDidMount() { @@ -54,41 +63,50 @@ class ViewerMain extends Component { //window.addEventListener('beforeunload', unloadHandlers.beforeUnload); // 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({ - displaySets - }); + displaySets, + }) } getViewportData = () => { - const viewportData = []; - const { layout, viewportSpecificData } = this.props; + const viewportData = [] + const { layout, viewportSpecificData } = this.props - for (let viewportIndex = 0; viewportIndex < layout.viewports.length; viewportIndex++) { - let displaySet = viewportSpecificData[viewportIndex]; + for ( + let viewportIndex = 0; + viewportIndex < layout.viewports.length; + viewportIndex++ + ) { + let displaySet = viewportSpecificData[viewportIndex] // If the viewport is empty, get one available in study if (!displaySet || !displaySet.displaySetInstanceUid) { - const { displaySets } = this.state; - displaySet = displaySets.find(ds => !viewportData.some(v => v.displaySetInstanceUid === ds.displaySetInstanceUid)); + const { displaySets } = this.state + displaySet = displaySets.find( + ds => + !viewportData.some( + v => v.displaySetInstanceUid === ds.displaySetInstanceUid + ) + ) } - viewportData.push(displaySet); + viewportData.push(displaySet) } - return viewportData; - }; + return viewportData + } setViewportData = ({ viewportIndex, item }) => { const displaySet = this.findDisplaySet( this.props.studies, item.studyInstanceUid, item.displaySetInstanceUid - ); + ) - this.props.setViewportSpecificData(viewportIndex, displaySet); - }; + this.props.setViewportSpecificData(viewportIndex, displaySet) + } render() { return ( @@ -99,15 +117,15 @@ class ViewerMain extends Component { setViewportData={this.setViewportData} /> - ); + ) } componentWillUnmount() { // Clear the entire viewport specific data - const { viewportSpecificData } = this.props; - Object.keys(viewportSpecificData).forEach((viewportIndex) => { - this.props.clearViewportSpecificData(viewportIndex); - }); + const { viewportSpecificData } = this.props + Object.keys(viewportSpecificData).forEach(viewportIndex => { + this.props.clearViewportSpecificData(viewportIndex) + }) // Remove beforeUnload event handler... //window.removeEventListener('beforeunload', unloadHandlers.beforeUnload); @@ -126,4 +144,4 @@ class ViewerMain extends Component { } } -export default ViewerMain; +export default ViewerMain diff --git a/src/studylist/ConnectedStudyList.js b/src/studylist/ConnectedStudyList.js index 21c9fce67..e7181441a 100644 --- a/src/studylist/ConnectedStudyList.js +++ b/src/studylist/ConnectedStudyList.js @@ -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 activeServer = state.servers.servers.find(isActive); + const activeServer = state.servers.servers.find(isActive) - return { - server: activeServer, - user: state.oidc.user, - }; -}; + return { + server: activeServer, + user: state.oidc.user, + } +} const ConnectedStudyList = connect( - mapStateToProps, - null -)(StudyListWithData); + mapStateToProps, + null +)(StudyListWithData) -export default ConnectedStudyList; +export default ConnectedStudyList