aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/odlux/framework/src/components/material-table/utilities.ts
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wt/odlux/framework/src/components/material-table/utilities.ts')
-rw-r--r--sdnr/wt/odlux/framework/src/components/material-table/utilities.ts26
1 files changed, 25 insertions, 1 deletions
diff --git a/sdnr/wt/odlux/framework/src/components/material-table/utilities.ts b/sdnr/wt/odlux/framework/src/components/material-table/utilities.ts
index 6e8902c07..74682cd95 100644
--- a/sdnr/wt/odlux/framework/src/components/material-table/utilities.ts
+++ b/sdnr/wt/odlux/framework/src/components/material-table/utilities.ts
@@ -196,6 +196,29 @@ export function createExternal<TData>(callback: DataCallback<TData>, selectState
}).catch(error => new AddErrorInfoAction(error));
};
+ const reloadActionAsync = async (dispatch: Dispatch, getAppState: () => IApplicationStoreState) => {
+ dispatch(new RefreshAction());
+ const ownState = selectState(getAppState());
+ const filter = { ...ownState.preFilter, ...(ownState.showFilter && ownState.filter || {}) };
+
+ try {
+ const result = await Promise.resolve(callback(ownState.page, ownState.rowsPerPage, ownState.orderBy, ownState.order, filter));
+
+
+ if (ownState.page > 0 && ownState.rowsPerPage * ownState.page > result.total) { //if result is smaller than the currently shown page, new search and repaginate
+
+ let newPage = Math.floor(result.total / ownState.rowsPerPage);
+
+ const repaginationResult = await Promise.resolve(callback(newPage, ownState.rowsPerPage, ownState.orderBy, ownState.order, filter));
+ dispatch(new SetResultAction(repaginationResult));
+ } else {
+ dispatch(new SetResultAction(result));
+ }
+ } catch (error) {
+ new AddErrorInfoAction(error);
+ }
+ };
+
const createPreActions = (dispatch: Dispatch, skipRefresh: boolean = false) => {
return {
onPreFilterChanged: (preFilter: { [key: string]: string }) => {
@@ -258,6 +281,7 @@ export function createExternal<TData>(callback: DataCallback<TData>, selectState
createActions: createActions,
createProperties: createProperties,
createPreActions: createPreActions,
- actionHandler: externalTableStateActionHandler
+ actionHandler: externalTableStateActionHandler,
+ reloadActionAsync: reloadActionAsync,
}
} \ No newline at end of file