AlertRule.ts 971 B

12345678910111213141516171819202122232425262728293031323334
  1. import { types, getEnv, flow } from 'mobx-state-tree';
  2. import { setStateFields } from './helpers';
  3. export const AlertRule = types
  4. .model('AlertRule', {
  5. id: types.identifier(types.number),
  6. dashboardId: types.number,
  7. panelId: types.number,
  8. name: types.string,
  9. state: types.string,
  10. stateText: types.string,
  11. stateIcon: types.string,
  12. stateClass: types.string,
  13. stateAge: types.string,
  14. info: types.optional(types.string, ''),
  15. url: types.string,
  16. })
  17. .views(self => ({
  18. get isPaused() {
  19. return self.state === 'paused';
  20. },
  21. }))
  22. .actions(self => ({
  23. /**
  24. * will toggle alert rule paused state
  25. */
  26. togglePaused: flow(function* togglePaused() {
  27. const backendSrv = getEnv(self).backendSrv;
  28. const payload = { paused: !self.isPaused };
  29. const res = yield backendSrv.post(`/api/alerts/${self.id}/pause`, payload);
  30. setStateFields(self, res.state);
  31. self.info = '';
  32. }),
  33. }));