Skip to content

Commit 5e84fe1

Browse files
Add permissin callout to joblist datafeed preview (#27545)
1 parent a730d69 commit 5e84fe1

File tree

1 file changed

+35
-7
lines changed

1 file changed

+35
-7
lines changed

x-pack/plugins/ml/public/jobs/jobs_list/components/job_details/datafeed_preview_tab.js

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ import React, {
1212
} from 'react';
1313

1414
import {
15-
EuiSpacer
15+
EuiSpacer,
16+
EuiCallOut,
17+
EuiLoadingSpinner
1618
} from '@elastic/eui';
1719

1820
import { 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

Comments
 (0)