update column on table Manage Menus
- fix filter searching menus - synx with response filter searching
This commit is contained in:
@ -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)
|
||||
|
||||
Reference in New Issue
Block a user