feat: add sort functionality to Audit Log Resource Types list with new filter options
This commit is contained in:
parent
d26456ab94
commit
ccbda2c0ae
@ -66,7 +66,8 @@ const AuditLogResourceTypes = (): ReactElement => {
|
||||
const [search, setSearch] = useState<string>('');
|
||||
const [debouncedSearch, setDebouncedSearch] = useState<string>('');
|
||||
const [typeFilter, setTypeFilter] = useState<string | null>(null);
|
||||
const [moduleIdFilter, setModuleIdFilter] = useState<string | null>(null);
|
||||
const [moduleIdFilter, setModuleIdFilter] = useState<string| null>(null);
|
||||
const [sort, setSort] = useState<string>('asc');
|
||||
|
||||
const {
|
||||
register,
|
||||
@ -95,7 +96,8 @@ const AuditLogResourceTypes = (): ReactElement => {
|
||||
const response = await auditLogService.getAllResourceTypes(currentPage, limit, {
|
||||
search: debouncedSearch,
|
||||
type: typeFilter,
|
||||
module_id: moduleIdFilter
|
||||
module_id: moduleIdFilter,
|
||||
sort
|
||||
});
|
||||
if (response.success) {
|
||||
setResourceTypes(response.data);
|
||||
@ -107,7 +109,7 @@ const AuditLogResourceTypes = (): ReactElement => {
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
}
|
||||
}, [currentPage, limit, debouncedSearch, typeFilter, moduleIdFilter]);
|
||||
}, [currentPage, limit, debouncedSearch, typeFilter, moduleIdFilter, sort]);
|
||||
|
||||
const fetchModules = async () => {
|
||||
try {
|
||||
@ -325,13 +327,31 @@ const AuditLogResourceTypes = (): ReactElement => {
|
||||
placeholder="All Modules"
|
||||
/>
|
||||
|
||||
{(debouncedSearch || typeFilter || moduleIdFilter) && (
|
||||
{/* Sort Filter */}
|
||||
<FilterDropdown
|
||||
label="Sort By"
|
||||
options={[
|
||||
{ value: 'newest', label: 'Newest First' },
|
||||
{ value: 'oldest', label: 'Oldest First' },
|
||||
{ value: 'asc', label: 'Name (A-Z)' },
|
||||
{ value: 'desc', label: 'Name (Z-A)' },
|
||||
]}
|
||||
value={sort}
|
||||
onChange={(val) => {
|
||||
setSort(val as string || 'newest');
|
||||
setCurrentPage(1);
|
||||
}}
|
||||
placeholder="Sort Order"
|
||||
/>
|
||||
|
||||
{(debouncedSearch || typeFilter || moduleIdFilter || sort !== 'asc') && (
|
||||
<button
|
||||
onClick={() => {
|
||||
setSearch('');
|
||||
setDebouncedSearch('');
|
||||
setTypeFilter(null);
|
||||
setModuleIdFilter(null);
|
||||
setSort('asc');
|
||||
setCurrentPage(1);
|
||||
}}
|
||||
className="text-xs text-[#ef4444] hover:underline font-medium ml-1"
|
||||
|
||||
@ -75,6 +75,7 @@ export const auditLogService = {
|
||||
if (filters.search) params.append('search', filters.search);
|
||||
if (filters.type) params.append('type', filters.type);
|
||||
if (filters.module_id) params.append('module_id', filters.module_id);
|
||||
if (filters.sort) params.append('sort', filters.sort);
|
||||
|
||||
const response = await apiClient.get(`/audit-log-resource-types?${params.toString()}`);
|
||||
return response.data;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user