2017-07-10 13:42:58 -07:00

81 lines
2.5 KiB
JavaScript

import { createAction } from 'redux-actions';
import {
createLazyRequest,
fetchPagedEntities,
fetchNamedEntityNodes,
fetchNamedPagedEntities
} from 'wherehows-web/actions/entities';
import actionSet from 'wherehows-web/actions/action-set';
/**
* Set of actions for Metrics
* @type {{REQUEST_PAGED_METRICS: string, SELECT_PAGED_METRICS: string, RECEIVE_PAGED_METRICS: string}}
*/
const ActionTypes = {
REQUEST_PAGED_METRICS: actionSet('REQUEST_PAGED_METRICS'),
SELECT_PAGED_METRICS: actionSet('SELECT_PAGED_METRICS'),
RECEIVE_PAGED_METRICS: actionSet('RECEIVE_PAGED_METRICS'),
REQUEST_PAGED_NAMED_METRICS: actionSet('REQUEST_PAGED_NAMED_METRICS'),
RECEIVE_PAGED_NAMED_METRICS: actionSet('RECEIVE_PAGED_NAMED_METRICS'),
REQUEST_METRICS_NODES: actionSet('REQUEST_METRICS_NODES'),
RECEIVE_METRICS_NODES: actionSet('RECEIVE_METRICS_NODES')
};
const requestPagedMetrics = createAction(ActionTypes.REQUEST_PAGED_METRICS);
const selectPagedMetrics = createAction(ActionTypes.SELECT_PAGED_METRICS);
const receivePagedMetrics = createAction(
ActionTypes.RECEIVE_PAGED_METRICS,
({ data }) => data,
// meta data attached to the ActionTypes.RECEIVE_PAGED_METRICS action
() => ({ receivedAt: Date.now() })
);
const requestPagedNamedMetrics = createAction(ActionTypes.REQUEST_PAGED_NAMED_METRICS);
const receivePagedNamedMetrics = createAction(
ActionTypes.RECEIVE_PAGED_NAMED_METRICS,
({ data }) => data,
() => ({ receivedAt: Date.now() })
);
const requestMetricNodes = createAction(ActionTypes.REQUEST_METRICS_NODES);
const receiveMetricNodes = createAction(
ActionTypes.RECEIVE_METRICS_NODES,
response => response,
// meta data attached to the ActionTypes.RECEIVE_PAGED_METRICS action
() => ({ receivedAt: Date.now() })
);
// async action/thunk creator for ActionTypes.REQUEST_PAGED_METRICS
const lazyRequestPagedMetrics = createLazyRequest(
requestPagedMetrics,
receivePagedMetrics,
fetchPagedEntities('metrics')
);
// async action/thunk creator for ActionTypes.SELECT_PAGED_METRICS
const lazySelectPagedMetrics = createLazyRequest(
selectPagedMetrics,
receivePagedMetrics,
fetchPagedEntities('metrics')
);
const lazyRequestMetricNodes = createLazyRequest(requestMetricNodes, receiveMetricNodes, fetchNamedEntityNodes('metrics'));
const lazyRequestNamedPagedMetrics = createLazyRequest(
requestPagedNamedMetrics,
receivePagedNamedMetrics,
fetchNamedPagedEntities('metrics')
);
export {
ActionTypes,
lazyRequestPagedMetrics,
lazySelectPagedMetrics,
lazyRequestMetricNodes,
lazyRequestNamedPagedMetrics
};