mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-20 14:50:32 +00:00
feat: datatables pagination.
This commit is contained in:
@@ -1,8 +1,29 @@
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { pickItemsFromIds, paginationLocationQuery } from 'store/selectors';
|
||||
|
||||
const expensesTableQuery = state => state.expenses.tableQuery;
|
||||
const expensesTableQuery = (state) => state.expenses.tableQuery;
|
||||
|
||||
const getPageExpensesQuery = (state, props) => {
|
||||
const currentPageId = state.expenses.views?.[props.viewId]?.paginationMeta?.page;
|
||||
return currentPageId || 0;
|
||||
};
|
||||
|
||||
const expensesPageSelector = (state, props, query) => {
|
||||
const viewId = state.expenses.currentViewId;
|
||||
const currentPageId = getPageExpensesQuery(state, { viewId });
|
||||
|
||||
return state.expenses.views?.[viewId]?.pages?.[currentPageId];
|
||||
};
|
||||
|
||||
const expensesItemsSelector = (state) => state.expenses.items;
|
||||
const expenseByIdSelector = (state, props) => state.expenses.items[props.expenseId];
|
||||
|
||||
const manualJournalsPaginationSelector = (state, props) => {
|
||||
const viewId = state.expenses.currentViewId;
|
||||
return state.expenses.views?.[viewId];
|
||||
};
|
||||
|
||||
// Retrive expenses table query.
|
||||
export const getExpensesTableQuery = createSelector(
|
||||
paginationLocationQuery,
|
||||
expensesTableQuery,
|
||||
@@ -14,13 +35,7 @@ export const getExpensesTableQuery = createSelector(
|
||||
},
|
||||
);
|
||||
|
||||
const expensesPageSelector = (state, props, query) => {
|
||||
const viewId = state.expenses.currentViewId;
|
||||
return state.expenses.views?.[viewId]?.pages?.[query.page];
|
||||
};
|
||||
|
||||
const expensesItemsSelector = (state) => state.expenses.items;
|
||||
|
||||
// Retrieve expenses results of the current page.
|
||||
export const getExpensesCurrentPageFactory = () => createSelector(
|
||||
expensesPageSelector,
|
||||
expensesItemsSelector,
|
||||
@@ -31,8 +46,7 @@ export const getExpensesCurrentPageFactory = () => createSelector(
|
||||
},
|
||||
);
|
||||
|
||||
const expenseByIdSelector = (state, props) => state.expenses.items[props.expenseId];
|
||||
|
||||
// Retrieve specific expense by the passed expense id.
|
||||
export const getExpenseByIdFactory = () => createSelector(
|
||||
expenseByIdSelector,
|
||||
(expense) => {
|
||||
@@ -40,11 +54,7 @@ export const getExpenseByIdFactory = () => createSelector(
|
||||
}
|
||||
);
|
||||
|
||||
const manualJournalsPaginationSelector = (state, props) => {
|
||||
const viewId = state.expenses.currentViewId;
|
||||
return state.expenses.views?.[viewId];
|
||||
};
|
||||
|
||||
// Retrieve expenses pagination meta.
|
||||
export const getExpensesPaginationMetaFactory = () => createSelector(
|
||||
manualJournalsPaginationSelector,
|
||||
(expensesPage) => {
|
||||
|
||||
Reference in New Issue
Block a user