From a6c1e6c71702d2635ed992cc05f8f0b0e3e444c8 Mon Sep 17 00:00:00 2001 From: Danny Brown Date: Sat, 19 Oct 2019 17:00:51 -0400 Subject: [PATCH] Revert "fix: MPR initialization (#1062)" (#1064) This reverts commit b03739428f72bb50bdabdd6f83b7af885057da69. --- package.json | 2 - .../components/ViewportGrid/ViewportGrid.js | 8 -- .../src/connectedComponents/ViewerMain.js | 90 ++++++++----------- yarn.lock | 31 ------- 4 files changed, 38 insertions(+), 93 deletions(-) diff --git a/package.json b/package.json index d879ebcb0..98ee95e56 100644 --- a/package.json +++ b/package.json @@ -61,13 +61,11 @@ "css-loader": "^3.2.0", "dotenv": "^8.1.0", "eslint": "5.16.0", - "eslint-config-prettier": "^6.4.0", "eslint-config-react-app": "^4.0.1", "eslint-plugin-flowtype": "2.x", "eslint-plugin-import": "2.x", "eslint-plugin-jsx-a11y": "6.x", "eslint-plugin-node": "^9.1.0", - "eslint-plugin-prettier": "^3.1.1", "eslint-plugin-promise": "^4.2.1", "eslint-plugin-react": "7.x", "eslint-plugin-react-hooks": "1.5.0", diff --git a/platform/viewer/src/components/ViewportGrid/ViewportGrid.js b/platform/viewer/src/components/ViewportGrid/ViewportGrid.js index 75c10521a..66f874eca 100644 --- a/platform/viewer/src/components/ViewportGrid/ViewportGrid.js +++ b/platform/viewer/src/components/ViewportGrid/ViewportGrid.js @@ -32,11 +32,6 @@ const ViewportGrid = function(props) { const ViewportPanes = layout.viewports.map((layout, viewportIndex) => { const displaySet = viewportData[viewportIndex]; - - if (!displaySet) { - return null; - } - const data = { displaySet, studies, @@ -113,9 +108,6 @@ ViewportGrid.propTypes = { setViewportData: PropTypes.func.isRequired, studies: PropTypes.array, children: PropTypes.node, - defaultPlugin: PropTypes.string, - numRows: PropTypes.number, - numColumns: PropTypes.number, }; ViewportGrid.defaultProps = { diff --git a/platform/viewer/src/connectedComponents/ViewerMain.js b/platform/viewer/src/connectedComponents/ViewerMain.js index 0790624da..073bc6f31 100644 --- a/platform/viewer/src/connectedComponents/ViewerMain.js +++ b/platform/viewer/src/connectedComponents/ViewerMain.js @@ -22,6 +22,8 @@ class ViewerMain extends Component { this.state = { displaySets: [], }; + + this.cachedViewportData = {}; } getDisplaySets(studies) { @@ -63,74 +65,63 @@ class ViewerMain extends Component { this.setState({ displaySets, }); - - this.fillEmptyViewportPanes(); } } componentDidUpdate(prevProps) { - const prevViewportAmount = prevProps.layout.viewports.length; - const viewportAmount = this.props.layout.viewports.length; - - if ( - this.props.studies !== prevProps.studies || - viewportAmount !== prevViewportAmount - ) { + if (this.props.studies !== prevProps.studies) { const displaySets = this.getDisplaySets(this.props.studies); this.setState({ displaySets, }); - - this.fillEmptyViewportPanes(); } } - fillEmptyViewportPanes = () => { - const dirtyViewportPanes = []; + getViewportData = () => { + const viewportData = []; const { layout, viewportSpecificData } = this.props; - const { displaySets } = this.state; - if (!displaySets || !displaySets.length) { - return; - } + for ( + let viewportIndex = 0; + viewportIndex < layout.viewports.length; + viewportIndex++ + ) { + let displaySet = viewportSpecificData[viewportIndex]; - for (let i = 0; i < layout.viewports.length; i++) { - const viewportPane = viewportSpecificData[i]; - const isNonEmptyViewport = - viewportPane && - viewportPane.studyInstanceUid && - viewportPane.displaySetInstanceUid; - - if (isNonEmptyViewport) { - dirtyViewportPanes.push({ - studyInstanceUid: viewportPane.studyInstanceUid, - displaySetInstanceUid: viewportPane.displaySetInstanceUid, - }); - - continue; + // Use the cached display set in viewport if the new one is empty + if (displaySet && !displaySet.displaySetInstanceUid) { + displaySet = this.cachedViewportData[viewportIndex]; } - const foundDisplaySet = - displaySets.find( + if ( + displaySet && + displaySet.studyInstanceUid && + displaySet.displaySetInstanceUid + ) { + // Get missing fields from original display set + const originalDisplaySet = this.findDisplaySet( + this.props.studies, + displaySet.studyInstanceUid, + displaySet.displaySetInstanceUid + ); + viewportData.push(Object.assign({}, originalDisplaySet, displaySet)); + } else { + // If the viewport is empty, get one available in study + const { displaySets } = this.state; + displaySet = displaySets.find( ds => - !dirtyViewportPanes.some( + !viewportData.some( v => v.displaySetInstanceUid === ds.displaySetInstanceUid ) - ) || displaySets[displaySets.length - 1]; - - dirtyViewportPanes.push(foundDisplaySet); + ); + viewportData.push(Object.assign({}, displaySet)); + } } - dirtyViewportPanes.forEach((vp, i) => { - if (vp && vp.studyInstanceUid) { - this.setViewportData({ - viewportIndex: i, - studyInstanceUid: vp.studyInstanceUid, - displaySetInstanceUid: vp.displaySetInstanceUid, - }); - } - }); + this.cachedViewportData = viewportData; + + return viewportData; }; setViewportData = ({ @@ -148,17 +139,12 @@ class ViewerMain extends Component { }; render() { - const { viewportSpecificData } = this.props; - const viewportData = viewportSpecificData - ? Object.values(viewportSpecificData) - : []; - return (
{this.state.displaySets.length && ( {/* Children to add to each viewport that support children */} diff --git a/yarn.lock b/yarn.lock index 875da32ec..697579f3e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7272,13 +7272,6 @@ escodegen@^1.8.1, escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@^6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.4.0.tgz#0a04f147e31d33c6c161b2dd0971418ac52d0477" - integrity sha512-YrKucoFdc7SEko5Sxe4r6ixqXPDP1tunGw91POeZTTRKItf/AMFYt/YLEQtZMkR2LVpAVhcAcZgcWpm1oGPW7w== - dependencies: - get-stdin "^6.0.0" - eslint-config-react-app@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-4.0.1.tgz#23fd0fd7ea89442ef1e733f66a7207674b23c8db" @@ -7361,13 +7354,6 @@ eslint-plugin-node@^9.1.0: resolve "^1.10.1" semver "^6.1.0" -eslint-plugin-prettier@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz#507b8562410d02a03f0ddc949c616f877852f2ba" - integrity sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA== - dependencies: - prettier-linter-helpers "^1.0.0" - eslint-plugin-promise@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" @@ -7843,11 +7829,6 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - fast-glob@^2.0.2, fast-glob@^2.2.2, fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" @@ -8538,11 +8519,6 @@ get-stdin@^4.0.1: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - get-stdin@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" @@ -14694,13 +14670,6 @@ prepend-http@^1.0.0, prepend-http@^1.0.1: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - prettier@^1.14.2, prettier@^1.17.0, prettier@^1.18.2: version "1.18.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea"