feat: filter improvement

This commit is contained in:
Adnan Zahir
2026-04-23 00:18:10 +07:00
parent 60df577cc6
commit 617124efe4
13 changed files with 696 additions and 9 deletions
@@ -54,6 +54,13 @@ type ExpenseTableFilters = {
locationName: string;
vendorId: string;
vendorName: string;
category: string;
approvalStatus: string;
realizationStatus: string;
projectFlockId: string;
projectFlockName: string;
projectFlockKandangId: string;
projectFlockKandangName: string;
userId: string;
};
@@ -250,6 +257,13 @@ const ExpensesTable = () => {
locationName: '',
vendorId: '',
vendorName: '',
category: '',
approvalStatus: '',
realizationStatus: '',
projectFlockId: '',
projectFlockName: '',
projectFlockKandangId: '',
projectFlockKandangName: '',
userId: '',
},
paramMap: {
@@ -262,6 +276,13 @@ const ExpensesTable = () => {
locationName: 'location_name',
vendorId: 'vendor_id',
vendorName: 'vendor_name',
category: 'category',
approvalStatus: 'approval_status',
realizationStatus: 'realization_status',
projectFlockId: 'project_flock_id',
projectFlockName: 'project_flock_name',
projectFlockKandangId: 'project_flock_kandang_id',
projectFlockKandangName: 'project_flock_kandang_name',
userId: 'user_id',
},
@@ -749,6 +770,11 @@ const ExpensesTable = () => {
realization_date?: string | null;
location?: { value: number; label: string } | null;
vendor?: { value: number; label: string } | null;
category?: OptionType<string> | null;
approval_status?: OptionType<string> | null;
realization_status?: OptionType<string> | null;
project_flock?: OptionType<number> | null;
project_flock_kandang?: OptionType<number> | null;
}) => {
updateFilter('transactionDate', values.transaction_date || '');
updateFilter('realizationDate', values.realization_date || '');
@@ -768,6 +794,24 @@ const ExpensesTable = () => {
'vendorName',
values.vendor?.label ? String(values.vendor?.label) : ''
);
updateFilter('category', values.category?.value || '');
updateFilter('approvalStatus', values.approval_status?.value || '');
updateFilter('realizationStatus', values.realization_status?.value || '');
updateFilter(
'projectFlockId',
values.project_flock?.value ? String(values.project_flock.value) : ''
);
updateFilter('projectFlockName', values.project_flock?.label || '');
updateFilter(
'projectFlockKandangId',
values.project_flock_kandang?.value
? String(values.project_flock_kandang.value)
: ''
);
updateFilter(
'projectFlockKandangName',
values.project_flock_kandang?.label || ''
);
};
const handleFilterReset = () => {
@@ -947,6 +991,8 @@ const ExpensesTable = () => {
'userId',
'locationName',
'vendorName',
'projectFlockName',
'projectFlockKandangName',
]}
onClick={handleFilterModalOpen}
className='px-3 py-2.5'
@@ -1282,6 +1328,41 @@ const ExpensesTable = () => {
: null,
realization_date: tableFilterState.realizationDate,
transaction_date: tableFilterState.transactionDate,
category: tableFilterState.category
? {
value: tableFilterState.category,
label: tableFilterState.category,
}
: null,
approval_status: tableFilterState.approvalStatus
? approvalStatusOptions.find(
(item) => item.value === tableFilterState.approvalStatus
) || null
: null,
realization_status: tableFilterState.realizationStatus
? [
{ value: 'NOT_REALIZED', label: 'Belum Realisasi' },
{ value: 'REALIZED', label: 'Sudah Realisasi' },
{ value: 'REJECTED', label: 'Ditolak' },
].find(
(item) => item.value === tableFilterState.realizationStatus
) || null
: null,
project_flock:
tableFilterState.projectFlockId && tableFilterState.projectFlockName
? {
value: Number(tableFilterState.projectFlockId),
label: tableFilterState.projectFlockName,
}
: null,
project_flock_kandang:
tableFilterState.projectFlockKandangId &&
tableFilterState.projectFlockKandangName
? {
value: Number(tableFilterState.projectFlockKandangId),
label: tableFilterState.projectFlockKandangName,
}
: null,
}}
/>
</>