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}
/>
) : (
-
+
)}