mirror of https://github.com/grafana/grafana
parent
a9808ef518
commit
e2fe663dba
@ -0,0 +1,48 @@ |
||||
import React, { PureComponent } from 'react'; |
||||
import { JSONFormatter } from 'app/core/components/JSONFormatter/JSONFormatter'; |
||||
import { getBackendSrv } from 'app/core/services/backend_srv'; |
||||
import { DashboardModel } from '../dashboard/dashboard_model'; |
||||
|
||||
export interface Props { |
||||
panelId: number; |
||||
dashboard: DashboardModel; |
||||
LoadingPlaceholder: any; |
||||
} |
||||
|
||||
interface State { |
||||
isLoading: boolean; |
||||
testRuleResponse: {}; |
||||
} |
||||
|
||||
export class TestRuleButton extends PureComponent<Props, State> { |
||||
constructor(props) { |
||||
super(props); |
||||
this.state = { isLoading: false, testRuleResponse: {} }; |
||||
} |
||||
|
||||
componentDidMount() { |
||||
this.testRule(); |
||||
} |
||||
|
||||
async testRule() { |
||||
const { panelId, dashboard } = this.props; |
||||
const payload = { dashboard: dashboard.getSaveModelClone(), panelId }; |
||||
const testRuleResponse = await getBackendSrv().post(`/api/alerts/test`, payload); |
||||
this.setState(prevState => ({ ...prevState, isLoading: false, testRuleResponse })); |
||||
} |
||||
|
||||
render() { |
||||
const { testRuleResponse, isLoading } = this.state; |
||||
const { LoadingPlaceholder } = this.props; |
||||
|
||||
if (isLoading === true) { |
||||
return <LoadingPlaceholder text="Evaluating rule" />; |
||||
} |
||||
|
||||
return ( |
||||
<> |
||||
<JSONFormatter json={testRuleResponse} /> |
||||
</> |
||||
); |
||||
} |
||||
} |
||||
Loading…
Reference in new issue