Skip to content

Commit b8d40ea

Browse files
authored
Merge branch 'develop' into feature-2872/kudos-surplus-tooltip
2 parents 14cd1d9 + e833935 commit b8d40ea

File tree

3 files changed

+76
-19
lines changed

3 files changed

+76
-19
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"

web-ui/src/pages/ManageKudosPage.jsx

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -112,21 +112,29 @@ const ManageKudosPage = () => {
112112
setPendingKudos(sortPendingKudos([...pendingKudos]));
113113
}, [pendingSort]);
114114

115+
const loadAndSetPendingKudos = () => {
116+
loadPendingKudos().then(data => {
117+
if (data) {
118+
setPendingKudos(sortPendingKudos(data));
119+
}
120+
});
121+
};
122+
123+
const loadAndSetApprovedKudos = () => {
124+
loadApprovedKudos().then(data => {
125+
if (data) {
126+
setApprovedKudos(data);
127+
}
128+
});
129+
};
130+
115131
const handleTabChange = useCallback((event, newTab) => {
116132
switch (newTab) {
117133
case "PENDING":
118-
loadPendingKudos().then(data => {
119-
if (data) {
120-
setPendingKudos(sortPendingKudos(data));
121-
}
122-
});
134+
loadAndSetPendingKudos();
123135
break;
124136
case "APPROVED":
125-
loadApprovedKudos().then(data => {
126-
if (data) {
127-
setApprovedKudos(data);
128-
}
129-
});
137+
loadAndSetApprovedKudos();
130138
break;
131139
default:
132140
console.warn(`Invalid tab: ${newTab}`);
@@ -210,10 +218,7 @@ const ManageKudosPage = () => {
210218
kudos={k}
211219
includeActions
212220
includeEdit
213-
onKudosAction={() => {
214-
const updatedKudos = pendingKudos.filter(pk => pk.id !== k.id);
215-
setPendingKudos(updatedKudos);
216-
}}
221+
onKudosAction={loadAndSetPendingKudos}
217222
/>
218223
)}
219224
</div>

0 commit comments

Comments
 (0)