reducers.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { Action } from './actions';
  2. import { AlertRule } from 'app/types';
  3. import alertDef from './alertDef';
  4. import moment from 'moment';
  5. export const initialState: AlertRule[] = [];
  6. export function setStateFields(rule, state) {
  7. const stateModel = alertDef.getStateDisplayModel(state);
  8. rule.state = state;
  9. rule.stateText = stateModel.text;
  10. rule.stateIcon = stateModel.iconClass;
  11. rule.stateClass = stateModel.stateClass;
  12. rule.stateAge = moment(rule.newStateDate)
  13. .fromNow()
  14. .replace(' ago', '');
  15. }
  16. export const alertRulesReducer = (state = initialState, action: Action): AlertRule[] => {
  17. switch (action.type) {
  18. case 'LOAD_ALERT_RULES': {
  19. const alertRules = action.payload;
  20. for (const rule of alertRules) {
  21. setStateFields(rule, rule.state);
  22. if (rule.state !== 'paused') {
  23. if (rule.executionError) {
  24. rule.info = 'Execution Error: ' + rule.executionError;
  25. }
  26. if (rule.evalData && rule.evalData.noData) {
  27. rule.info = 'Query returned no data';
  28. }
  29. }
  30. }
  31. return alertRules;
  32. }
  33. }
  34. return state;
  35. };
  36. export default {
  37. alertRules: alertRulesReducer,
  38. };