Merge branch 'main' into migration-mongodb

This commit is contained in:
Tiago Ribeiro
2024-09-07 23:09:37 +01:00
4 changed files with 135 additions and 61 deletions

View File

@@ -23,6 +23,7 @@ interface GroupedCorporateUsers {
interface Props {
corporateUsers: GroupedCorporateUsers;
users: User[];
displaySelection?: boolean;
}
interface TableData {
@@ -44,7 +45,7 @@ interface UserCount {
const searchFilters = [["email"], ["user"], ["userId"]];
const MasterStatistical = (props: Props) => {
const {users, corporateUsers} = props;
const {users, corporateUsers, displaySelection = true} = props;
// const corporateRelevantUsers = React.useMemo(
// () => corporateUsers.filter((x) => x.type !== "student") as CorporateUser[],
@@ -154,6 +155,17 @@ const MasterStatistical = (props: Props) => {
return <span>{info.getValue()}</span>;
},
}),
...(displaySelection
? [
columnHelper.accessor("corporate", {
header: "Corporate",
id: "corporate",
cell: (info) => {
return <span>{info.getValue()}</span>;
},
}),
]
: []),
columnHelper.accessor("corporate", {
header: "Corporate",
id: "corporate",
@@ -259,46 +271,48 @@ const MasterStatistical = (props: Props) => {
const consolidateResults = getStudentsConsolidateScore();
return (
<>
<div className="flex flex-wrap gap-2 items-center text-center">
<IconCard
Icon={BsBank}
label="Consolidate"
value={getConsolidateScoreStr(consolidateScore)}
color="purple"
onClick={() => {
if (areAllSelected) {
setSelectedCorporates([]);
return;
}
setSelectedCorporates(corporates);
}}
isSelected={areAllSelected}
/>
{Object.keys(corporateUsers).map((corporateName) => {
const group = corporateUsers[corporateName];
const isSelected = group.every((id) => selectedCorporates.includes(id));
{displaySelection && (
<div className="flex flex-wrap gap-2 items-center text-center">
<IconCard
Icon={BsBank}
label="Consolidate"
value={getConsolidateScoreStr(consolidateScore)}
color="purple"
onClick={() => {
if (areAllSelected) {
setSelectedCorporates([]);
return;
}
setSelectedCorporates(corporates);
}}
isSelected={areAllSelected}
/>
{Object.keys(corporateUsers).map((corporateName) => {
const group = corporateUsers[corporateName];
const isSelected = group.every((id) => selectedCorporates.includes(id));
const valueHash = getCorporatesScoresHash(group);
const value = getConsolidateScoreStr(getConsolidateScore(valueHash));
return (
<IconCard
key={corporateName}
Icon={BsBank}
label={corporateName}
value={value}
color="purple"
onClick={() => {
if (isSelected) {
setSelectedCorporates((prev) => prev.filter((x) => !group.includes(x)));
return;
}
setSelectedCorporates((prev) => [...new Set([...prev, ...group])]);
}}
isSelected={isSelected}
/>
);
})}
</div>
const valueHash = getCorporatesScoresHash(group);
const value = getConsolidateScoreStr(getConsolidateScore(valueHash));
return (
<IconCard
key={corporateName}
Icon={BsBank}
label={corporateName}
value={value}
color="purple"
onClick={() => {
if (isSelected) {
setSelectedCorporates((prev) => prev.filter((x) => !group.includes(x)));
return;
}
setSelectedCorporates((prev) => [...new Set([...prev, ...group])]);
}}
isSelected={isSelected}
/>
);
})}
</div>
)}
<div className="flex gap-3 w-full">
<div className="flex flex-col gap-3">
<label className="font-normal text-base text-mti-gray-dim">Date</label>