Skip to content

Commit bacae28

Browse files
authored
display message when no error on page (#465)
* display message when no error on page * work around typescript errors * update changelog
1 parent f10be08 commit bacae28

2 files changed

Lines changed: 63 additions & 42 deletions

File tree

confiture-web-app/src/assets/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ Tous les changements notables de Ara sont documentés ici avec leur date, leur c
88

99
- Corrige les problèmes d’accessibilité suite au contre-audit ([#478](https://github.com/DISIC/Ara/pull/478))
1010

11+
### Autres changements ⚙️
12+
13+
- Affiche un message clair et explicite sur le rapport quand aucune erreur n'a été relevée sur une page ([#465](https://github.com/DISIC/Ara/pull/465))
14+
1115
## 06/09/2023
1216

1317
### Corrections 🐛

confiture-web-app/src/components/ReportErrors.vue

Lines changed: 59 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ import { useRouter } from "vue-router";
66
77
import rgaa from "../criteres.json";
88
import { useReportStore } from "../store";
9-
import { CriterionResultUserImpact, CriteriumResultStatus } from "../types";
9+
import {
10+
AuditReport,
11+
CriterionResultUserImpact,
12+
CriteriumResultStatus,
13+
} from "../types";
1014
import { formatStatus, formatUserImpact, slugify, pluralize } from "../utils";
1115
import CriteriumTestsAccordion from "./CriteriumTestsAccordion.vue";
1216
import LazyAccordion from "./LazyAccordion.vue";
@@ -28,46 +32,53 @@ const router = useRouter();
2832
*/
2933
3034
const errors = computed(() => {
35+
const resultsGroupedByPage = {
36+
// include pages with no errors
37+
...report.data?.context.samples.reduce<Record<string, []>>((acc, val) => {
38+
acc[val.id] = [];
39+
return acc;
40+
}, {}),
41+
42+
...groupBy(
43+
report.data?.results
44+
.filter((r) => {
45+
return (
46+
r.status === CriteriumResultStatus.NOT_COMPLIANT &&
47+
!r.transverse &&
48+
userImpactFilters.value.includes(r.userImpact)
49+
);
50+
})
51+
.filter((r) => {
52+
return quickWinFilter.value ? r.quickWin : r;
53+
}),
54+
"pageId"
55+
),
56+
} as Record<number, AuditReport["results"]>;
57+
3158
// TODO: make more legible
3259
const data = Object.values(
33-
mapValues(
34-
groupBy(
35-
report.data?.results
36-
.filter((r) => {
37-
return (
38-
r.status === CriteriumResultStatus.NOT_COMPLIANT &&
39-
!r.transverse &&
40-
userImpactFilters.value.includes(r.userImpact)
41-
);
42-
})
43-
.filter((r) => {
44-
return quickWinFilter.value ? r.quickWin : r;
45-
}),
46-
"pageId"
47-
),
48-
(results, pageId) => {
49-
return {
50-
pageId: Number(pageId),
51-
pageName: getPage(Number(pageId)).name,
52-
pageUrl: getPage(Number(pageId)).url,
53-
topics: sortBy(
54-
Object.values(
55-
mapValues(groupBy(results, "topic"), (results, topicNumber) => {
56-
return {
57-
topic: Number(topicNumber),
58-
name: getTopicName(Number(topicNumber)),
59-
errors: sortBy(
60-
results.filter((r) => !r.transverse),
61-
"criterium"
62-
),
63-
};
64-
})
65-
),
66-
"topic"
60+
mapValues(resultsGroupedByPage, (results, pageId) => {
61+
return {
62+
pageId: Number(pageId),
63+
pageName: getPage(Number(pageId)).name,
64+
pageUrl: getPage(Number(pageId)).url,
65+
topics: sortBy(
66+
Object.values(
67+
mapValues(groupBy(results, "topic"), (results, topicNumber) => {
68+
return {
69+
topic: Number(topicNumber),
70+
name: getTopicName(Number(topicNumber)),
71+
errors: sortBy(
72+
results.filter((r) => !r.transverse),
73+
"criterium"
74+
),
75+
};
76+
})
6777
),
68-
};
69-
}
70-
)
78+
"topic"
79+
),
80+
};
81+
})
7182
);
7283
7384
return data;
@@ -199,10 +210,12 @@ function getTopicName(topicNumber: number) {
199210
}
200211
201212
function getCriterium(topicNumber: number, criteriumNumber: number) {
202-
const criterium = rgaa.topics
203-
.find((t) => t.number === topicNumber)
204-
// @ts-expect-error The criteria properties of each topic do not have the same signature. See: https://github.com/microsoft/TypeScript/issues/33591#issuecomment-786443978
205-
?.criteria.find((c) => c.criterium.number === criteriumNumber).criterium;
213+
// FIXME: "any everywhere" : The criteria properties of each topic do not have the same signature. See: https://github.com/microsoft/TypeScript/issues/33591#issuecomment-786443978
214+
const criterium = (rgaa.topics as any)
215+
.find((t: any) => t.number === topicNumber)
216+
?.criteria.find(
217+
(c: any) => c.criterium.number === criteriumNumber
218+
).criterium;
206219
207220
return criterium;
208221
}
@@ -604,6 +617,10 @@ function updateActiveAnchorLink(id: string, event: MouseEvent) {
604617
{{ page.pageUrl }} <span class="sr-only">(nouvelle fenêtre)</span>
605618
</a>
606619

620+
<p v-if="page.topics.length === 0" class="fr-mt-4w">
621+
Aucune erreur d'accessibilité relevée sur cette page.
622+
</p>
623+
607624
<div
608625
v-for="(topic, i) in page.topics"
609626
:key="topic.topic"

0 commit comments

Comments
 (0)