mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 10:03:33 -06:00
58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
import { getBackendSrv } from '@grafana/runtime';
|
|
import { AlertRuleDTO, StoreState } from 'app/types';
|
|
import { ThunkAction } from 'redux-thunk';
|
|
|
|
export enum ActionTypes {
|
|
LoadAlertRules = 'LOAD_ALERT_RULES',
|
|
LoadedAlertRules = 'LOADED_ALERT_RULES',
|
|
SetSearchQuery = 'SET_ALERT_SEARCH_QUERY',
|
|
}
|
|
|
|
export interface LoadAlertRulesAction {
|
|
type: ActionTypes.LoadAlertRules;
|
|
}
|
|
|
|
export interface LoadedAlertRulesAction {
|
|
type: ActionTypes.LoadedAlertRules;
|
|
payload: AlertRuleDTO[];
|
|
}
|
|
|
|
export interface SetSearchQueryAction {
|
|
type: ActionTypes.SetSearchQuery;
|
|
payload: string;
|
|
}
|
|
|
|
export const loadAlertRules = (): LoadAlertRulesAction => ({
|
|
type: ActionTypes.LoadAlertRules,
|
|
});
|
|
|
|
export const loadedAlertRules = (rules: AlertRuleDTO[]): LoadedAlertRulesAction => ({
|
|
type: ActionTypes.LoadedAlertRules,
|
|
payload: rules,
|
|
});
|
|
|
|
export const setSearchQuery = (query: string): SetSearchQueryAction => ({
|
|
type: ActionTypes.SetSearchQuery,
|
|
payload: query,
|
|
});
|
|
|
|
export type Action = LoadAlertRulesAction | LoadedAlertRulesAction | SetSearchQueryAction;
|
|
|
|
type ThunkResult<R> = ThunkAction<R, StoreState, undefined, Action>;
|
|
|
|
export function getAlertRulesAsync(options: { state: string }): ThunkResult<void> {
|
|
return async dispatch => {
|
|
dispatch(loadAlertRules());
|
|
const rules: AlertRuleDTO[] = await getBackendSrv().get('/api/alerts', options);
|
|
dispatch(loadedAlertRules(rules));
|
|
};
|
|
}
|
|
|
|
export function togglePauseAlertRule(id: number, options: { paused: boolean }): ThunkResult<void> {
|
|
return async (dispatch, getState) => {
|
|
await getBackendSrv().post(`/api/alerts/${id}/pause`, options);
|
|
const stateFilter = getState().location.query.state || 'all';
|
|
dispatch(getAlertRulesAsync({ state: stateFilter.toString() }));
|
|
};
|
|
}
|