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`] = `
-
-
-
-