aboutsummaryrefslogtreecommitdiffstats
path: root/web/src/js/ducks/flows.js
diff options
context:
space:
mode:
Diffstat (limited to 'web/src/js/ducks/flows.js')
-rw-r--r--web/src/js/ducks/flows.js112
1 files changed, 27 insertions, 85 deletions
diff --git a/web/src/js/ducks/flows.js b/web/src/js/ducks/flows.js
index 5825efa1..4111c8bc 100644
--- a/web/src/js/ducks/flows.js
+++ b/web/src/js/ducks/flows.js
@@ -1,124 +1,66 @@
-import { fetchApi as fetch } from '../utils'
-import { CMD_RESET as WS_CMD_RESET } from './websocket'
import reduceList, * as listActions from './utils/list'
+import reduceViews, * as viewsActions from './views'
-export const WS_MSG_TYPE ='UPDATE_FLOWS'
+export const WS_MSG_TYPE = 'UPDATE_FLOWS'
-export const UPDATE_FILTER = 'FLOWS_UPDATE_FLOW_FILTER'
-export const UPDATE_HIGHLIGHT = 'FLOWS_UPDATE_FLOW_HIGHLIGHT'
-export const UPDATE_SORT = 'FLOWS_UPDATE_FLOW_SORT'
-export const WS_MSG = 'FLOWS_WS_MSG'
-export const SELECT_FLOW = 'FLOWS_SELECT_FLOW'
-export const REQUEST_ACTION = 'FLOWS_REQUEST_ACTION'
+export const ADD = 'FLOWS_ADD'
+export const UPDATE = 'FLOWS_UPDATE'
+export const REMOVE = 'FLOWS_REMOVE'
export const REQUEST = 'FLOWS_REQUEST'
export const RECEIVE = 'FLOWS_RECEIVE'
+export const WS_MSG = 'FLOWS_WS_MSG'
+export const REQUEST_ACTION = 'FLOWS_REQUEST_ACTION'
export const FETCH_ERROR = 'FLOWS_FETCH_ERROR'
const defaultState = {
- selected: [],
- sorter: {},
- filter: null,
- highlight: null,
- list: reduceList(undefined, { type: Symbol('FLOWS_INIT_LIST') }),
+ list: null,
+ views: null,
}
export default function reduce(state = defaultState, action) {
switch (action.type) {
- case UPDATE_FILTER:
+ case ADD:
return {
...state,
- filter: action.filter,
- list: reduceList(state.list, listActions.updateFilter(makeFilterFun(action.filter))),
+ list: reduceList(state.list, listActions.add(action.item)),
+ views: reduceViews(state.views, viewsActions.add(action.item)),
}
- case UPDATE_HIGHLIGHT:
+ case UPDATE:
return {
...state,
- highlight: action.highlight,
+ list: reduceList(state.list, listActions.update(action.item.id, action.item)),
+ views: reduceViews(state.views, viewsActions.update(action.item.id, action.item)),
}
- case UPDATE_SORTER:
+ case REMOVE:
return {
...state,
- sorter: { column: action.column, desc: action.desc },
- list: reduceList(state.list, listActions.updateSorter(makeSortFun(action.sortKeyFun, action.desc))),
- }
-
- case SELECT_FLOW:
- return {
- ...state,
- selected: [action.id],
- }
-
- case WS_MSG:
- return {
- ...state,
- list: reduceList(state.list, listActions.handleWsMsg(action.msg)),
+ list: reduceList(state.list, listActions.remove(action.item.id)),
+ views: reduceViews(state.views, viewsActions.remove(action.item.id)),
}
case REQUEST:
return {
...state,
- list: reduceList(state.list, listActions.request())
+ list: reduceList(state.list, listActions.request()),
}
case RECEIVE:
+ const list = reduceList(state.list, listActions.receive(action.list))
return {
...state,
- list: reduceList(state.list, listActions.receive(action.list))
+ list,
+ views: reduceViews(state.views, viewsActions.receive(list)),
}
default:
- return state
- }
-}
-
-function makeFilterFun(filter) {
- return filter ? Filt.parse(filter) : () => true
-}
-
-function makeSortFun(sortKeyFun, desc) {
- return (a, b) => {
- const ka = sortKeyFun(a)
- const kb = sortKeyFun(b)
- if (ka > kb) {
- return desc ? -1 : 1
- }
- if (ka < kb) {
- return desc ? 1 : -1
- }
- return 0
- }
-}
-
-/**
- * @public
- */
-export function updateFilter(filter) {
- return { type: UPDATE_FILTER, filter }
-}
-
-/**
- * @public
- */
-export function updateHighlight(highlight) {
- return { type: UPDATE_HIGHLIGHT, highlight }
-}
-
-/**
- * @public
- */
-export function updateSorter(column, desc, sortKeyFun) {
- return { type: UPDATE_SORTER, column, desc, sortKeyFun }
-}
-
-/**
- * @public
- */
-export function select(id) {
- return (dispatch, getState) => {
- dispatch({ type: SELECT_FLOW, currentSelection: getState().flows.selected[0], id })
+ return {
+ ...state,
+ list: reduceList(state.list, action),
+ views: reduceViews(state.views, action),
+ }
}
}