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]' }
|
meta: { headerClassName: 'w-[200px]' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
accessorFn: (row) => row.parentName,
|
accessorFn: (row) => row.parentName || row.module,
|
||||||
id: 'menu',
|
id: 'menu',
|
||||||
header: ({ column }) => <DataGridColumnHeader title="Menu" column={column} />,
|
header: ({ column }) => <DataGridColumnHeader title="Menu" column={column} />,
|
||||||
enableSorting: false,
|
enableSorting: false,
|
||||||
@ -234,30 +234,38 @@ const ManageMenusContextProvider = ({ children }: { children: React.ReactNode })
|
|||||||
const getMenusLists = async (page: number, limit: number, sorting: any, filter: any) => {
|
const getMenusLists = async (page: number, limit: number, sorting: any, filter: any) => {
|
||||||
try {
|
try {
|
||||||
sorting = sorting.length === 0 ? [{ id: 'name', desc: false }] : sorting;
|
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,
|
limit,
|
||||||
page: 1,
|
page: 1,
|
||||||
with_deleted: false,
|
with_deleted: false,
|
||||||
order_field: sorting[0].id,
|
order_field: sorting[0].id,
|
||||||
order_direction: sorting[0].desc ? 'DESC' : 'ASC',
|
order_direction: sorting[0].desc ? 'DESC' : 'ASC'
|
||||||
filter: JSON.stringify(filter)
|
};
|
||||||
});
|
|
||||||
|
|
||||||
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) =>
|
const response = await GetData(`${API_URL}/menus/list`, query);
|
||||||
flattenChildren(row, parentIdx)
|
|
||||||
);
|
|
||||||
|
|
||||||
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 total_count = transformedData.length;
|
||||||
const paginatedData = transformedData.slice(page * limit, (page + 1) * limit);
|
|
||||||
const totalPages = Math.ceil(total_count / limit);
|
|
||||||
|
|
||||||
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) {
|
} catch (error) {
|
||||||
console.error('Error fetching Menus', error);
|
console.error('Error fetching Menus', error);
|
||||||
return { data: [], totalCount: 0 };
|
return { data: [], totalCount: 0 };
|
||||||
@ -287,7 +295,7 @@ const ManageMenusContextProvider = ({ children }: { children: React.ReactNode })
|
|||||||
pagination={{ size: 25 }}
|
pagination={{ size: 25 }}
|
||||||
toolbar={<ListToolbar />}
|
toolbar={<ListToolbar />}
|
||||||
layout={{ card: true }}
|
layout={{ card: true }}
|
||||||
sorting={[{ id: 'id', desc: false }]}
|
sorting={[{ id: 'created_at', desc: true }]}
|
||||||
serverSide={true}
|
serverSide={true}
|
||||||
onFetchData={({ pageIndex, pageSize, sorting, columnFilters }) =>
|
onFetchData={({ pageIndex, pageSize, sorting, columnFilters }) =>
|
||||||
getMenusLists(pageIndex, pageSize, sorting, columnFilters)
|
getMenusLists(pageIndex, pageSize, sorting, columnFilters)
|
||||||
|
|||||||
Reference in New Issue
Block a user