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 [search, setSearch] = useState<string>('');
|
||||||
const [debouncedSearch, setDebouncedSearch] = useState<string>('');
|
const [debouncedSearch, setDebouncedSearch] = useState<string>('');
|
||||||
const [typeFilter, setTypeFilter] = useState<string | null>(null);
|
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 {
|
const {
|
||||||
register,
|
register,
|
||||||
@ -95,7 +96,8 @@ const AuditLogResourceTypes = (): ReactElement => {
|
|||||||
const response = await auditLogService.getAllResourceTypes(currentPage, limit, {
|
const response = await auditLogService.getAllResourceTypes(currentPage, limit, {
|
||||||
search: debouncedSearch,
|
search: debouncedSearch,
|
||||||
type: typeFilter,
|
type: typeFilter,
|
||||||
module_id: moduleIdFilter
|
module_id: moduleIdFilter,
|
||||||
|
sort
|
||||||
});
|
});
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
setResourceTypes(response.data);
|
setResourceTypes(response.data);
|
||||||
@ -107,7 +109,7 @@ const AuditLogResourceTypes = (): ReactElement => {
|
|||||||
} finally {
|
} finally {
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
}
|
}
|
||||||
}, [currentPage, limit, debouncedSearch, typeFilter, moduleIdFilter]);
|
}, [currentPage, limit, debouncedSearch, typeFilter, moduleIdFilter, sort]);
|
||||||
|
|
||||||
const fetchModules = async () => {
|
const fetchModules = async () => {
|
||||||
try {
|
try {
|
||||||
@ -325,13 +327,31 @@ const AuditLogResourceTypes = (): ReactElement => {
|
|||||||
placeholder="All Modules"
|
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
|
<button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setSearch('');
|
setSearch('');
|
||||||
setDebouncedSearch('');
|
setDebouncedSearch('');
|
||||||
setTypeFilter(null);
|
setTypeFilter(null);
|
||||||
setModuleIdFilter(null);
|
setModuleIdFilter(null);
|
||||||
|
setSort('asc');
|
||||||
setCurrentPage(1);
|
setCurrentPage(1);
|
||||||
}}
|
}}
|
||||||
className="text-xs text-[#ef4444] hover:underline font-medium ml-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.search) params.append('search', filters.search);
|
||||||
if (filters.type) params.append('type', filters.type);
|
if (filters.type) params.append('type', filters.type);
|
||||||
if (filters.module_id) params.append('module_id', filters.module_id);
|
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()}`);
|
const response = await apiClient.get(`/audit-log-resource-types?${params.toString()}`);
|
||||||
return response.data;
|
return response.data;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user