@@ -12,7 +12,9 @@ import React, {
1212} from 'react' ;
1313
1414import {
15- EuiSpacer
15+ EuiSpacer ,
16+ EuiCallOut ,
17+ EuiLoadingSpinner
1618} from '@elastic/eui' ;
1719
1820import { mlJobService } from 'plugins/ml/services/job_service' ;
@@ -26,25 +28,52 @@ export class DatafeedPreviewPane extends Component {
2628 super ( props ) ;
2729
2830 this . state = {
29- previewJson : ''
31+ previewJson : '' ,
32+ loading : true ,
33+ canPreviewDatafeed : true
3034 } ;
3135 }
3236
37+ renderContent ( ) {
38+ const { previewJson, loading, canPreviewDatafeed } = this . state ;
39+
40+ if ( canPreviewDatafeed === false ) {
41+ return (
42+ < EuiCallOut
43+ title = "You do not have permission to view the datafeed preview"
44+ color = "warning"
45+ iconType = "alert"
46+ >
47+ < p >
48+ Please contact your administrator
49+ </ p >
50+ </ EuiCallOut > ) ;
51+ } else if ( loading === true ) {
52+ return < EuiLoadingSpinner size = "xl" /> ;
53+ } else {
54+ return < MLJobEditor value = { previewJson } readOnly = { true } /> ;
55+ }
56+ }
57+
3358 componentDidMount ( ) {
34- updateDatafeedPreview ( this . props . job )
59+ const canPreviewDatafeed = checkPermission ( 'canPreviewDatafeed' ) ;
60+ this . setState ( { canPreviewDatafeed } ) ;
61+
62+ updateDatafeedPreview ( this . props . job , canPreviewDatafeed )
3563 . then ( ( previewJson ) => {
36- this . setState ( { previewJson } ) ;
64+ this . setState ( { previewJson, loading : false } ) ;
3765 } )
3866 . catch ( ( error ) => {
3967 console . log ( 'Datafeed preview could not be loaded' , error ) ;
68+ this . setState ( { loading : false } ) ;
4069 } ) ;
4170 }
4271
4372 render ( ) {
4473 return (
4574 < React . Fragment >
4675 < EuiSpacer size = "s" />
47- < MLJobEditor value = { this . state . previewJson } readOnly = { true } />
76+ { this . renderContent ( ) }
4877 </ React . Fragment >
4978 ) ;
5079 }
@@ -53,9 +82,8 @@ DatafeedPreviewPane.propTypes = {
5382 job : PropTypes . object . isRequired ,
5483} ;
5584
56- function updateDatafeedPreview ( job ) {
85+ function updateDatafeedPreview ( job , canPreviewDatafeed ) {
5786 return new Promise ( ( resolve , reject ) => {
58- const canPreviewDatafeed = checkPermission ( 'canPreviewDatafeed' ) ;
5987 if ( canPreviewDatafeed ) {
6088 mlJobService . getDatafeedPreview ( job . job_id )
6189 . then ( ( resp ) => {
0 commit comments