From 1a8849275993cc1cf8b4302dc84167fd46a577d0 Mon Sep 17 00:00:00 2001 From: Wikzyy Date: Mon, 14 Apr 2025 14:00:33 +0700 Subject: [PATCH] update column on table Manage Menus - fix filter searching menus - synx with response filter searching --- .../manage-menu/hooks/ManageMenusContext.tsx | 40 +++++++++++-------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/src/pages/menu/manage-menu/hooks/ManageMenusContext.tsx b/src/pages/menu/manage-menu/hooks/ManageMenusContext.tsx index 16f5b25..7ced52f 100644 --- a/src/pages/menu/manage-menu/hooks/ManageMenusContext.tsx +++ b/src/pages/menu/manage-menu/hooks/ManageMenusContext.tsx @@ -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 }) => , 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={} 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)