diff --git a/web-ui/src/pages/SkillReportPage.jsx b/web-ui/src/pages/SkillReportPage.jsx index e2728e0c9..9a2f713c5 100644 --- a/web-ui/src/pages/SkillReportPage.jsx +++ b/web-ui/src/pages/SkillReportPage.jsx @@ -1,4 +1,4 @@ -import React, { useContext, useRef, useState } from 'react'; +import React, { useContext, useRef, useState, useEffect } from 'react'; import { Button, TextField } from '@mui/material'; import Autocomplete from '@mui/material/Autocomplete'; @@ -54,26 +54,32 @@ const SkillReportPage = props => { processedQPs ); - const handleSearch = async searchRequestDTO => { - let res = await reportSkills(searchRequestDTO, csrf); - let memberSkillsFound; - if (res && res.payload) { - memberSkillsFound = - !res.error && res.payload.data.teamMembers - ? res.payload.data.teamMembers - : undefined; - } - // Filter out skills of terminated members - memberSkillsFound = memberSkillsFound?.filter(memberSkill => - memberIds.includes(memberSkill.id) - ); - if (memberSkillsFound && memberIds) { - let newSort = sortMembersBySkill(memberSkillsFound); - setSearchResults(newSort); - } else { - setSearchResults([]); - } - }; + useEffect(() => { + const handleSearch = async () => { + let memberSkillsFound = []; + + if (searchSkills.length > 0) { + const searchRequestDTO = createRequestDTO(editedSearchRequest); + const res = await reportSkills(searchRequestDTO, csrf); + if (res && res.payload) { + memberSkillsFound = + !res.error && res.payload.data?.teamMembers + ? res.payload.data.teamMembers + : []; + } + // Filter out skills of terminated members + memberSkillsFound = memberSkillsFound.filter(memberSkill => + memberIds?.includes(memberSkill.id) + ); + memberSkillsFound = sortMembersBySkill(memberSkillsFound); + } + + setSearchResults(memberSkillsFound); + }; + + handleSearch(); + }, [searchSkills]); + function skillsToSkillLevelDTO(skills) { return skills.map((skill, index) => { @@ -124,26 +130,6 @@ const SkillReportPage = props => { /> )} /> -
- -
diff --git a/web-ui/src/pages/TeamSkillReportPage.jsx b/web-ui/src/pages/TeamSkillReportPage.jsx index 2b32a25fc..979c82367 100644 --- a/web-ui/src/pages/TeamSkillReportPage.jsx +++ b/web-ui/src/pages/TeamSkillReportPage.jsx @@ -1,4 +1,4 @@ -import React, { useContext, useRef, useState } from 'react'; +import React, { useContext, useRef, useState, useEffect } from 'react'; import { Autocomplete, Button, TextField, Typography } from '@mui/material'; @@ -72,33 +72,38 @@ const TeamSkillReportPage = () => { processedQPs ); - const handleSearch = async searchRequestDTO => { - let res = await reportSkills(searchRequestDTO, csrf); - let memberSkillsFound; - if (res && res.payload) { - memberSkillsFound = - !res.error && res.payload.data.teamMembers - ? res.payload.data.teamMembers - : undefined; - } - if (memberSkillsFound && memberProfiles) { - // Filter the member skill down to only members that are not terminated. - memberSkillsFound = memberSkillsFound.filter( - mSkill => memberProfiles.find(member => member.id == mSkill.id) - ); - - setAllSearchResults(memberSkillsFound); - let membersSelected = memberSkillsFound.filter(mSkill => - selectedMembers.some(member => member.id === mSkill.id) - ); - let newSort = sortMembersBySkill(membersSelected); - setSearchResults(newSort); - } else { - setSearchResults([]); - setAllSearchResults([]); - } - setShowRadar(true); - }; + useEffect(() => { + const handleSearch = async () => { + if (searchSkills.length > 0) { + const searchRequestDTO = createRequest(editedSearchRequest); + const res = await reportSkills(searchRequestDTO, csrf); + let memberSkillsFound; + if (res && res.payload) { + memberSkillsFound = + !res.error && res.payload.data.teamMembers + ? res.payload.data.teamMembers + : []; + } + + // Filter the member skill down to only members that are not terminated. + memberSkillsFound = memberSkillsFound.filter( + mSkill => memberProfiles.find(member => member.id == mSkill.id) + ); + + setAllSearchResults(memberSkillsFound); + const membersSelected = memberSkillsFound.filter(mSkill => + selectedMembers.some(member => member.id === mSkill.id) + ); + setSearchResults(sortMembersBySkill(membersSelected)); + setShowRadar(true); + } else { + setSearchResults([]); + setAllSearchResults([]); + setShowRadar(false); + } + }; + handleSearch(); + }, [selectedMembers, searchSkills]); function skillsToSkillLevel(skills) { return skills.map(skill => { @@ -194,24 +199,6 @@ const TeamSkillReportPage = () => { /> )} /> - {showRadar && (
diff --git a/web-ui/src/pages/__snapshots__/SkillReportPage.test.jsx.snap b/web-ui/src/pages/__snapshots__/SkillReportPage.test.jsx.snap index 3917370ce..6275d6ddb 100644 --- a/web-ui/src/pages/__snapshots__/SkillReportPage.test.jsx.snap +++ b/web-ui/src/pages/__snapshots__/SkillReportPage.test.jsx.snap @@ -91,20 +91,6 @@ exports[`renders correctly 1`] = `
-
- -
-