Start of serverside client tables

This commit is contained in:
Donkie
2023-08-29 21:45:26 +02:00
parent e2d937aaf1
commit 1a031903de
2 changed files with 35 additions and 27 deletions

View File

@@ -13,12 +13,36 @@ const dataProvider = (
Required<DataProvider>,
"createMany" | "updateMany" | "deleteMany"
> => ({
getList: async ({ resource, meta }) => {
getList: async ({ resource, meta, pagination, sorters, filters }) => {
const url = `${apiUrl}/${resource}`;
const { headers: headersFromMeta, method, queryParams } = meta ?? {};
const requestMethod = (method as MethodTypes) ?? "get";
if (pagination && pagination.mode == "server") {
const pageSize = pagination.pageSize ?? 10;
const offset = ((pagination.current ?? 1) - 1) * pageSize;
queryParams["limit"] = pageSize;
queryParams["offset"] = offset;
}
if (sorters && sorters.length > 0) {
queryParams["sort"] = sorters.map((sort) => {
const field = sort.field.replace("_", ".")
return `${field}:${sort.order}`;
}).join(",")
}
if (filters && filters.length > 0) {
filters.forEach(filter => {
if (!("field" in filter)) {
throw Error("Filter must be a LogicalFilter.")
}
const field = filter.field.replace(".", "_")
queryParams[field] = filter.value
});
}
const { data } = await httpClient[requestMethod](
`${url}`,
{
@@ -29,7 +53,8 @@ const dataProvider = (
return {
data,
total: data.length,
total: 100,
//TODO: total: data.length,
};
},