Skip to content

Commit 7d905d1

Browse files
committed
Added a filter for kudos, similar to the feedback filter.
1 parent 8aa3f26 commit 7d905d1

File tree

2 files changed

+57
-5
lines changed

2 files changed

+57
-5
lines changed

web-ui/src/pages/KudosPage.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
.kudos-page .kudos-page-header {
2020
display: flex;
21+
gap: .5em;
2122
justify-content: flex-end;
2223
}
2324

web-ui/src/pages/KudosPage.jsx

Lines changed: 56 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import React, { useCallback, useContext, useEffect, useState } from "react";
22
import { styled } from "@mui/material/styles";
33
import { Button, Tab, Typography } from "@mui/material";
4+
import MenuItem from '@mui/material/MenuItem';
5+
import FormControl from '@mui/material/FormControl';
6+
import TextField from '@mui/material/TextField';
47
import { TabContext, TabList, TabPanel } from "@mui/lab";
58
import { AppContext } from "../context/AppContext";
69
import {
@@ -40,6 +43,13 @@ const Root = styled("div")({
4043
},
4144
});
4245

46+
const DateRange = {
47+
THREE_MONTHS: '3mo',
48+
SIX_MONTHS: '6mo',
49+
ONE_YEAR: '1yr',
50+
ALL_TIME: 'all'
51+
};
52+
4353
const KudosPage = () => {
4454
const { state, dispatch } = useContext(AppContext);
4555
const csrf = selectCsrfToken(state);
@@ -52,24 +62,48 @@ const KudosPage = () => {
5262
const [receivedKudosLoading, setReceivedKudosLoading] = useState(true);
5363
const [sentKudos, setSentKudos] = useState([]);
5464
const [sentKudosLoading, setSentKudosLoading] = useState(true);
65+
const [dateRange, setDateRange] = useState(DateRange.THREE_MONTHS);
66+
67+
const isInRange = (requestDate) => {
68+
const oldestDate = new Date();
69+
switch (dateRange) {
70+
case DateRange.SIX_MONTHS:
71+
oldestDate.setMonth(oldestDate.getMonth() - 6);
72+
break;
73+
case DateRange.ONE_YEAR:
74+
oldestDate.setFullYear(oldestDate.getFullYear() - 1);
75+
break;
76+
case DateRange.ALL_TIME:
77+
return true;
78+
case DateRange.THREE_MONTHS:
79+
default:
80+
oldestDate.setMonth(oldestDate.getMonth() - 3);
81+
}
82+
83+
if (Array.isArray(requestDate)) {
84+
requestDate = new Date(requestDate.join('/'));
85+
// have to do for Safari
86+
}
87+
return requestDate >= oldestDate;
88+
};
5589

5690
const loadReceivedKudos = useCallback(async () => {
5791
setReceivedKudosLoading(true);
5892
const res = await getReceivedKudos(currentUser.id, csrf);
5993
if (res?.payload?.data && !res.error) {
6094
setReceivedKudosLoading(false);
61-
return res.payload.data;
95+
return res.payload.data.filter((k) => isInRange(k.dateCreated));
6296
}
63-
}, [csrf, dispatch, currentUser.id]);
97+
}, [csrf, dispatch, currentUser.id, dateRange]);
6498

6599
const loadSentKudos = useCallback(async () => {
66100
setSentKudosLoading(true);
67101
const res = await getSentKudos(currentUser.id, csrf);
68102
if (res?.payload?.data && !res.error) {
69103
setSentKudosLoading(false);
70-
return res.payload.data;
104+
return res.payload.data.filter((k) => isInRange(k.dateCreated));
71105
}
72-
}, [csrf, dispatch, currentUser.id]);
106+
}, [csrf, dispatch, currentUser.id, dateRange]);
73107

74108
const loadAndSetReceivedKudos = () => {
75109
loadReceivedKudos().then((data) => {
@@ -96,7 +130,7 @@ const KudosPage = () => {
96130
loadAndSetSentKudos();
97131
}
98132
// eslint-disable-next-line react-hooks/exhaustive-deps
99-
}, [csrf, currentUser, kudosTab]);
133+
}, [csrf, currentUser, kudosTab, dateRange]);
100134

101135
const handleTabChange = useCallback(
102136
(event, newTab) => {
@@ -124,6 +158,23 @@ const KudosPage = () => {
124158
open={kudosDialogOpen}
125159
onClose={() => setKudosDialogOpen(false)}
126160
/>
161+
<FormControl className={classes.textField}>
162+
<TextField
163+
id="select-time"
164+
select
165+
fullWidth
166+
size="small"
167+
label="Show kudos within"
168+
onChange={e => setDateRange(e.target.value)}
169+
value={dateRange}
170+
variant="outlined"
171+
>
172+
<MenuItem value={DateRange.THREE_MONTHS}>Past 3 months</MenuItem>
173+
<MenuItem value={DateRange.SIX_MONTHS}>Past 6 months</MenuItem>
174+
<MenuItem value={DateRange.ONE_YEAR}>Past year</MenuItem>
175+
<MenuItem value={DateRange.ALL_TIME}>All time</MenuItem>
176+
</TextField>
177+
</FormControl>
127178
{selectHasCreateKudosPermission(state) && <Button
128179
className="kudos-dialog-open"
129180
variant="outlined"

0 commit comments

Comments
 (0)