fix: Revert "Revert "fix: MPR initialization"" (#1065)
* Revert "Revert "fix: MPR initialization (#1062)" (#1064)"
This reverts commit a6c1e6c717.
* fix: MPR Initialization
* fix e2e openStudy
* add isRequired for numRows and numColumns
This commit is contained in:
parent
dfc4e89a91
commit
c680720ce5
@ -61,11 +61,13 @@
|
|||||||
"css-loader": "^3.2.0",
|
"css-loader": "^3.2.0",
|
||||||
"dotenv": "^8.1.0",
|
"dotenv": "^8.1.0",
|
||||||
"eslint": "5.16.0",
|
"eslint": "5.16.0",
|
||||||
|
"eslint-config-prettier": "^6.4.0",
|
||||||
"eslint-config-react-app": "^4.0.1",
|
"eslint-config-react-app": "^4.0.1",
|
||||||
"eslint-plugin-flowtype": "2.x",
|
"eslint-plugin-flowtype": "2.x",
|
||||||
"eslint-plugin-import": "2.x",
|
"eslint-plugin-import": "2.x",
|
||||||
"eslint-plugin-jsx-a11y": "6.x",
|
"eslint-plugin-jsx-a11y": "6.x",
|
||||||
"eslint-plugin-node": "^9.1.0",
|
"eslint-plugin-node": "^9.1.0",
|
||||||
|
"eslint-plugin-prettier": "^3.1.1",
|
||||||
"eslint-plugin-promise": "^4.2.1",
|
"eslint-plugin-promise": "^4.2.1",
|
||||||
"eslint-plugin-react": "7.x",
|
"eslint-plugin-react": "7.x",
|
||||||
"eslint-plugin-react-hooks": "1.5.0",
|
"eslint-plugin-react-hooks": "1.5.0",
|
||||||
|
|||||||
@ -32,6 +32,11 @@ const ViewportGrid = function(props) {
|
|||||||
|
|
||||||
const ViewportPanes = layout.viewports.map((layout, viewportIndex) => {
|
const ViewportPanes = layout.viewports.map((layout, viewportIndex) => {
|
||||||
const displaySet = viewportData[viewportIndex];
|
const displaySet = viewportData[viewportIndex];
|
||||||
|
|
||||||
|
if (!displaySet) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
const data = {
|
const data = {
|
||||||
displaySet,
|
displaySet,
|
||||||
studies,
|
studies,
|
||||||
@ -108,6 +113,9 @@ ViewportGrid.propTypes = {
|
|||||||
setViewportData: PropTypes.func.isRequired,
|
setViewportData: PropTypes.func.isRequired,
|
||||||
studies: PropTypes.array,
|
studies: PropTypes.array,
|
||||||
children: PropTypes.node,
|
children: PropTypes.node,
|
||||||
|
defaultPlugin: PropTypes.string,
|
||||||
|
numRows: PropTypes.number.isRequired,
|
||||||
|
numColumns: PropTypes.number.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
ViewportGrid.defaultProps = {
|
ViewportGrid.defaultProps = {
|
||||||
|
|||||||
@ -22,8 +22,6 @@ class ViewerMain extends Component {
|
|||||||
this.state = {
|
this.state = {
|
||||||
displaySets: [],
|
displaySets: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
this.cachedViewportData = {};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getDisplaySets(studies) {
|
getDisplaySets(studies) {
|
||||||
@ -65,63 +63,75 @@ class ViewerMain extends Component {
|
|||||||
this.setState({
|
this.setState({
|
||||||
displaySets,
|
displaySets,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.fillEmptyViewportPanes();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidUpdate(prevProps) {
|
componentDidUpdate(prevProps) {
|
||||||
if (this.props.studies !== prevProps.studies) {
|
const prevViewportAmount = prevProps.layout.viewports.length;
|
||||||
|
const viewportAmount = this.props.layout.viewports.length;
|
||||||
|
const isVtk = this.props.layout.viewports.some(vp => !!vp.vtk);
|
||||||
|
|
||||||
|
if (
|
||||||
|
this.props.studies !== prevProps.studies ||
|
||||||
|
(viewportAmount !== prevViewportAmount && !isVtk)
|
||||||
|
) {
|
||||||
const displaySets = this.getDisplaySets(this.props.studies);
|
const displaySets = this.getDisplaySets(this.props.studies);
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
displaySets,
|
displaySets,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.fillEmptyViewportPanes();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getViewportData = () => {
|
fillEmptyViewportPanes = () => {
|
||||||
const viewportData = [];
|
const dirtyViewportPanes = [];
|
||||||
const { layout, viewportSpecificData } = this.props;
|
const { layout, viewportSpecificData } = this.props;
|
||||||
|
const { displaySets } = this.state;
|
||||||
|
|
||||||
for (
|
if (!displaySets || !displaySets.length) {
|
||||||
let viewportIndex = 0;
|
return;
|
||||||
viewportIndex < layout.viewports.length;
|
|
||||||
viewportIndex++
|
|
||||||
) {
|
|
||||||
let displaySet = viewportSpecificData[viewportIndex];
|
|
||||||
|
|
||||||
// Use the cached display set in viewport if the new one is empty
|
|
||||||
if (displaySet && !displaySet.displaySetInstanceUid) {
|
|
||||||
displaySet = this.cachedViewportData[viewportIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
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 =>
|
|
||||||
!viewportData.some(
|
|
||||||
v => v.displaySetInstanceUid === ds.displaySetInstanceUid
|
|
||||||
)
|
|
||||||
);
|
|
||||||
viewportData.push(Object.assign({}, displaySet));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.cachedViewportData = viewportData;
|
for (let i = 0; i < layout.viewports.length; i++) {
|
||||||
|
const viewportPane = viewportSpecificData[i];
|
||||||
|
const isNonEmptyViewport =
|
||||||
|
viewportPane &&
|
||||||
|
viewportPane.studyInstanceUid &&
|
||||||
|
viewportPane.displaySetInstanceUid;
|
||||||
|
|
||||||
return viewportData;
|
if (isNonEmptyViewport) {
|
||||||
|
dirtyViewportPanes.push({
|
||||||
|
studyInstanceUid: viewportPane.studyInstanceUid,
|
||||||
|
displaySetInstanceUid: viewportPane.displaySetInstanceUid,
|
||||||
|
});
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const foundDisplaySet =
|
||||||
|
displaySets.find(
|
||||||
|
ds =>
|
||||||
|
!dirtyViewportPanes.some(
|
||||||
|
v => v.displaySetInstanceUid === ds.displaySetInstanceUid
|
||||||
|
)
|
||||||
|
) || displaySets[displaySets.length - 1];
|
||||||
|
|
||||||
|
dirtyViewportPanes.push(foundDisplaySet);
|
||||||
|
}
|
||||||
|
|
||||||
|
dirtyViewportPanes.forEach((vp, i) => {
|
||||||
|
if (vp && vp.studyInstanceUid) {
|
||||||
|
this.setViewportData({
|
||||||
|
viewportIndex: i,
|
||||||
|
studyInstanceUid: vp.studyInstanceUid,
|
||||||
|
displaySetInstanceUid: vp.displaySetInstanceUid,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
setViewportData = ({
|
setViewportData = ({
|
||||||
@ -139,12 +149,17 @@ class ViewerMain extends Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
const { viewportSpecificData } = this.props;
|
||||||
|
const viewportData = viewportSpecificData
|
||||||
|
? Object.values(viewportSpecificData)
|
||||||
|
: [];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="ViewerMain">
|
<div className="ViewerMain">
|
||||||
{this.state.displaySets.length && (
|
{this.state.displaySets.length && (
|
||||||
<ConnectedViewportGrid
|
<ConnectedViewportGrid
|
||||||
studies={this.props.studies}
|
studies={this.props.studies}
|
||||||
viewportData={this.getViewportData()}
|
viewportData={viewportData}
|
||||||
setViewportData={this.setViewportData}
|
setViewportData={this.setViewportData}
|
||||||
>
|
>
|
||||||
{/* Children to add to each viewport that support children */}
|
{/* Children to add to each viewport that support children */}
|
||||||
|
|||||||
31
yarn.lock
31
yarn.lock
@ -7272,6 +7272,13 @@ escodegen@^1.8.1, escodegen@^1.9.1:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
source-map "~0.6.1"
|
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:
|
eslint-config-react-app@^4.0.1:
|
||||||
version "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"
|
resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-4.0.1.tgz#23fd0fd7ea89442ef1e733f66a7207674b23c8db"
|
||||||
@ -7354,6 +7361,13 @@ eslint-plugin-node@^9.1.0:
|
|||||||
resolve "^1.10.1"
|
resolve "^1.10.1"
|
||||||
semver "^6.1.0"
|
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:
|
eslint-plugin-promise@^4.2.1:
|
||||||
version "4.2.1"
|
version "4.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a"
|
resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a"
|
||||||
@ -7829,6 +7843,11 @@ fast-deep-equal@^2.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
|
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
|
||||||
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
|
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:
|
fast-glob@^2.0.2, fast-glob@^2.2.2, fast-glob@^2.2.6:
|
||||||
version "2.2.7"
|
version "2.2.7"
|
||||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d"
|
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d"
|
||||||
@ -8519,6 +8538,11 @@ get-stdin@^4.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
|
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
|
||||||
integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
|
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:
|
get-stdin@^7.0.0:
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6"
|
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6"
|
||||||
@ -14670,6 +14694,13 @@ prepend-http@^1.0.0, prepend-http@^1.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
|
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
|
||||||
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
|
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:
|
prettier@^1.14.2, prettier@^1.17.0, prettier@^1.18.2:
|
||||||
version "1.18.2"
|
version "1.18.2"
|
||||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea"
|
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user