Skip to content

Commit 29e3d94

Browse files
authored
Merge branch 'develop' into feature-2874/received-sent-tabs-linkable
2 parents 3b46afa + e833935 commit 29e3d94

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
@@ -2,6 +2,9 @@ import React, { useCallback, useContext, useEffect, useState } from "react";
22
import { useParams } from 'react-router-dom';
33
import { styled } from "@mui/material/styles";
44
import { Button, Tab, Typography } from "@mui/material";
5+
import MenuItem from '@mui/material/MenuItem';
6+
import FormControl from '@mui/material/FormControl';
7+
import TextField from '@mui/material/TextField';
58
import { TabContext, TabList, TabPanel } from "@mui/lab";
69
import { AppContext } from "../context/AppContext";
710
import {
@@ -51,6 +54,13 @@ const validTabName = (name) => {
5154
name = "received";
5255
}
5356
return name;
57+
}
58+
59+
const DateRange = {
60+
THREE_MONTHS: '3mo',
61+
SIX_MONTHS: '6mo',
62+
ONE_YEAR: '1yr',
63+
ALL_TIME: 'all'
5464
};
5565

5666
const KudosPage = () => {
@@ -66,24 +76,48 @@ const KudosPage = () => {
6676
const [receivedKudosLoading, setReceivedKudosLoading] = useState(true);
6777
const [sentKudos, setSentKudos] = useState([]);
6878
const [sentKudosLoading, setSentKudosLoading] = useState(true);
79+
const [dateRange, setDateRange] = useState(DateRange.THREE_MONTHS);
80+
81+
const isInRange = (requestDate) => {
82+
const oldestDate = new Date();
83+
switch (dateRange) {
84+
case DateRange.SIX_MONTHS:
85+
oldestDate.setMonth(oldestDate.getMonth() - 6);
86+
break;
87+
case DateRange.ONE_YEAR:
88+
oldestDate.setFullYear(oldestDate.getFullYear() - 1);
89+
break;
90+
case DateRange.ALL_TIME:
91+
return true;
92+
case DateRange.THREE_MONTHS:
93+
default:
94+
oldestDate.setMonth(oldestDate.getMonth() - 3);
95+
}
96+
97+
if (Array.isArray(requestDate)) {
98+
requestDate = new Date(requestDate.join('/'));
99+
// have to do for Safari
100+
}
101+
return requestDate >= oldestDate;
102+
};
69103

70104
const loadReceivedKudos = useCallback(async () => {
71105
setReceivedKudosLoading(true);
72106
const res = await getReceivedKudos(currentUser.id, csrf);
73107
if (res?.payload?.data && !res.error) {
74108
setReceivedKudosLoading(false);
75-
return res.payload.data;
109+
return res.payload.data.filter((k) => isInRange(k.dateCreated));
76110
}
77-
}, [csrf, dispatch, currentUser.id]);
111+
}, [csrf, dispatch, currentUser.id, dateRange]);
78112

79113
const loadSentKudos = useCallback(async () => {
80114
setSentKudosLoading(true);
81115
const res = await getSentKudos(currentUser.id, csrf);
82116
if (res?.payload?.data && !res.error) {
83117
setSentKudosLoading(false);
84-
return res.payload.data;
118+
return res.payload.data.filter((k) => isInRange(k.dateCreated));
85119
}
86-
}, [csrf, dispatch, currentUser.id]);
120+
}, [csrf, dispatch, currentUser.id, dateRange]);
87121

88122
const loadAndSetReceivedKudos = () => {
89123
loadReceivedKudos().then((data) => {
@@ -110,7 +144,7 @@ const KudosPage = () => {
110144
loadAndSetSentKudos();
111145
}
112146
// eslint-disable-next-line react-hooks/exhaustive-deps
113-
}, [csrf, currentUser, kudosTab]);
147+
}, [csrf, currentUser, kudosTab, dateRange]);
114148

115149
const handleTabChange = useCallback(
116150
(event, newTab) => {
@@ -127,6 +161,23 @@ const KudosPage = () => {
127161
open={kudosDialogOpen}
128162
onClose={() => setKudosDialogOpen(false)}
129163
/>
164+
<FormControl className={classes.textField}>
165+
<TextField
166+
id="select-time"
167+
select
168+
fullWidth
169+
size="small"
170+
label="Show kudos within"
171+
onChange={e => setDateRange(e.target.value)}
172+
value={dateRange}
173+
variant="outlined"
174+
>
175+
<MenuItem value={DateRange.THREE_MONTHS}>Past 3 months</MenuItem>
176+
<MenuItem value={DateRange.SIX_MONTHS}>Past 6 months</MenuItem>
177+
<MenuItem value={DateRange.ONE_YEAR}>Past year</MenuItem>
178+
<MenuItem value={DateRange.ALL_TIME}>All time</MenuItem>
179+
</TextField>
180+
</FormControl>
130181
{selectHasCreateKudosPermission(state) && <Button
131182
className="kudos-dialog-open"
132183
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)