diff --git a/extensions/vtk/package.json b/extensions/vtk/package.json index fa38bd846..d1c48239a 100644 --- a/extensions/vtk/package.json +++ b/extensions/vtk/package.json @@ -50,7 +50,7 @@ "dependencies": { "@babel/runtime": "^7.5.5", "lodash.throttle": "^4.1.1", - "react-vtkjs-viewport": "^0.10.3" + "react-vtkjs-viewport": "^0.10.4" }, "devDependencies": { "@ohif/core": "^2.10.0", diff --git a/extensions/vtk/src/LoadingIndicator.js b/extensions/vtk/src/LoadingIndicator.js index 953c5e45f..0c24b3d6a 100644 --- a/extensions/vtk/src/LoadingIndicator.js +++ b/extensions/vtk/src/LoadingIndicator.js @@ -32,16 +32,16 @@ class LoadingIndicator extends PureComponent { ) : ( -
-
-

- {this.props.t('Loading...')} - - {percComplete} -

-
+
+
+

+ {this.props.t('Loading...')} + + {percComplete} +

- )} +
+ )} ); } diff --git a/extensions/vtk/src/OHIFVTKViewport.js b/extensions/vtk/src/OHIFVTKViewport.js index d42b961c0..852dcf27f 100644 --- a/extensions/vtk/src/OHIFVTKViewport.js +++ b/extensions/vtk/src/OHIFVTKViewport.js @@ -50,22 +50,25 @@ class OHIFVTKViewport extends Component { volumes: null, paintFilterLabelMapImageData: null, paintFilterBackgroundImageData: null, + percentComplete: 0, + isLoaded: false, }; static propTypes = { viewportData: PropTypes.shape({ - studies: PropTypes.array, + studies: PropTypes.array.isRequired, displaySet: PropTypes.shape({ - StudyInstanceUID: PropTypes.string, - displaySetInstanceUID: PropTypes.string, + StudyInstanceUID: PropTypes.string.isRequired, + displaySetInstanceUID: PropTypes.string.isRequired, sopClassUIDs: PropTypes.arrayOf(PropTypes.string), SOPInstanceUID: PropTypes.string, frameIndex: PropTypes.number, }), }), - viewportIndex: PropTypes.number, + viewportIndex: PropTypes.number.isRequired, children: PropTypes.node, onScroll: PropTypes.func, + servicesManager: PropTypes.object.isRequired, }; static defaultProps = { @@ -383,6 +386,24 @@ class OHIFVTKViewport extends Component { } }; + const onPixelDataInsertedErrorCallback = error => { + const { UINotificationService } = this.props.servicesManager.services; + + if (!this.hasError) { + if (this.props.viewportIndex === 0) { + // Only show the notification from one viewport 1 in MPR2D. + UINotificationService.show({ + title: 'MPR Load Error', + message: error.message, + type: 'error', + autoClose: false, + }); + } + + this.hasError = true; + } + }; + const onAllPixelDataInsertedCallback = () => { this.setState({ isLoaded: true, @@ -391,6 +412,7 @@ class OHIFVTKViewport extends Component { imageDataObject.onPixelDataInserted(onPixelDataInsertedCallback); imageDataObject.onAllPixelDataInserted(onAllPixelDataInsertedCallback); + imageDataObject.onPixelDataInsertedError(onPixelDataInsertedErrorCallback); } render() { diff --git a/extensions/vtk/src/index.js b/extensions/vtk/src/index.js index 4b0dee69e..6ee1d14e4 100644 --- a/extensions/vtk/src/index.js +++ b/extensions/vtk/src/index.js @@ -16,8 +16,10 @@ const vtkExtension = { */ id: 'vtk', - getViewportModule({ commandsManager }) { - const ExtendedVTKViewport = props => ; + getViewportModule({ commandsManager, servicesManager }) { + const ExtendedVTKViewport = props => ( + + ); return withCommandsManager(ExtendedVTKViewport, commandsManager); }, getToolbarModule() { diff --git a/yarn.lock b/yarn.lock index dfe177f07..7ccb61338 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16047,10 +16047,10 @@ react-transition-group@^4.1.1: loose-envify "^1.4.0" prop-types "^15.6.2" -react-vtkjs-viewport@^0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/react-vtkjs-viewport/-/react-vtkjs-viewport-0.10.3.tgz#8eaa8bc558057215b648ad6ce17092d68cf5354b" - integrity sha512-9aXuBrAlKa79Q1qPSWmPflSgpG2sm5jyKresdqUUvqYVJQJx83Xkkh4XfgOfLHY/nEwpTI8dr3FwtH2dzrBkoA== +react-vtkjs-viewport@^0.10.4: + version "0.10.4" + resolved "https://registry.yarnpkg.com/react-vtkjs-viewport/-/react-vtkjs-viewport-0.10.4.tgz#eb038b0bf5c384bd3b45f2a0a57f52c682607fea" + integrity sha512-J1WxwHbjlttEWvdkM33DJx8QxHr3J7HR6wFSDVBDKY7McK2lwDAdRN8wSqy2BVNILlyurUUVwg2tK2txiJ+tuw== dependencies: date-fns "^2.2.1" gl-matrix "^3.1.0"