From 42471170ce7cc874c3d33e0cd011b1fcfe6cbcbd Mon Sep 17 00:00:00 2001 From: Joao Ramos Date: Sat, 7 Sep 2024 12:38:28 +0100 Subject: [PATCH] Improved grouping for master statistical --- src/dashboards/MasterCorporate.tsx | 2 +- src/dashboards/MasterStatistical.tsx | 42 +++++++++++++++++----------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/dashboards/MasterCorporate.tsx b/src/dashboards/MasterCorporate.tsx index ecec3cdd..ee6dba4d 100644 --- a/src/dashboards/MasterCorporate.tsx +++ b/src/dashboards/MasterCorporate.tsx @@ -361,7 +361,7 @@ export default function MasterCorporateDashboard({user}: Props) { ); - const groupedByNameCorporates = groupBy(corporates, (x: CorporateUser) => x.corporateInformation?.companyInformation?.name); + const groupedByNameCorporates = groupBy(corporates, (x: CorporateUser) => x.corporateInformation?.companyInformation?.name || 'N/A'); const groupedByNameCorporatesKeys = Object.keys(groupedByNameCorporates); const groupedByNameCorporateIds = groupedByNameCorporatesKeys.reduce((accm, x) => { const corporateUserIds = (groupedByNameCorporates[x] as CorporateUser[]).map((y) => y.id); diff --git a/src/dashboards/MasterStatistical.tsx b/src/dashboards/MasterStatistical.tsx index f6f5fd66..1b6e2261 100644 --- a/src/dashboards/MasterStatistical.tsx +++ b/src/dashboards/MasterStatistical.tsx @@ -132,21 +132,23 @@ const MasterStatistical = (props: Props) => { }; }; - const getCorporatesScoresHash = (data: string[]) => data.reduce( - (accm, id) => ({ - ...accm, - [id]: getCorporateScores(id), - }), - {} - ) as Record; + const getCorporatesScoresHash = (data: string[]) => + data.reduce( + (accm, id) => ({ + ...accm, + [id]: getCorporateScores(id), + }), + {} + ) as Record; - const getConsolidateScore = (data: Record) => Object.values(data).reduce( - (acc: UserCount, { userCount, maxUserCount }: UserCount) => ({ - userCount: acc.userCount + userCount, - maxUserCount: acc.maxUserCount + maxUserCount, - }), - { userCount: 0, maxUserCount: 0 } - ) + const getConsolidateScore = (data: Record) => + Object.values(data).reduce( + (acc: UserCount, { userCount, maxUserCount }: UserCount) => ({ + userCount: acc.userCount + userCount, + maxUserCount: acc.maxUserCount + maxUserCount, + }), + { userCount: 0, maxUserCount: 0 } + ); const corporateScores = getCorporatesScoresHash(corporates); const consolidateScore = getConsolidateScore(corporateScores); @@ -297,7 +299,9 @@ const MasterStatistical = (props: Props) => { /> {Object.keys(corporateUsers).map((corporateName) => { const group = corporateUsers[corporateName]; - const isSelected = group.every((id) => selectedCorporates.includes(id)); + const isSelected = group.every((id) => + selectedCorporates.includes(id) + ); const valueHash = getCorporatesScoresHash(group); const value = getConsolidateScoreStr(getConsolidateScore(valueHash)); @@ -310,10 +314,14 @@ const MasterStatistical = (props: Props) => { color="purple" onClick={() => { if (isSelected) { - setSelectedCorporates(((prev) => prev.filter((x) => !group.includes(x)))); + setSelectedCorporates((prev) => + prev.filter((x) => !group.includes(x)) + ); return; } - setSelectedCorporates((prev) => [...new Set([...prev, ...group])]); + setSelectedCorporates((prev) => [ + ...new Set([...prev, ...group]), + ]); }} isSelected={isSelected} />