ohif-viewer/extensions/vtk/src/LoadingIndicator.js

51 lines
1.4 KiB
JavaScript
Raw Normal View History

2019-06-21 05:17:07 +02:00
import './LoadingIndicator.css';
2019-04-16 18:00:06 +02:00
import React, { PureComponent } from 'react';
import { withTranslation } from 'react-i18next';
2019-06-21 05:17:07 +02:00
import PropTypes from 'prop-types';
2019-04-16 18:00:06 +02:00
class LoadingIndicator extends PureComponent {
static propTypes = {
percentComplete: PropTypes.number.isRequired,
2019-06-21 05:17:07 +02:00
error: PropTypes.object,
2019-04-16 18:00:06 +02:00
};
static defaultProps = {
percentComplete: 0,
2019-06-21 05:17:07 +02:00
error: null,
2019-04-16 18:00:06 +02:00
};
render() {
let percComplete;
if (this.props.percentComplete && this.props.percentComplete !== 100) {
percComplete = `${this.props.percentComplete}%`;
}
return (
<React.Fragment>
{this.props.error ? (
<div className="imageViewerErrorLoadingIndicator loadingIndicator">
<div className="indicatorContents">
<h4>Error Loading Image</h4>
<p className="description">An error has occurred.</p>
<p className="details">{this.props.error.message}</p>
</div>
</div>
) : (
2020-05-15 14:29:27 +02:00
<div className="imageViewerLoadingIndicator loadingIndicator">
<div className="indicatorContents">
<p>
{this.props.t('Loading...')}
<i className="fa fa-spin fa-circle-o-notch fa-fw" />
{percComplete}
</p>
2019-04-16 18:00:06 +02:00
</div>
2020-05-15 14:29:27 +02:00
</div>
)}
2019-04-16 18:00:06 +02:00
</React.Fragment>
);
}
}
export default withTranslation('Common')(LoadingIndicator);