From 986b7ae2bf4f7d27f326e62f93285ce20eaf0a79 Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Fri, 25 Oct 2019 15:22:44 -0300 Subject: [PATCH] fix: set SR in ActiveViewport by clicking thumb (#1091) --- platform/core/src/redux/reducers/viewports.js | 19 ++++++++++++++----- .../ConnectedStudyBrowser.js | 10 +++++----- .../viewer/src/connectedComponents/Viewer.js | 5 ++++- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/platform/core/src/redux/reducers/viewports.js b/platform/core/src/redux/reducers/viewports.js index e08166bf6..3bc0e740b 100644 --- a/platform/core/src/redux/reducers/viewports.js +++ b/platform/core/src/redux/reducers/viewports.js @@ -34,7 +34,6 @@ const defaultState = { * @param {Object} [action.viewportSpecificData] */ const viewports = (state = defaultState, action) => { - let currentData; let viewportSpecificData; let useActiveViewport = false; switch (action.type) { @@ -85,14 +84,24 @@ const viewports = (state = defaultState, action) => { // Allow fall-through // eslint-disable-next-line case SET_SPECIFIC_DATA: { + const layout = cloneDeep(state.layout); + const hasPlugin = action.data && action.data.plugin; const viewportIndex = useActiveViewport ? state.activeViewportIndex : action.viewportIndex; - currentData = cloneDeep(state.viewportSpecificData[viewportIndex]) || {}; - viewportSpecificData = cloneDeep(state.viewportSpecificData); - viewportSpecificData[viewportIndex] = merge({}, currentData, action.data); + const { dom } = state.viewportSpecificData[viewportIndex]; - return Object.assign({}, state, { viewportSpecificData }); + viewportSpecificData = cloneDeep(state.viewportSpecificData); + viewportSpecificData[viewportIndex] = { + dom, + ...action.data, + }; + + if (hasPlugin) { + layout.viewports[viewportIndex].plugin = action.data.plugin; + } + + return Object.assign({}, state, { layout, viewportSpecificData }); } case CLEAR_VIEWPORT: viewportSpecificData = cloneDeep(state.viewportSpecificData); diff --git a/platform/viewer/src/connectedComponents/ConnectedStudyBrowser.js b/platform/viewer/src/connectedComponents/ConnectedStudyBrowser.js index e7d14ebf8..c1c7e5c67 100644 --- a/platform/viewer/src/connectedComponents/ConnectedStudyBrowser.js +++ b/platform/viewer/src/connectedComponents/ConnectedStudyBrowser.js @@ -35,14 +35,14 @@ const mapStateToProps = (state, ownProps) => { }; }; -const mapDispatchToProps = dispatch => { +const mapDispatchToProps = (dispatch, ownProps) => { return { onThumbnailClick: displaySetInstanceUid => { - dispatch( - setActiveViewportSpecificData({ - displaySetInstanceUid, - }) + const displaySet = ownProps.studyMetadata[0].displaySets.find( + ds => ds.displaySetInstanceUid === displaySetInstanceUid ); + + dispatch(setActiveViewportSpecificData(displaySet)); }, }; }; diff --git a/platform/viewer/src/connectedComponents/Viewer.js b/platform/viewer/src/connectedComponents/Viewer.js index 827939802..3cc112c63 100644 --- a/platform/viewer/src/connectedComponents/Viewer.js +++ b/platform/viewer/src/connectedComponents/Viewer.js @@ -295,7 +295,10 @@ class Viewer extends Component { activeIndex={this.props.activeViewportIndex} /> ) : ( - + )}