2019-09-04 14:39:35 +00:00
|
|
|
import { handleActions } from 'redux-actions';
|
|
|
|
|
|
|
|
import * as actions from '../actions/queryLogs';
|
2019-09-26 08:36:02 +00:00
|
|
|
import { DEFAULT_LOGS_FILTER } from '../helpers/constants';
|
2019-09-04 14:39:35 +00:00
|
|
|
|
|
|
|
const queryLogs = handleActions(
|
|
|
|
{
|
2019-09-20 12:05:10 +00:00
|
|
|
[actions.setLogsPagination]: (state, { payload }) => {
|
|
|
|
const { page, pageSize } = payload;
|
|
|
|
const { allLogs } = state;
|
|
|
|
const rowsStart = pageSize * page;
|
|
|
|
const rowsEnd = (pageSize * page) + pageSize;
|
|
|
|
const logsSlice = allLogs.slice(rowsStart, rowsEnd);
|
|
|
|
const pages = Math.ceil(allLogs.length / pageSize);
|
|
|
|
|
|
|
|
return {
|
|
|
|
...state,
|
|
|
|
pages,
|
|
|
|
logs: logsSlice,
|
|
|
|
};
|
|
|
|
},
|
|
|
|
|
2019-11-15 07:51:45 +00:00
|
|
|
[actions.setLogsPage]: (state, { payload }) => ({
|
|
|
|
...state,
|
|
|
|
page: payload,
|
|
|
|
}),
|
|
|
|
|
|
|
|
[actions.setLogsFilterRequest]: state => ({ ...state, processingGetLogs: true }),
|
|
|
|
[actions.setLogsFilterFailure]: state => ({ ...state, processingGetLogs: false }),
|
|
|
|
[actions.setLogsFilterSuccess]: (state, { payload }) => {
|
|
|
|
const { logs, oldest, filter } = payload;
|
|
|
|
const pageSize = 100;
|
|
|
|
const page = 0;
|
|
|
|
|
|
|
|
const pages = Math.ceil(logs.length / pageSize);
|
|
|
|
const total = logs.length;
|
|
|
|
const rowsStart = pageSize * page;
|
|
|
|
const rowsEnd = (pageSize * page) + pageSize;
|
|
|
|
const logsSlice = logs.slice(rowsStart, rowsEnd);
|
|
|
|
const isFiltered = Object.keys(filter).some(key => filter[key]);
|
|
|
|
|
|
|
|
return {
|
|
|
|
...state,
|
|
|
|
oldest,
|
|
|
|
filter,
|
|
|
|
isFiltered,
|
|
|
|
pages,
|
|
|
|
total,
|
|
|
|
logs: logsSlice,
|
|
|
|
allLogs: logs,
|
|
|
|
processingGetLogs: false,
|
|
|
|
};
|
|
|
|
},
|
2019-09-26 08:36:02 +00:00
|
|
|
|
2019-09-04 14:39:35 +00:00
|
|
|
[actions.getLogsRequest]: state => ({ ...state, processingGetLogs: true }),
|
|
|
|
[actions.getLogsFailure]: state => ({ ...state, processingGetLogs: false }),
|
|
|
|
[actions.getLogsSuccess]: (state, { payload }) => {
|
2019-09-20 12:05:10 +00:00
|
|
|
const {
|
2020-01-30 08:57:51 +00:00
|
|
|
logs, oldest, older_than, page, pageSize, initial,
|
2019-09-20 12:05:10 +00:00
|
|
|
} = payload;
|
2020-01-30 08:57:51 +00:00
|
|
|
let logsWithOffset = state.allLogs.length > 0 && !initial ? state.allLogs : logs;
|
2019-09-20 12:05:10 +00:00
|
|
|
let allLogs = logs;
|
|
|
|
|
2019-11-13 16:09:40 +00:00
|
|
|
if (older_than) {
|
2019-09-20 12:05:10 +00:00
|
|
|
logsWithOffset = [...state.allLogs, ...logs];
|
|
|
|
allLogs = [...state.allLogs, ...logs];
|
|
|
|
}
|
|
|
|
|
|
|
|
const pages = Math.ceil(logsWithOffset.length / pageSize);
|
|
|
|
const total = logsWithOffset.length;
|
|
|
|
const rowsStart = pageSize * page;
|
|
|
|
const rowsEnd = (pageSize * page) + pageSize;
|
|
|
|
const logsSlice = logsWithOffset.slice(rowsStart, rowsEnd);
|
|
|
|
|
|
|
|
return {
|
|
|
|
...state,
|
2019-11-13 16:09:40 +00:00
|
|
|
oldest,
|
2019-09-20 12:05:10 +00:00
|
|
|
pages,
|
|
|
|
total,
|
|
|
|
allLogs,
|
|
|
|
logs: logsSlice,
|
2019-09-26 08:36:02 +00:00
|
|
|
isEntireLog: logs.length < 1,
|
2019-09-20 12:05:10 +00:00
|
|
|
processingGetLogs: false,
|
|
|
|
};
|
2019-09-04 14:39:35 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
[actions.clearLogsRequest]: state => ({ ...state, processingClear: true }),
|
|
|
|
[actions.clearLogsFailure]: state => ({ ...state, processingClear: false }),
|
|
|
|
[actions.clearLogsSuccess]: state => ({
|
|
|
|
...state,
|
|
|
|
logs: [],
|
|
|
|
processingClear: false,
|
|
|
|
}),
|
|
|
|
|
|
|
|
[actions.getLogsConfigRequest]: state => ({ ...state, processingGetConfig: true }),
|
|
|
|
[actions.getLogsConfigFailure]: state => ({ ...state, processingGetConfig: false }),
|
|
|
|
[actions.getLogsConfigSuccess]: (state, { payload }) => ({
|
|
|
|
...state,
|
|
|
|
...payload,
|
|
|
|
processingGetConfig: false,
|
|
|
|
}),
|
|
|
|
|
|
|
|
[actions.setLogsConfigRequest]: state => ({ ...state, processingSetConfig: true }),
|
|
|
|
[actions.setLogsConfigFailure]: state => ({ ...state, processingSetConfig: false }),
|
|
|
|
[actions.setLogsConfigSuccess]: (state, { payload }) => ({
|
|
|
|
...state,
|
|
|
|
...payload,
|
|
|
|
processingSetConfig: false,
|
|
|
|
}),
|
2019-11-18 11:51:09 +00:00
|
|
|
|
|
|
|
[actions.getAdditionalLogsRequest]: state => ({
|
|
|
|
...state, processingAdditionalLogs: true, processingGetLogs: true,
|
|
|
|
}),
|
|
|
|
[actions.getAdditionalLogsFailure]: state => ({
|
|
|
|
...state, processingAdditionalLogs: false, processingGetLogs: false,
|
|
|
|
}),
|
|
|
|
[actions.getAdditionalLogsSuccess]: state => ({
|
|
|
|
...state, processingAdditionalLogs: false, processingGetLogs: false,
|
|
|
|
}),
|
2019-09-04 14:39:35 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
processingGetLogs: true,
|
|
|
|
processingClear: false,
|
|
|
|
processingGetConfig: false,
|
|
|
|
processingSetConfig: false,
|
2019-11-18 11:51:09 +00:00
|
|
|
processingAdditionalLogs: false,
|
2019-09-04 14:39:35 +00:00
|
|
|
logs: [],
|
|
|
|
interval: 1,
|
2019-09-20 12:05:10 +00:00
|
|
|
allLogs: [],
|
2019-11-15 07:51:45 +00:00
|
|
|
page: 0,
|
2019-09-27 11:32:52 +00:00
|
|
|
pages: 0,
|
2019-09-20 12:05:10 +00:00
|
|
|
total: 0,
|
2019-09-04 14:39:35 +00:00
|
|
|
enabled: true,
|
2019-11-13 16:09:40 +00:00
|
|
|
oldest: '',
|
2019-09-26 08:36:02 +00:00
|
|
|
filter: DEFAULT_LOGS_FILTER,
|
2019-11-15 07:51:45 +00:00
|
|
|
isFiltered: false,
|
2019-09-04 14:39:35 +00:00
|
|
|
},
|
|
|
|
);
|
|
|
|
|
|
|
|
export default queryLogs;
|