diff --git a/src/pages/wallet/wallet-statement/blocks/ListToolbar.tsx b/src/pages/wallet/wallet-statement/blocks/ListToolbar.tsx index 44ccbb8..520f0ef 100644 --- a/src/pages/wallet/wallet-statement/blocks/ListToolbar.tsx +++ b/src/pages/wallet/wallet-statement/blocks/ListToolbar.tsx @@ -24,46 +24,21 @@ interface GroupProps { name: string; } -const getOneMonthsAgo = () => { - const today = new Date(); - return new Date(today.getFullYear(), today.getMonth() - 1, today.getDate()); -}; - -const formatDate = (date: Date): string => date.toISOString().split('T')[0]; - -const ListToolbar = () => { +const ListToolbar = ({ + filters, + setFilters +}: { + filters: any; + setFilters: (value: any) => void; +}) => { const { table, reload } = useDataGrid(); const { GetData } = useCallApi(); - const [searchValue, setSearchValue] = useState( - (table.getColumn('msisdn')?.getFilterValue() as string) ?? '' - ); - const [walletId, setWalletId] = useState( - (table.getColumn('id_wallet')?.getFilterValue() as string) ?? '' - ); - const [groupId, setGroupId] = useState( - (table.getColumn('id_group')?.getFilterValue() as string) ?? '' - ); + const [searchValue, setSearchValue] = useState(''); const [wallets, setWallets] = useState([]); + const [walletId, setWalletId] = useState(null); const [groups, setGroups] = useState([]); - - useEffect(() => { - const timer = setTimeout(() => { - table.getColumn('msisdn')?.setFilterValue(searchValue); - table.setPageIndex(0); - }, 200); - return () => clearTimeout(timer); - }, [searchValue, table]); - - useEffect(() => { - table.getColumn('id_wallet')?.setFilterValue(walletId); - table.setPageIndex(0); - }, [walletId, table]); - - useEffect(() => { - table.getColumn('id_group')?.setFilterValue(groupId); - table.setPageIndex(0); - }, [groupId, table]); + const [groupId, setGroupId] = useState(null); const fetchWallets = async () => { try { @@ -100,22 +75,29 @@ const ListToolbar = () => { fetchGroups(); }, []); + const handleApplyFilters = () => { + const appliedFilters: any[] = []; + + if (searchValue) { + appliedFilters.push({ id: 'msisdn', value: searchValue }); + } + + if (walletId) { + appliedFilters.push({ id: 'id_wallet', value: walletId }); + } + + if (groupId) { + appliedFilters.push({ id: 'id_group', value: groupId }); + } + + setFilters(appliedFilters); + }; + const handleClearAllFilters = () => { - const today = new Date(); - const oneMonthAgo = getOneMonthsAgo(); - const resetDateRange = { - from: formatDate(oneMonthAgo), - to: formatDate(today) - }; - setSearchValue(''); - setWalletId(''); - setGroupId(''); - - table.getColumn('msisdn')?.setFilterValue(''); - table.getColumn('id_wallet')?.setFilterValue(''); - table.getColumn('id_group')?.setFilterValue(''); - table.getColumn('CreatedAt')?.setFilterValue(resetDateRange); + setWalletId(null); + setGroupId(null); + setFilters([]); setTimeout(() => { table.setPageIndex(0); @@ -124,22 +106,19 @@ const ListToolbar = () => { }; const handleRefresh = () => { - const today = new Date(); - const threeMonthsAgo = getOneMonthsAgo(); - const resetDateRange = { - from: formatDate(threeMonthsAgo), - to: formatDate(today) - }; - setSearchValue(''); setWalletId(''); setGroupId(''); - table.setColumnFilters([{ id: 'CreatedAt', value: resetDateRange }]); table.setPageIndex(0); reload(); }; + useEffect(() => { + table.setPageIndex(0); // reset ke halaman pertama kalau mau + reload(); // ini yang akan trigger data fetch ulang + }, [filters]); + return (
@@ -157,7 +136,7 @@ const ListToolbar = () => {
- setWalletId(value)}> @@ -172,7 +151,7 @@ const ListToolbar = () => {
- setGroupId(value)}> @@ -195,6 +174,10 @@ const ListToolbar = () => { + +
diff --git a/src/pages/wallet/wallet-statement/blocks/ShowDetailDialog.tsx b/src/pages/wallet/wallet-statement/blocks/ShowDetailDialog.tsx index 49c6c5a..107100d 100644 --- a/src/pages/wallet/wallet-statement/blocks/ShowDetailDialog.tsx +++ b/src/pages/wallet/wallet-statement/blocks/ShowDetailDialog.tsx @@ -48,7 +48,6 @@ const ShowDetailWalletDialog = () => { const [category, setCategory] = useState([]); const [transaction, setTransaction] = useState([]); const [filters, setFilters] = useState({}); - console.log(selectedCategory); const fetchTransferType = useCallback(async () => { try { @@ -148,7 +147,6 @@ const ShowDetailWalletDialog = () => { } setFilters(appliedFilters); - console.log('applied filter :', appliedFilters.category); }; const columns = [ diff --git a/src/pages/wallet/wallet-statement/hooks/ManageWalletStatementContext.tsx b/src/pages/wallet/wallet-statement/hooks/ManageWalletStatementContext.tsx index 1cbac68..42fea90 100644 --- a/src/pages/wallet/wallet-statement/hooks/ManageWalletStatementContext.tsx +++ b/src/pages/wallet/wallet-statement/hooks/ManageWalletStatementContext.tsx @@ -66,6 +66,7 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } const [showDeleteDialog, setShowDeleteDialog] = useState(false); const [selectedWallet, setSelectedWallet] = useState(null); const { GetData } = useCallApi(); + const [filters, setFilters] = useState({}); const handleAddDialog = useCallback((show: boolean) => { setShowAddDialog(show); @@ -380,11 +381,12 @@ const ManageWalletContextProvider = ({ children }: { children: React.ReactNode } } + toolbar={} layout={{ card: true }} serverSide={true} - onFetchData={({ pageIndex, pageSize, sorting, columnFilters }) => - getWalletLists(pageIndex, pageSize, sorting, columnFilters) + onFetchData={ + ({ pageIndex, pageSize, sorting }) => + getWalletLists(pageIndex, pageSize, sorting, filters) // gunakan filters dari state, bukan columnFilters } > {children}