Skip to content

Commit 30e5ac3

Browse files
committed
Create sort button
1 parent 87c9989 commit 30e5ac3

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

frontend/src/pages/Reports/ReportsListPage.tsx

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import filterOutlineIcon from 'assets/icons/filter-outline.svg';
2929
import './ReportsListPage.scss';
3030

3131
type FilterOption = 'all' | 'bookmarked';
32+
type SortDirection = 'desc' | 'asc';
3233

3334
/**
3435
* Page component for displaying a list of all medical reports.
@@ -38,6 +39,7 @@ const ReportsListPage: React.FC = () => {
3839
const history = useHistory();
3940
const queryClient = useQueryClient();
4041
const [filter, setFilter] = useState<FilterOption>('all');
42+
const [sortDirection, setSortDirection] = useState<SortDirection>('desc'); // Default sort by newest first
4143
const [showToast, setShowToast] = useState(false);
4244
const [toastMessage, setToastMessage] = useState('');
4345

@@ -48,11 +50,18 @@ const ReportsListPage: React.FC = () => {
4850

4951
const { mutate: markAsRead } = useMarkReportAsRead();
5052

51-
// Filter reports based on selected filter
53+
// Filter and sort reports based on selected filter and sort direction
5254
const filteredReports = useMemo(() => {
53-
if (filter === 'all') return reports;
54-
return reports.filter(report => report.bookmarked);
55-
}, [reports, filter]);
55+
// First, filter the reports
56+
const filtered = filter === 'all' ? reports : reports.filter(report => report.bookmarked);
57+
58+
// Then, sort the filtered reports by date
59+
return [...filtered].sort((a, b) => {
60+
const dateA = new Date(a.createdAt).getTime();
61+
const dateB = new Date(b.createdAt).getTime();
62+
return sortDirection === 'desc' ? dateB - dateA : dateA - dateB;
63+
});
64+
}, [reports, filter, sortDirection]);
5665

5766
// Check if there are any bookmarked reports
5867
const hasBookmarkedReports = useMemo(() => {
@@ -104,8 +113,8 @@ const ReportsListPage: React.FC = () => {
104113
};
105114

106115
const handleSortClick = () => {
107-
setToastMessage(t('list.sortButton', { ns: 'report' }));
108-
setShowToast(true);
116+
const newSortDirection = sortDirection === 'desc' ? 'asc' : 'desc';
117+
setSortDirection(newSortDirection);
109118
};
110119

111120
const handleFilterClick = () => {

0 commit comments

Comments
 (0)