AlertRule.ts 999 B

1234567891011121314151617181920212223242526272829303132333435
  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. canEdit: types.boolean,
  17. })
  18. .views(self => ({
  19. get isPaused() {
  20. return self.state === 'paused';
  21. },
  22. }))
  23. .actions(self => ({
  24. /**
  25. * will toggle alert rule paused state
  26. */
  27. togglePaused: flow(function* togglePaused() {
  28. const backendSrv = getEnv(self).backendSrv;
  29. const payload = { paused: !self.isPaused };
  30. const res = yield backendSrv.post(`/api/alerts/${self.id}/pause`, payload);
  31. setStateFields(self, res.state);
  32. self.info = '';
  33. }),
  34. }));