Extension:Graph/fr

L'extension Graph permet au moyen de la balise la description de graphiques comme les diagrammes en barre, les camemberts, les frises chronologiques et les histogrammes (démonstration), dans un format JSON utilisé pour afficher un graphique basé sur  Vega.

Informations générales
L'extension Graph donne la possibilité d'intégrer dans une page wiki des graphiques construits avec le puissant outil Vega. Ces graphiques peuvent tout aussi bien être statiques qu'interactifs.

Le moyen le plus simple pour intégrer un graphique est d'utiliser un modèle tout prêt comme. Ces modèles dissimulent toutes les complexités de Vega. Les utilisateurs avancés peuvent utiliser le bac à sable de Graph pour développer leurs graphiques. Le bac à sable de Graph permet d'utiliser la syntaxe du modèle wiki et JSON.

Liens utiles

 * Documentation Vega 2 - pages de documentation Vega 2 restaurées.
 * - Recommandations générales sur la façon d'utiliser les graphiques dans un Wiki.
 * -Instructions étape par étape pour construire un graphique interactif complexe à partir de zéro.
 * - pour de nombreux exemples et astuces d'utilisation.
 * TechTalk Video - une discussion technique de la WMF à propos de l'extension Graph, comprenant une grande démonstration de l'éditeur Lyra (également installé sur labs).
 * Pour découvrir quelques fonctionnalités à venir de Vega (Keynote de Jeffrey Heer).
 * Vega pour les développeurs - meilleur emplacement des ressources Vega
 * Vidéo d'introduction à Vega interactif
 * Vidéo d'introduction à Vega interactif

Paramètres de configuration supplémentaires
Si vous envisagez de répliquer un environnement de production tel que en.wiki vous devrez réaliser les étapes suivantes :

Rôles (only if you decided to use Vagrant)


 * Activez le rôle graphs
 * Activez le rôle scribunto
 * Activez le rôle imagemap

Modèles et modules Lua


 * Copiez Module:Graph localement
 * Copiez Module:Graph/doc localement
 * Copiez Template:Nowrap localement
 * Copiez Module:Chart localement
 * Copiez Module:Chart/Default_colors localement
 * Copiez File:Circle_frame.svg localement

Exemples de diagrammes
Voir la pour plus d'exemples et d'astuces d'utilisation.

Replis définis par l'utilisateur
Lorsque le rendu se fait côté client, il est possible d'utiliser Wikimedia Commons pour fournir une image statique de repli aux utilisateurs. Ceci est une solution temporaire le temps qu'un nouveau service soit mis en place pour fournir la génération côté serveur afin de remplacer le service Graphoid condamné à disparaître bientôt.

L'utilisateur doit d'abord téléverser le graphe statique dans Wikimedia Commons.

Les images de repli ont deux variables  et.

est relatif à un nom de fichier de Wikimedia Commons.

est la largeur de repli des images, en pixels.

Ces variables sont passées au graphique de la manière suivante :

Là où les modules lua sont utilisés comme Module:Graph, ces variables peuvent être fournies par la fonction de la balise. Si on avait choisi, cela ressemblerait à :

Il peut être ensuite utilisé dans un modèle de la manière suivante :

Si la largeur de repli fallbackWidth n'est pas fournie, mais qu'une image est définie, alors l'extension dérive la largeur à partir de celle du graphe fourni. La raison de ceci est qu'il existe souvent une différence entre la largeur de l'image générée et la largeur actuelle de l'image.

Données externes
Le protocole HTTP(S) ne peut pas être utilisé pour obtenir les données du graphique. À la place, utilisez un des protocoles wiki personnalisés comme,  , et autres.

Le service Graphoid et l'extension Graph utilisent le paramètre  pour contrôler la résolution de ces protocoles : Note that because queries rely on the structure of wikibase items, they may suddenly stop working if the underlying data is edited and changes, as it may yield incomplete, empty or invalid data that can't be used to create a graph. In these cases the graph will end up empty (see T168601).

