diff --git a/site/source/components/charts/PagesCharts.tsx b/site/source/components/charts/PagesCharts.tsx
index 4304cc9c6..d836f446a 100644
--- a/site/source/components/charts/PagesCharts.tsx
+++ b/site/source/components/charts/PagesCharts.tsx
@@ -1,6 +1,6 @@
import { formatValue } from 'publicodes'
import { ComponentProps, ReactElement } from 'react'
-import { useTranslation } from 'react-i18next'
+import { Trans, useTranslation } from 'react-i18next'
import {
Bar,
ComposedChart,
@@ -18,6 +18,8 @@ import { Body } from '@/design-system/typography/paragraphs'
import { useDarkMode } from '@/hooks/useDarkMode'
import { RealResponsiveContainer } from '@/pages/statistiques/Chart'
+import FoldingMessage from '../ui/FoldingMessage'
+
type Data =
| Array<{ date: string; nombre: number }>
| Array<{ date: string; nombre: Record }>
@@ -57,6 +59,7 @@ export default function PagesChart({ data, sync = true }: PagesChartProps) {
const ComposedChartWithRole = (
props: ComponentProps | { role: string }
): ReactElement =>
+ console.log(flattenedData)
return (
@@ -73,7 +76,9 @@ export default function PagesChart({ data, sync = true }: PagesChartProps) {
layout="horizontal"
data={flattenedData}
syncId={sync ? '1' : undefined}
- aria-label={t('Graphique des principaux simulateurs')}
+ aria-label={t(
+ 'Graphique des principaux simulateurs, présence d’une alternative accessible après l’image'
+ )}
role="img"
>
@@ -108,10 +113,63 @@ export default function PagesChart({ data, sync = true }: PagesChartProps) {
))}
+
)
}
+const AccessibleVersion = ({ data }: PagesChartProps) => {
+ const { t } = useTranslation()
+
+ return (
+
+
+
+
+ Tableau présentant le nombre de visites par page et par mois.
+
+
+
+
+
+ Date
+ |
+ {/* Dynamically add the page keys as th */}
+ {Object.keys(data[0].nombre).map((key) => (
+
+ {key}
+ |
+ ))}
+
+
+
+ {data.map((item) => {
+ const date = new Date(item.date)
+ const year = date.getFullYear()
+ const month = date.getMonth() + 1
+
+ return (
+
+ {`${
+ String(month).length === 1 ? `0${month}` : month
+ }/${year}`} |
+ {Object.entries(item.nombre).map(([key, value]) => {
+ return (
+ {value ?? 0} |
+ )
+ })}
+
+ )
+ })}
+
+
+
+ )
+}
+
function formatMonth(date: string | Date) {
return new Date(date).toLocaleString('default', {
month: 'short',
diff --git a/site/source/pages/statistiques/Chart.tsx b/site/source/pages/statistiques/Chart.tsx
index c2fdfbbc7..92267622c 100644
--- a/site/source/pages/statistiques/Chart.tsx
+++ b/site/source/pages/statistiques/Chart.tsx
@@ -118,7 +118,7 @@ export default function VisitsChart({
data={flattenData}
syncId={sync ? '1' : undefined}
aria-label={t(
- 'Graphique statistiques détaillés du nombre visites par jour'
+ 'Graphique statistiques détaillés du nombre visites par jour, présence d’une alternative accessible après l’image'
)}
role="img"
>
diff --git a/site/source/pages/statistiques/SatisfactionChart.tsx b/site/source/pages/statistiques/SatisfactionChart.tsx
index 3600427fc..38f6d4dcd 100644
--- a/site/source/pages/statistiques/SatisfactionChart.tsx
+++ b/site/source/pages/statistiques/SatisfactionChart.tsx
@@ -10,6 +10,7 @@ import {
} from 'recharts'
import { StyledLegend } from '@/components/charts/PagesCharts'
+import FoldingMessage from '@/components/ui/FoldingMessage'
import { Radio, ToggleGroup } from '@/design-system'
import { Emoji } from '@/design-system/emoji'
import { Spacing } from '@/design-system/layout'
@@ -46,6 +47,7 @@ type SatisfactionChartProps = {
data: Array<{
date: string
nombre: Record
+ percent: Record
}>
}
@@ -96,7 +98,9 @@ export default function SatisfactionChart({ data }: SatisfactionChartProps) {
+
diff --git a/site/source/pages/statistiques/Stats.tsx b/site/source/pages/statistiques/Stats.tsx
index 80d88e0f2..8d83804ac 100644
--- a/site/source/pages/statistiques/Stats.tsx
+++ b/site/source/pages/statistiques/Stats.tsx
@@ -1,12 +1,13 @@
import { formatValue } from 'publicodes'
import { useCallback, useEffect, useMemo, useState } from 'react'
-import { Trans } from 'react-i18next'
+import { Trans, useTranslation } from 'react-i18next'
import { useSearchParams } from 'react-router-dom'
import { BrushProps } from 'recharts'
import styled from 'styled-components'
import { toAtString } from '@/components/ATInternetTracking'
import PagesChart from '@/components/charts/PagesCharts'
+import FoldingMessage from '@/components/ui/FoldingMessage'
import { useScrollToHash } from '@/components/utils/markdown'
import { Message } from '@/design-system'
import InfoBulle from '@/design-system/InfoBulle'
@@ -191,6 +192,8 @@ const StatsDetail = ({ stats }: StatsDetailProps) => {
(searchParams.get('module') as Chapter2) ?? ''
)
+ const { t } = useTranslation()
+
useEffect(() => {
const paramsEntries = [
['periode', period !== defaultPeriod ? period : ''],
@@ -229,7 +232,11 @@ const StatsDetail = ({ stats }: StatsDetailProps) => {
const satisfaction = useMemo(() => {
return filterByChapter2(stats.satisfaction as Pageish[], chapter2)
- }, [chapter2])
+ }, [chapter2]) as Array<{
+ date: string
+ nombre: Record
+ percent: Record
+ }>
const [[startDateIndex, endDateIndex], setDateIndex] = useState<
[startIndex: number, endIndex: number]
@@ -333,14 +340,58 @@ const StatsDetail = ({ stats }: StatsDetailProps) => {
Visites
{visites.length ? (
-
+ <>
+
+
+
+
+
+ Tableau présentant le nombre de visites sur le site
+ mon-entreprise par mois ou par jours.
+
+
+
+
+
+ {period}
+ |
+
+ Nombre de visites
+ |
+
+
+
+ {visites.map((visite) => {
+ const visiteDateParts = visite.date.split('-')
+
+ return (
+
+
+ {period === 'mois'
+ ? `${visiteDateParts[1]}-${visiteDateParts[2]}`
+ : visite.date}
+ |
+ {visite.nombre} |
+
+ )
+ })}
+
+
+
+ >
) : (
Aucune donnée disponible.
)}