République
française
dsfr-data
Documentation — Web Components DSFR pour la dataviz
Companion d'accessibilité unifie pour les visualisations. Offre trois alternatives activables independamment : tableau de données, téléchargement CSV et description textuelle. Le contenu est replie dans un accordeon DSFR par défaut.
Les graphiques (canvas, SVG) sont difficilement accessibles aux lecteurs d'écran.
dsfr-data-a11y offre trois alternatives complementaires :
un tableau HTML, un téléchargement CSV et une description textuelle.
Via l'attribut for, il injecte un skip link dans le graphique,
pose aria-describedby et aria-details pour
creer un lien semantique complet.
| Attribut | Type | Description |
|---|---|---|
source | String | Id de la source (ou du transformateur) dont ce complément accessible consomme les données. |
for | String | Id de l'élément cible (graphique, carte) pour la liaison ARIA et le lien d'évitement. |
table | Boolean | Affiche le tableau de données équivalent au graphique. |
download | Boolean | Affiche le bouton de téléchargement CSV. |
filename | String | Nom du fichier CSV téléchargé. |
description | String | Description textuelle du graphique, lue par les lecteurs d'écran. |
label-field | String | Colonne utilisée pour les labels du tableau. |
value-field | String | Colonne(s) utilisée(s) pour les valeurs du tableau (séparées par des virgules). |
empty-label | String | Libellé substitué aux cellules VIDES (null, undefined ou "") de la colonne de libellé du tableau, et aux noms de série vides en mode series-field (#933). Même rôle que l'empty-label de dsfr-data-chart (#647) : sans lui, la barre du groupe non renseigné porte un nom sur l'axe alors que sa ligne dans le tableau équivalent a une cellule vide — le tableau dit autre chose que le graphique. Colonne de libellé = label-field s'il est posé, sinon la PREMIÈRE colonne rendue. Les colonnes de valeur ne sont jamais touchées : une mesure absente reste une cellule vide, on n'invente pas un libellé. Absent (défaut), le rendu est inchangé : la cellule reste vide. La valeur n'est PAS reprise du graphique visé par for — l'écrire sur les deux balises est volontaire, pour qu'aucune page existante ne voie son tableau changer. Le CSV téléchargé porte le même libellé que le tableau affiché. |
series-field | String | Champ « clé de série » d'un jeu au format long/tidy — typiquement l'origin-field d'un dsfr-data-concat (#807), ou le champ que dsfr-data-chart series-field consomme déjà côté graphique (#930). Posé, le tableau équivalent PIVOTE : une ligne par valeur de label-field, une colonne par valeur distincte de ce champ (dans leur ordre d'apparition), au lieu d'une ligne par couple (libellé, série) sans colonne disant de quelle série la valeur provient. Le CSV téléchargé suit la même structure. Exige label-field ET value-field : sans eux on ne sait pas quelle colonne porte la mesure. Le manque est signalé (data-dsfr-config-error) et le tableau retombe sur le rendu à plat, jamais un pivot silencieusement faux. Seul le PREMIER champ de value-field est pivoté. Un couple (libellé, série) absent des données rend une cellule vide : dsfr-data-chart y trace 0, le tableau ne l'affirme pas. Absent (défaut), le rendu est inchangé. La valeur n'est PAS reprise du graphique visé par for. |
label | String | Libellé personnalisé de la section accessible. |
decimals | Number | Nombre de décimales des cellules numériques du tableau (#666). Absent : au plus 2 décimales, format fr-FR. Le CSV n'est pas concerné. |
no-auto-aria | Boolean | Desactive la pose automatique des attributs ARIA et du lien d'évitement. |
idle-message | String | Message annoncé quand l'amont attend un filtre (require-where, #690). Remplace « aucune donnée disponible » dans la description lue par les lecteurs d'écran : rien n'a été chargé, rien n'a échoué. |
Si ni table, ni download, ni description ne sont définis, les trois sont actives par défaut.
Sur une page d'exploration, l'amont peut refuser de charger tant qu'aucun filtre n'est posé
(require-where sur <dsfr-data-source> ou <dsfr-data-query>).
Le complément accessible annonce alors idle-message à la place de « aucune donnée
disponible » : rien n'a été chargé, rien n'a échoué, et c'est cette nuance qu'un lecteur d'écran
doit entendre. Le tableau et le bouton de téléchargement restent masqués tant que la source attend.
Le mécanisme est décrit sur dsfr-data-source.
Quand <dsfr-data-chart> porte empty-label, la barre du groupe
vide (null, undefined ou chaîne vide) est nommée sur l'axe et dans la
légende. Poser le même empty-label ici nomme la ligne correspondante du tableau
équivalent, qui sinon a une cellule de libellé vide : le tableau dirait autre chose que le
graphique qu'il double. Seule la colonne de libellé est concernée — label-field s'il
est posé, sinon la première colonne rendue ; une mesure absente reste une cellule vide. Le CSV
téléchargé porte le même libellé. Sans cet attribut, le rendu est celui d'avant : la valeur
n'est pas reprise du graphique visé par for.
Un jeu au format long — celui que produit dsfr-data-concat
avec origin-field, et que <dsfr-data-chart series-field> consomme
déjà — a une ligne par couple (libellé, série). Rendu tel quel, le tableau équivalent répète
chaque libellé sans jamais dire de quelle série vient la valeur. Poser ici le même
series-field pivote le tableau : une ligne par libellé, une colonne par série, la
cellule de libellé en <th scope="row"> pour que chaque valeur garde ses deux
coordonnées. Le CSV suit la même structure. L'attribut exige label-field et
value-field : sans eux, le manque est signalé en console et le tableau reste à plat
plutôt que pivoté de travers. Un couple absent des données laisse une cellule vide — le
graphique y trace 0, le tableau ne l'affirme pas.
id s'il n'en a pasaria-describedby pointe vers un resume concis dans le composantaria-details pointe vers le tableau de données (si table est active)<dsfr-data-chart id="mon-graph" source="data" type="bar" label-field="statut" value-field="total"> </dsfr-data-chart> <dsfr-data-a11y for="mon-graph" source="data" table download></dsfr-data-a11y>
<dsfr-data-a11y for="mon-graph" source="data" table download description="Ce graphique montre la repartition des sites par statut."> </dsfr-data-a11y>
Quand le graphique cible utilise l'attribut databox, ne PAS ajouter
table ni download sur dsfr-data-a11y
(DataBox les fournit deja avec un meilleur rendu : switch chart/tableau integre, CSV natif).
Conserver uniquement description :
<dsfr-data-chart id="mon-graph" source="data" type="bar" label-field="region" value-field="total" databox databox-title="Population par region" databox-download databox-screenshot> </dsfr-data-chart> <!-- Avec DataBox : pas de table ni download --> <dsfr-data-a11y for="mon-graph" source="data" description="L'Ile-de-France concentre la majorite de la population."> </dsfr-data-a11y>
Si vous gerez manuellement les attributs ARIA :
<dsfr-data-a11y source="data" no-auto-aria table download> </dsfr-data-a11y>