AlertListStore.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { types, getEnv, flow } from 'mobx-state-tree';
  2. import { AlertRule } from './AlertRule';
  3. import { setStateFields } from './helpers';
  4. type IAlertRuleType = typeof AlertRule.Type;
  5. export interface IAlertRule extends IAlertRuleType {}
  6. export const AlertListStore = types
  7. .model('AlertListStore', {
  8. rules: types.array(AlertRule),
  9. stateFilter: types.optional(types.string, 'all'),
  10. })
  11. .actions(self => ({
  12. loadRules: flow(function* load(filters) {
  13. const backendSrv = getEnv(self).backendSrv;
  14. self.stateFilter = filters.state; // store state filter used in api query
  15. const apiRules = yield backendSrv.get('/api/alerts', filters);
  16. self.rules.clear();
  17. for (let rule of apiRules) {
  18. setStateFields(rule, rule.state);
  19. if (rule.executionError) {
  20. rule.info = 'Execution Error: ' + rule.executionError;
  21. }
  22. if (rule.evalData && rule.evalData.noData) {
  23. rule.info = 'Query returned no data';
  24. }
  25. self.rules.push(AlertRule.create(rule));
  26. }
  27. }),
  28. }));