Skip to content

Commit 9aa3ab6

Browse files
committed
refactor: improve period sorting and filtering logic in ActivityLogPage and PeriodsPage
1 parent 6e43ef5 commit 9aa3ab6

2 files changed

Lines changed: 20 additions & 10 deletions

File tree

src/pages/ActivityLogPage.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ const ActivityLogPage: React.FC = () => {
5858
return aTimestamp - bTimestamp;
5959
});
6060

61+
const sortedPeriods = (periods || [])
62+
.slice()
63+
.sort((a, b) => new Date(a.startTime || '').getTime() - new Date(b.startTime || '').getTime());
64+
6165
return (
6266
<Container>
6367
<Card>
@@ -67,9 +71,9 @@ const ActivityLogPage: React.FC = () => {
6771
<Col md="auto" className="d-flex align-items-center gap-2">
6872
<ContextSelect
6973
label="Period"
70-
options={periods}
74+
options={sortedPeriods}
7175
value={selectedPeriod ? selectedPeriod.periodId : null}
72-
onSelect={id => setSelectedPeriod(id ? periods.find(p => p.periodId === id) ?? null : null)}
76+
onSelect={id => setSelectedPeriod(id ? sortedPeriods.find(p => p.periodId === id) ?? null : null)}
7377
loading={periodsLoading}
7478
getOptionLabel={p => p.description}
7579
getOptionValue={p => p.periodId}

src/pages/Periods/PeriodsPage.tsx

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -139,18 +139,24 @@ const PeriodsPage: React.FC = () => {
139139
);
140140
if (error) return <Alert variant="danger">{error}</Alert>;
141141

142-
// Filter and sort periods before rendering
143-
const filteredPeriods = periods
142+
const periodOptions = periods
144143
.filter(p => {
145-
// Filter by selected unit if set
146144
if (selectedUnit && p.unitId !== selectedUnit.unitId) return false;
147-
// Then filter by selected period if set
145+
return true;
146+
})
147+
.slice()
148+
.sort((a, b) => new Date(a.startTime || '').getTime() - new Date(b.startTime || '').getTime());
149+
150+
// Filter and sort periods before rendering table
151+
const filteredPeriods = periodOptions
152+
.filter(p => {
148153
if (selectedPeriod && p.periodId !== selectedPeriod.periodId) return false;
149154
return true;
150155
})
156+
.slice()
151157
.sort((a, b) => {
152-
const aTime = new Date(a.startTime).getTime();
153-
const bTime = new Date(b.startTime).getTime();
158+
const aTime = new Date(a.startTime || '').getTime();
159+
const bTime = new Date(b.startTime || '').getTime();
154160
return sortOrder === 'asc' ? aTime - bTime : bTime - aTime;
155161
});
156162

@@ -172,9 +178,9 @@ const PeriodsPage: React.FC = () => {
172178
/>
173179
<ContextSelect
174180
label="Period"
175-
options={filteredPeriods}
181+
options={periodOptions}
176182
value={selectedPeriod ? selectedPeriod.periodId : null}
177-
onSelect={id => setSelectedPeriod(id ? filteredPeriods.find(p => p.periodId === id) ?? null : null)}
183+
onSelect={id => setSelectedPeriod(id ? periodOptions.find(p => p.periodId === id) ?? null : null)}
178184
loading={loading}
179185
getOptionLabel={p => p.description}
180186
getOptionValue={p => p.periodId}

0 commit comments

Comments
 (0)