Problèmes connus et limites

 * bogues de l'extension Graph
 * bogues du service Graphoid
 * Echecs pour implémenter les dates ISO 8601 donc uniquement les calendriers grégoriens peuvent être utilisés pour les échelles de temps
 * Le redimensionnement des images sur la plupart des navigateurs peut devenir flou par défaut. Définir la propriété image-rendering appropriée pour résoudre.

Fonctionnement interne
Lors de l'analyse syntaxique, l'extension Graph développe tous les paramètres et les expressions du modèle et range les définitions complètes du graphique dans la propriété de page  en utilisant le hachage des graphes pour ID. Cela signife que vous pouvez facilement localiser les graphiques d'un wiki avec soit Special:PageWithProps ou [//www.mediawiki.org/w/api.php?action=query&list=pageswithprop&continue=&formatversion=2&pwppropname=graph_specs l'API action].

L'extension graph ajoute du code HTML à la page où il y a des graphes : un contenant une balise. Exemple :

L'attribut  des balises de  pointe vers le service Graphoid, qui fournit une [//www.mediawiki.org/api/rest_v1/page/graph/png/Extension%3AGraph%2FDemo/1686336/d243aa924db2f82926e0f317217fcce591fe8cd4.png image statique du graphique].

Si l'extension Graph est configurée pour être interactive et que JavaScript est activé sur le navigateur client (navigateur récent sinon le ResourceLoader ne lui envoie pas le JavaScript), alors le navigateur client affiche les graphiques à la volée. L'extension Graph ajoute un module JavaScript ResourceLoader  à la page qui inclut la bibliothèque Vega, et place le JSON des définitions du graphique dans une variable   nommée. Une fois que le client a chargé ce module, la bibliothèque JavaScript Vega remplit chaque avec un canevas HTML et dessine le graphique à l'intérieur qui remplace l'image statique. , les wikis Wikimedia ne permettent cette génération interactive que pour l'affichage de l'aperçu des modifications.

Vous pouvez configurer l'extension Graph pour utiliser toujours la balise uniquement, sans ajouter les bibliothèques Vega ni la définition JSON du graphique. Ce mode ne fonctionnera pas pendant la modification car  n'est pas mis à jour tant que l'enregistrement n'est pas fait. Une fois enregistré, le service Graphoid pourra accéder à la nouvelle définition du graphique via l'API action.

