Skip to content

Commit

Permalink
🐛 Consider only inherited archetypes when computing status
Browse files Browse the repository at this point in the history
  • Loading branch information
ibolton336 committed Mar 4, 2024
1 parent cbd66f9 commit 412fb9f
Showing 1 changed file with 26 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,35 @@ export const ApplicationAssessmentStatus: React.FC<
> = ({ application, assessments, archetypes }) => {
const { t } = useTranslation();

const filteredAssessments = assessments?.filter(
const applicationAssessments = assessments?.filter(
(assessment: Assessment) => assessment.application?.id === application.id
);
const inheritedArchetypes = archetypes?.filter(
(archetype: Archetype) =>
archetype.applications?.map((app) => app.id).includes(application.id)
);
const assessmentStatusInfo = React.useMemo(() => {
const assessmentsWithArchetypes = archetypes.map((archetype) => ({
archetype,
assessments: assessments.filter(
(assessment) => assessment.archetype?.id === archetype.id
),
}));
const assessmentsWithArchetypes = inheritedArchetypes.map(
(inheritedArchetype) => ({
inheritedArchetype,
assessments: assessments.filter(
(assessment) => assessment.archetype?.id === inheritedArchetype.id
),
})
);

const someArchetypesAssessed = assessmentsWithArchetypes.some(
({ assessments }) => assessments.length > 0
);

const allArchetypesAssessed =
assessmentsWithArchetypes.length > 0 &&
assessmentsWithArchetypes.every(({ archetype, assessments }) => {
assessmentsWithArchetypes.every(({ inheritedArchetype, assessments }) => {
const requiredAssessments = assessments.filter(
(assessment) => assessment.required
);
return (
archetype.assessed &&
inheritedArchetype.assessed &&
assessments.length > 0 &&
requiredAssessments.length > 0 &&
requiredAssessments.every(
Expand All @@ -56,18 +62,19 @@ export const ApplicationAssessmentStatus: React.FC<
);

const assessedArchetypesWithARequiredAssessment =
assessmentsWithArchetypes.filter(({ assessments, archetype }) =>
assessmentsWithArchetypes.filter(({ assessments, inheritedArchetype }) =>
assessments.some(
(assessment) =>
assessment.required &&
assessment.status === "complete" &&
archetype.assessed
inheritedArchetype.assessed
)
);
const assessedArchetypeCount =
archetypes?.filter(
(archetype) =>
archetype?.assessments?.length ?? (0 > 0 && archetype.assessed)
inheritedArchetypes?.filter(
(inheritedArchetype) =>
inheritedArchetype?.assessments?.length ??
(0 > 0 && inheritedArchetype.assessed)
).length || 0;

return {
Expand All @@ -78,7 +85,7 @@ export const ApplicationAssessmentStatus: React.FC<
assessedArchetypesWithARequiredAssessment,
assessedArchetypeCount,
};
}, [archetypes, assessments]);
}, [inheritedArchetypes, assessments]);

if (archetypes?.length === 0 || assessments?.length === 0) {
return <EmptyTextMessage message={t("terms.notAvailable")} />;
Expand All @@ -89,6 +96,7 @@ export const ApplicationAssessmentStatus: React.FC<

const isDirectlyAssessed =
application.assessed && (application.assessments?.length ?? 0) > 0;

const {
allArchetypesAssessed,
assessedArchetypesWithARequiredAssessment,
Expand All @@ -104,7 +112,9 @@ export const ApplicationAssessmentStatus: React.FC<
statusPreset = "InProgressInheritedAssessments";
tooltipCount = assessedArchetypesWithARequiredAssessment.length;
} else if (
filteredAssessments?.some((assessment) => assessment.status === "started")
applicationAssessments?.some(
(assessment) => assessment.status === "started"
)
) {
statusPreset = "InProgress";
}
Expand Down

0 comments on commit 412fb9f

Please sign in to comment.