Skip to content

Commit dee0ca8

Browse files
authored
Merge pull request #2757 from objectcomputing/release/0.8
Release v0.8.7 to production
2 parents 29e2c84 + ee61de7 commit dee0ca8

File tree

19 files changed

+1140
-1017
lines changed

19 files changed

+1140
-1017
lines changed

server/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ plugins {
77
id "jacoco"
88
}
99

10-
version "0.8.6"
10+
version "0.8.7"
1111
group "com.objectcomputing.checkins"
1212

1313
repositories {

server/src/main/java/com/objectcomputing/checkins/services/memberprofile/birthday/BirthDayServicesImpl.java

+10-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ public BirthDayServicesImpl(MemberProfileServices memberProfileServices) {
2323
public List<BirthDayResponseDTO> findByValue(String[] months, Integer[] daysOfMonth) {
2424
Set<MemberProfile> memberProfiles = memberProfileServices.findByValues(null, null, null, null, null, null, false);
2525
List<MemberProfile> memberProfileAll = new ArrayList<>(memberProfiles);
26+
if (months == null && daysOfMonth == null) {
27+
// If nothing was passed in, get all members without birthdays.
28+
memberProfileAll = memberProfileAll
29+
.stream()
30+
.filter(member -> member.getBirthDate() == null)
31+
.toList();
32+
}
2633
if (months != null) {
2734
for (String month : months) {
2835
if (month != null) {
@@ -66,7 +73,9 @@ private List<BirthDayResponseDTO> profileToBirthDateResponseDto(List<MemberProfi
6673
BirthDayResponseDTO birthDayResponseDTO = new BirthDayResponseDTO();
6774
birthDayResponseDTO.setUserId(member.getId());
6875
birthDayResponseDTO.setName(member.getFirstName() + "" +member.getLastName());
69-
birthDayResponseDTO.setBirthDay(member.getBirthDate().getMonthValue() + "/" +member.getBirthDate().getDayOfMonth());
76+
if (member.getBirthDate() != null) {
77+
birthDayResponseDTO.setBirthDay(member.getBirthDate().getMonthValue() + "/" +member.getBirthDate().getDayOfMonth());
78+
}
7079
birthDays.add(birthDayResponseDTO);
7180
}
7281
}

web-ui/.nvmrc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
lts/*
1+
stable/*

web-ui/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "web-ui",
3-
"version": "0.8.6",
3+
"version": "0.8.7",
44
"private": true,
55
"type": "module",
66
"dependencies": {
@@ -76,7 +76,7 @@
7676
]
7777
},
7878
"devDependencies": {
79-
"@ladle/react": "^4.0.3",
79+
"@ladle/react": "^4.1.2",
8080
"@testing-library/jest-dom": "^6.4.5",
8181
"@testing-library/react": "^14.2.2",
8282
"@testing-library/react-hooks": "^8.0.1",
@@ -92,7 +92,7 @@
9292
"happy-dom": "^15.10.2",
9393
"jest-fetch-mock": "^3.0.3",
9494
"jsdom": "^24.0.0",
95-
"msw": "^2.2.13",
95+
"msw": "^2.6.4",
9696
"prettier": "3.2.5",
9797
"prop-types": "^15.8.1",
9898
"react-test-renderer": "^18.2.0",

web-ui/src/App.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ const theme = extendTheme({
6565
components: {
6666
MuiButtonBase: {
6767
defaultProps: {
68-
disableRipple: !!process.env.VITEST_WORKER_ID, // No more ripple...only when testing.
68+
disableRipple: typeof process !== 'undefined' && !!process.env.VITEST_WORKER_ID, // No more ripple...only when testing.
6969
},
7070
},
7171
MuiCssBaseline: {

web-ui/src/api/birthdayanniversary.js

+19-3
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,28 @@ export const getTodaysCelebrations = async cookie => {
2525

2626
export const getBirthdays = async (months, cookie) => {
2727
const results = [];
28-
for (let month of months) {
28+
if (months) {
29+
for (let month of months) {
30+
const res = await resolve({
31+
url: `${birthdayReportUrl}?month=${month}`,
32+
headers: { 'X-CSRF-Header': cookie, Accept: 'application/json' }
33+
});
34+
if (res.error) {
35+
console.error(res.error);
36+
} else {
37+
results.push(...res.payload.data);
38+
}
39+
}
40+
} else {
2941
const res = await resolve({
30-
url: `${birthdayReportUrl}?month=${month}`,
42+
url: birthdayReportUrl,
3143
headers: { 'X-CSRF-Header': cookie, Accept: 'application/json' }
3244
});
33-
results.push(...res.payload.data);
45+
if (res.error) {
46+
console.error(res.error);
47+
} else {
48+
results.push(...res.payload.data);
49+
}
3450
}
3551
return results;
3652
};

web-ui/src/api/notifications.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { resolve } from './api.js';
33
const emailNotificationURL = '/services/email-notifications';
44
const emailURL = '/services/email';
55
const testEmailURL = import.meta.env.VITE_APP_API_URL
6-
? import.meta.env.VITE_APP_URL + '/feedback/submit?request='
6+
? import.meta.env.VITE_APP_API_URL + '/feedback/submit?request='
77
: 'http://localhost:8080/feedback/submit?request=';
88

99
export const sendReminderNotification = async (

web-ui/src/components/guild-results/EditGuildModal.spec.jsx

+4-2
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,14 @@ const testGuild = {
3434
guildMembers: [
3535
{ id: 125, name: 'Guild Member' },
3636
{ id: 126, name: 'Other Member' }
37-
]
37+
],
38+
active: true,
3839
};
3940

4041
const emptyGuild = {
4142
name: 'Test Guild',
42-
description: 'A guild used for testing.'
43+
description: 'A guild used for testing.',
44+
active: true,
4345
};
4446

4547
const currentUserProfile = {

web-ui/src/components/kudos_dialog/KudosDialog.jsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import { AppContext } from '../../context/AppContext';
2929
import {
3030
selectCsrfToken,
3131
selectCurrentUser,
32-
selectNormalizedTeams,
32+
selectActiveTeams,
3333
selectOrderedCurrentMemberProfiles,
3434
selectProfile
3535
} from '../../context/selectors';
@@ -65,7 +65,7 @@ const KudosDialog = ({ open, recipient, teamId, onClose }) => {
6565
);
6666

6767
const currentUser = selectCurrentUser(state);
68-
const teams = selectNormalizedTeams(state, '');
68+
const teams = selectActiveTeams(state);
6969
const memberProfiles = selectOrderedCurrentMemberProfiles(state);
7070

7171
const handleSubmit = useCallback(() => {

web-ui/src/components/member_selector/member_selector_dialog/MemberSelectorDialog.jsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@ import { AppContext } from '../../../context/AppContext';
3737
import {
3838
selectCsrfToken,
3939
selectCurrentMembers,
40-
selectGuilds,
40+
selectActiveGuilds,
4141
selectMappedUserRoles,
4242
selectRoles,
4343
selectSkills,
4444
selectSubordinates,
4545
selectSupervisors,
4646
selectTeamMembersBySupervisorId,
47-
selectTeams
47+
selectActiveTeams,
4848
} from '../../../context/selectors';
4949
import { UPDATE_TOAST } from '../../../context/actions';
5050
import { getMembersByTeam } from '../../../api/team';
@@ -172,14 +172,14 @@ const MemberSelectorDialog = ({
172172
const getFilterOptions = () => {
173173
switch (filterType) {
174174
case FilterType.TEAM:
175-
const teams = selectTeams(state);
175+
const teams = selectActiveTeams(state);
176176
return {
177177
options: teams,
178178
label: team => team.name,
179179
equals: (team1, team2) => team1.id === team2.id
180180
};
181181
case FilterType.GUILD:
182-
const guilds = selectGuilds(state);
182+
const guilds = selectActiveGuilds(state);
183183
return {
184184
options: guilds,
185185
label: guild => guild.name,

web-ui/src/components/member_selector/member_selector_dialog/MemberSelectorDialog.spec.jsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ const testGuild = {
3939
name: 'Test Guild',
4040
description: 'A guild used for testing.',
4141
guildLeads: [{ id: 124, name: managerProfile.name }],
42-
guildMembers: []
42+
guildMembers: [],
43+
active: true,
4344
};
4445

4546
const initialState = {

web-ui/src/components/reviews/TeamReviews.jsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -647,9 +647,9 @@ const TeamReviews = ({ onBack, periodId }) => {
647647
if (!period.closeDate) return 'No close date was specified.';
648648
if (!period.periodStartDate) return 'No period-start-date was specified.';
649649
if (!period.periodEndDate) return 'No period-end-date was specified.';
650-
if (teamMembers.length === 0) return 'No members were added.';
651-
const haveReviewers = teamMembers.every(
652-
member => getReviewers(member).length > 0
650+
if (assignments.length === 0) return 'No members were added.';
651+
const haveReviewers = assignments.every(
652+
assignment => assignment.reviewerId != null
653653
);
654654
if (!haveReviewers) return 'One or more members have no reviewer.';
655655
return null; // no validation errors

web-ui/src/components/team-results/TeamSummaryCard.jsx

+18-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ import {
1616
DialogContent,
1717
DialogContentText,
1818
DialogTitle,
19-
Tooltip
19+
Tooltip,
20+
Typography,
2021
} from '@mui/material';
2122
import PropTypes from 'prop-types';
2223
import { updateTeam } from '../../api/team.js';
@@ -34,7 +35,8 @@ const StyledCard = styled(Card)({
3435
width: '340px',
3536
display: 'flex',
3637
flexDirection: 'column',
37-
justifyContent: 'space-between'
38+
justifyContent: 'space-between',
39+
position: 'relative',
3840
},
3941
[`& .${classes.header}`]: {
4042
width: '100%'
@@ -46,6 +48,11 @@ const StyledCard = styled(Card)({
4648
}
4749
});
4850

51+
const inactiveStyle = {
52+
'color': 'var(--action-disabled)',
53+
'font-size': '0.75em',
54+
};
55+
4956
const propTypes = {
5057
team: PropTypes.shape({
5158
id: PropTypes.string,
@@ -101,7 +108,7 @@ const TeamSummaryCard = ({ team, index, onTeamSelect, selectedTeamId }) => {
101108
title: classes.title,
102109
subheader: classes.title
103110
}}
104-
title={team.name + (team.active ? ' (Active)' : ' (Inactive)')}
111+
title={team.name}
105112
subheader={
106113
<Tooltip
107114
open={tooltipIsOpen}
@@ -116,6 +123,14 @@ const TeamSummaryCard = ({ team, index, onTeamSelect, selectedTeamId }) => {
116123
}
117124
/>
118125
<CardContent>
126+
{!team.active && (
127+
<Typography sx={{ position: 'absolute', top: 10, right: 10,
128+
...inactiveStyle,
129+
}}
130+
>
131+
Inactive
132+
</Typography>
133+
)}
119134
{team.teamMembers == null ? (
120135
<React.Fragment key={`empty-team-${team.name}`}>
121136
<strong>Team Leads: </strong>None Assigned

web-ui/src/components/team-results/__snapshots__/TeamSummaryCard.test.jsx.snap

+21-6
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
exports[`renders correctly 1`] = `
44
<div>
55
<div
6-
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root TeamSummaryCard-card css-2bwzc-MuiPaper-root-MuiCard-root"
6+
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root TeamSummaryCard-card css-55zgp6-MuiPaper-root-MuiCard-root"
77
>
88
<div
99
class="MuiCardHeader-root css-185gdzj-MuiCardHeader-root"
@@ -14,7 +14,7 @@ exports[`renders correctly 1`] = `
1414
<span
1515
class="MuiTypography-root MuiTypography-h5 MuiCardHeader-title TeamSummaryCard-title css-1qvr50w-MuiTypography-root"
1616
>
17-
string (Inactive)
17+
string
1818
</span>
1919
<span
2020
class="MuiTypography-root MuiTypography-body1 MuiCardHeader-subheader TeamSummaryCard-title css-nrdprl-MuiTypography-root"
@@ -32,6 +32,11 @@ exports[`renders correctly 1`] = `
3232
<div
3333
class="MuiCardContent-root css-46bh2p-MuiCardContent-root"
3434
>
35+
<p
36+
class="MuiTypography-root MuiTypography-body1 css-19pemnp-MuiTypography-root"
37+
>
38+
Inactive
39+
</p>
3540
<strong>
3641
Team Leads:
3742
</strong>
@@ -52,7 +57,7 @@ exports[`renders correctly 1`] = `
5257
exports[`renders correctly for ADMIN 1`] = `
5358
<div>
5459
<div
55-
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root TeamSummaryCard-card css-2bwzc-MuiPaper-root-MuiCard-root"
60+
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root TeamSummaryCard-card css-55zgp6-MuiPaper-root-MuiCard-root"
5661
>
5762
<div
5863
class="MuiCardHeader-root css-185gdzj-MuiCardHeader-root"
@@ -63,7 +68,7 @@ exports[`renders correctly for ADMIN 1`] = `
6368
<span
6469
class="MuiTypography-root MuiTypography-h5 MuiCardHeader-title TeamSummaryCard-title css-1qvr50w-MuiTypography-root"
6570
>
66-
string (Inactive)
71+
string
6772
</span>
6873
<span
6974
class="MuiTypography-root MuiTypography-body1 MuiCardHeader-subheader TeamSummaryCard-title css-nrdprl-MuiTypography-root"
@@ -81,6 +86,11 @@ exports[`renders correctly for ADMIN 1`] = `
8186
<div
8287
class="MuiCardContent-root css-46bh2p-MuiCardContent-root"
8388
>
89+
<p
90+
class="MuiTypography-root MuiTypography-body1 css-19pemnp-MuiTypography-root"
91+
>
92+
Inactive
93+
</p>
8494
<strong>
8595
Team Leads:
8696
</strong>
@@ -142,7 +152,7 @@ exports[`renders correctly for ADMIN 1`] = `
142152
exports[`renders correctly for team lead 1`] = `
143153
<div>
144154
<div
145-
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root TeamSummaryCard-card css-2bwzc-MuiPaper-root-MuiCard-root"
155+
class="MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root TeamSummaryCard-card css-55zgp6-MuiPaper-root-MuiCard-root"
146156
>
147157
<div
148158
class="MuiCardHeader-root css-185gdzj-MuiCardHeader-root"
@@ -153,7 +163,7 @@ exports[`renders correctly for team lead 1`] = `
153163
<span
154164
class="MuiTypography-root MuiTypography-h5 MuiCardHeader-title TeamSummaryCard-title css-1qvr50w-MuiTypography-root"
155165
>
156-
stuff (Inactive)
166+
stuff
157167
</span>
158168
<span
159169
class="MuiTypography-root MuiTypography-body1 MuiCardHeader-subheader TeamSummaryCard-title css-nrdprl-MuiTypography-root"
@@ -169,6 +179,11 @@ exports[`renders correctly for team lead 1`] = `
169179
<div
170180
class="MuiCardContent-root css-46bh2p-MuiCardContent-root"
171181
>
182+
<p
183+
class="MuiTypography-root MuiTypography-body1 css-19pemnp-MuiTypography-root"
184+
>
185+
Inactive
186+
</p>
172187
<strong>
173188
Team Leads:
174189
</strong>

web-ui/src/context/selectors.js

+12-2
Original file line numberDiff line numberDiff line change
@@ -686,11 +686,21 @@ export const selectNormalizedTeams = createSelector(
686686
})
687687
);
688688

689+
export const selectActiveTeams = createSelector(
690+
selectTeams,
691+
(teams, searchText) => teams?.filter(team => team.active)
692+
);
693+
694+
export const selectActiveGuilds = createSelector(
695+
selectGuilds,
696+
(guilds, searchText) => guilds?.filter(guild => guild.active)
697+
);
698+
689699
export const selectMyGuilds = createSelector(
690700
selectCurrentUserId,
691701
selectGuilds,
692702
(id, guilds) =>
693-
guilds?.filter(guild =>
703+
guilds?.filter(guild => guild.active &&
694704
guild.guildMembers?.some(member => member.memberId === id)
695705
)
696706
);
@@ -699,7 +709,7 @@ export const selectMyTeams = createSelector(
699709
selectCurrentUserId,
700710
selectTeams,
701711
(id, teams) =>
702-
teams?.filter(team =>
712+
teams?.filter(team => team.active &&
703713
team.teamMembers?.some(member => member.memberId === id)
704714
)
705715
);

web-ui/src/pages/BirthdayAnniversaryReportPage.css

-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
.select-month {
2222
display: flex;
23-
justify-content: space-between;
2423
align-items: center;
2524
margin-left: 15px;
2625
margin-right: 10px;

0 commit comments

Comments
 (0)