update column on table Manage Menus

- fix filter searching menus
- synx with response filter searching
This commit is contained in:
Wikzyy
2025-04-14 14:00:33 +07:00
parent 3bbea4bff7
commit 1a88492759

View File

@ -109,7 +109,7 @@ const ManageMenusContextProvider = ({ children }: { children: React.ReactNode })
meta: { headerClassName: 'w-[200px]' }
},
{
accessorFn: (row) => row.parentName,
accessorFn: (row) => row.parentName || row.module,
id: 'menu',
header: ({ column }) => <DataGridColumnHeader title="Menu" column={column} />,
enableSorting: false,
@ -234,30 +234,38 @@ const ManageMenusContextProvider = ({ children }: { children: React.ReactNode })
const getMenusLists = async (page: number, limit: number, sorting: any, filter: any) => {
try {
sorting = sorting.length === 0 ? [{ id: 'name', desc: false }] : sorting;
filter = filter.length === 0 ? {} : { any: filter[0].value?.toLowerCase() };
filter = filter.length === 0 ? {} : { name: { like: `%${filter[0].value?.toLowerCase()}%` } };
const response = await GetData(`${API_URL}/menus/list`, {
const query: any = {
limit,
page: 1,
with_deleted: false,
order_field: sorting[0].id,
order_direction: sorting[0].desc ? 'DESC' : 'ASC',
filter: JSON.stringify(filter)
});
order_direction: sorting[0].desc ? 'DESC' : 'ASC'
};
if (!response?.data.list) return { data: [], totalCount: 0 };
if (filter && Object.keys(filter).length > 0) {
query.filter = JSON.stringify(filter);
query.page = page + 1;
}
const transformedData = response.data.list.flatMap((row: any, parentIdx: number) =>
flattenChildren(row, parentIdx)
);
const response = await GetData(`${API_URL}/menus/list`, query);
const total_count = transformedData.length;
if (query.filter && query.filter.length > 0) {
return { data: response?.data.list, totalCount: response?.data.total_count };
} else {
const transformedData = response?.data.list.flatMap((row: any, parentIdx: number) =>
flattenChildren(row, parentIdx)
);
// **Pagination di frontend saja (tanpa hit API ulang)**
const paginatedData = transformedData.slice(page * limit, (page + 1) * limit);
const totalPages = Math.ceil(total_count / limit);
const total_count = transformedData.length;
return { data: paginatedData, totalCount: total_count };
// **Pagination di frontend saja (tanpa hit API ulang)**
const paginatedData = transformedData.slice(page * limit, (page + 1) * limit);
const totalPages = Math.ceil(total_count / limit);
return { data: paginatedData, totalCount: total_count };
}
} catch (error) {
console.error('Error fetching Menus', error);
return { data: [], totalCount: 0 };
@ -287,7 +295,7 @@ const ManageMenusContextProvider = ({ children }: { children: React.ReactNode })
pagination={{ size: 25 }}
toolbar={<ListToolbar />}
layout={{ card: true }}
sorting={[{ id: 'id', desc: false }]}
sorting={[{ id: 'created_at', desc: true }]}
serverSide={true}
onFetchData={({ pageIndex, pageSize, sorting, columnFilters }) =>
getMenusLists(pageIndex, pageSize, sorting, columnFilters)