Fonctions de sécurité
peut être configuré pour interdire le référencement de sourcres de données non fiables (Wikimedia par exemple, n'autorise les données que de sites Wikimedia). Il peut également envoyer des entêtes supplémentaires lors de l'accès aux données externes, comme par exemple l'entête  que MediaWiki utilise pour empêcher les attaques CSRF.

Licence
La bibliothèque Vega est distribuée sous une license BSD modifiée acceptable, ce qui nous permet de l'utiliser.

Ceci ressemble à une copie de la licence BSD, avec quelques modifications mineures (acceptables). Ce n'est pas gênant pour nous de l'utiliser bien que, idéalement, on ne doit pas faire de telles modifications dans la licence. C'est mieux lorsque l'on ne fait pas ce type de modification dans la licence que l'on utilise car cela évite toute confusion (comme ici) pour savoir si elle reste valable pour les sources libres.

wgGraphIsTrusted
Si la valeur est  (par défaut), on place l'entête Treat-as-Untrusted:1 dans toutes les requêtes de données de graphe

wgGraphImgServiceUrl
Une chaîne de format pour construire l'URL de la requête de service au coeur, pour la balise &lt;img>. Par exemple :

Produirait cet URL :

//graphoid.wikimedia.org/mediawiki.org/v1/png/Extension:Graph/0/be66c7016b9de3188ef6a585950f10dc83239837.png /{domain}/v1/png/{title}/{revid}/{hash}.png

Les paramètres seront passés dans l'ordre suivant : 1=serveur, 2=titre, 3=Id de révision, 4=ID de hachage du graphe. Tous les paramètres seront échappés avec rawurlencode. Si la valeur est  (valeur par défaut), aucune url  ne sera générée

Autres variables
La variable wgGraphUrlBlacklist a été supprimée dans 787d64a11 (7 décembre 2015).

wgGraphDataDomains a été supprimé dans e0813f85a (28 janvier 2016). Utiliser un wgGraphAllowedDomains à la place.

la variable wgGraphUserServiceAlways a été supprimée dans b735f63ff4b (30 septembre 2015).

Activer l'espace de noms Graph
Pour enregistrer les définitions des graphiques en tant que pages séparées dans leur propre espace de noms, vous devez définir.

Service Graphoid
Graphoid est un service de node.js qui convertit une définition de graphique en une image PNG statique qui utilise le même code de bibliothèque Vega qui s'exécute dans les navigateurs récents. La raison pour laquelle Graphoid a été initialement développé était de fournir une image statique pour ne pas avoir à transférer les modules Vega et le chargeur de ressources d3, avec chaque page répondue. Voir T211881 pour plus d'informations. Le service est disponible sur la grappe (cluster) Wikimedia sur https://www.mediawiki.org/api/rest_v1/#/Page%20content/get_page_graph_png__title___revision___graph_id_.

Vous pouvez l'installer personnellement :

Les URLs du service contiennent le domaine de la page (par exemple mediawiki.org), la version du service (v1), le titre de la page avec le graphe (PageTitle), l'ID de la version de la page (12345, mais peut être 0 s'il s'agit de l'actuelle), et un Id de hachage du graphe lui-même (aussi utilisé dans la page HTML pour identifier la définition du graphe), par exemple :

http://localhost:6927/mediawiki.org/v1/PageTitle/12345/a64b022a8fa5b7fc5e40a2c95cd0a114b2ae1174.png (deprecated url)

https://www.mediawiki.org/api/rest_v1/page/graph/png/Extension%3AGraph/3420825/72edc224f0a10b343c1e84f63dbfc97cac9bc957.png

Pour déclarer que l'extension Graph utilise le service Graphoid, ajoutez une ligne similaire dans le fichier LocalSettings.php :

Configuration des services graphoid


Vous pouvez ensuite configurer le service au travers de son fichier de configuration.

Module de l'Éditeur Visuel
Depuis l'été 2015, l'extension Graph est également associée au module ext.graph.VisualEditor qui permet l'édition de graphique dans l'Éditeur Visuel.

Ce module est le fruit d'un projet du Google Summer of Code 2015. Voir T89287 pour plus de détails.

Ce module permet aux utilisateurs de visualiser les graphiques dans l'Éditeur Visuel, contrairement à certaines extensions. De plus, les utilisateurs peuvent ouvrir une boîte de dialogue pour éditer le type de graphique, ses données et l'espacement. L'interface utilisateur offre aussi un moyen d'éditer les paramètres bruts JSON d'un graphe dans l'éditeur visuel, sans passer par l'éditeur de wikitexte classique, donnant la possibilité aux utilisateurs plus avancés d'ajuster les paramètres qui ne sont pas pris en compte par l'interface.

Cette première étape sert de tremplin au développement de l'édition de graphiques dans l'Éditeur Visuel, et les possibilités d'amélioration et d'extension du module sont nombreuses.

Troubleshooting broken graphs
Errors with graphs will be logged in the developer console.

Error: Bad constructor arguments (T277906)
To fix: Replace filepath:Earthmap1000x500compac.jpg with filepath:Earthmap1000x500.jpg

Example.

TypeError: undefined is not an object (evaluating 'datum.firstYear.value')
To fix: Make sure you have not set default as null

Example.

Voir aussi

 * Extension:GraphViz — pour afficher le graphe d'ensembles de sommets connectés par des arêtes (par exemple de graphiques de notes, comme cette extension)
 * Plotly — la bibliothèque de graphes à source libre JavaScript (avec des possibilité de représentation en 3d)
 * D3 — documents sur le contrôle par les données