ohif-viewer/src/connectedComponents/ConnectedPluginSwitch.js

157 lines
3.3 KiB
JavaScript
Raw Normal View History

2019-05-01 19:10:44 +02:00
import { connect } from 'react-redux'
import PluginSwitch from './PluginSwitch.js'
import OHIF from 'ohif-core'
2019-05-01 19:10:44 +02:00
const { setLayout } = OHIF.redux.actions
const mapStateToProps = state => {
2019-05-01 19:10:44 +02:00
const { activeViewportIndex, layout } = state.viewports
return {
activeViewportIndex,
2019-05-01 19:10:44 +02:00
layout,
}
}
const mapDispatchToProps = dispatch => {
return {
setLayout: data => {
2019-05-01 19:10:44 +02:00
dispatch(setLayout(data))
},
}
}
function setSingleLayoutData(originalArray, viewportIndex, data) {
2019-05-01 19:10:44 +02:00
const viewports = originalArray.slice()
const layoutData = Object.assign({}, viewports[viewportIndex], data)
2019-05-01 19:10:44 +02:00
viewports[viewportIndex] = layoutData
2019-05-01 19:10:44 +02:00
return viewports
}
const mergeProps = (propsFromState, propsFromDispatch, ownProps) => {
2019-05-01 19:10:44 +02:00
const { activeViewportIndex, layout } = propsFromState
const { setLayout } = propsFromDispatch
// TODO: Do not display certain options if the current display set
// cannot be displayed using these view types
const buttons = [
{
text: 'Acquired',
type: 'command',
2019-05-28 20:51:29 +02:00
icon: 'bars',
active: false,
2019-05-28 20:51:29 +02:00
onClick: () => {
2019-05-01 19:10:44 +02:00
console.warn('Original Acquisition')
const layoutData = setSingleLayoutData(
layout.viewports,
activeViewportIndex,
{ plugin: 'cornerstone' }
2019-05-01 19:10:44 +02:00
)
2019-05-01 19:10:44 +02:00
setLayout({ viewports: layoutData })
},
},
{
text: 'Axial',
2019-05-28 20:51:29 +02:00
icon: 'cube',
active: false,
2019-05-28 20:51:29 +02:00
onClick: () => {
2019-05-01 19:10:44 +02:00
console.warn('Axial')
const data = {
plugin: 'vtk',
vtk: {
mode: 'mpr',
2019-05-01 19:10:44 +02:00
sliceNormal: [0, 0, 1],
},
}
const layoutData = setSingleLayoutData(
layout.viewports,
activeViewportIndex,
data
2019-05-01 19:10:44 +02:00
)
2019-05-01 19:10:44 +02:00
setLayout({ viewports: layoutData })
},
},
{
text: 'Sagittal',
2019-05-28 20:51:29 +02:00
icon: 'cube',
active: false,
2019-05-28 20:51:29 +02:00
onClick: () => {
2019-05-01 19:10:44 +02:00
console.warn('Sagittal')
const data = {
plugin: 'vtk',
vtk: {
mode: 'mpr',
2019-05-01 19:10:44 +02:00
sliceNormal: [1, 0, 0],
},
}
const layoutData = setSingleLayoutData(
layout.viewports,
activeViewportIndex,
data
2019-05-01 19:10:44 +02:00
)
2019-05-01 19:10:44 +02:00
setLayout({ viewports: layoutData })
},
},
{
text: 'Coronal',
2019-05-28 20:51:29 +02:00
icon: 'cube',
active: false,
2019-05-28 20:51:29 +02:00
onClick: () => {
2019-05-01 19:10:44 +02:00
console.warn('Coronal')
const data = {
plugin: 'vtk',
vtk: {
mode: 'mpr',
2019-05-01 19:10:44 +02:00
sliceNormal: [0, 1, 0],
},
}
const layoutData = setSingleLayoutData(
layout.viewports,
activeViewportIndex,
data
2019-05-01 19:10:44 +02:00
)
2019-05-01 19:10:44 +02:00
setLayout({ viewports: layoutData })
},
},
/*{
text: '3D',
icon: `#cube`,
onClick: (click) => {
console.warn('3D Perspective');
const data = {
plugin: 'vtk',
vtk: {
mode: '3d',
}
};
const layoutData = setSingleLayoutData(layout.viewports, activeViewportIndex, data);
setLayout({ viewports: layoutData });
}
}*/
2019-05-01 19:10:44 +02:00
]
return {
2019-05-01 19:10:44 +02:00
buttons,
}
}
const ConnectedPluginSwitch = connect(
mapStateToProps,
mapDispatchToProps,
mergeProps
2019-05-01 19:10:44 +02:00
)(PluginSwitch)
2019-05-01 19:10:44 +02:00
export default ConnectedPluginSwitch