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émo), 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 fait 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 des graphiques. Le Bac à sable de Graph permet d'associer la syntaxe wiki à 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


 * 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:Plotter/DefaultColors 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 graphiques. À la place, utilisez un des protocoles wiki personnalisés comme ,  , et d'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 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. The Graph extension adds an  ResourceLoader JavaScript module to the page that includes the Vega library, and puts the JSON of graph definitions into a JavaScript   variable named. 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). It can also send extra headers whenever accessing external data, e.g.  header that MediaWiki uses to prevent CSRF attacks.

Licence
Vega library is distributed under a modified BSD license acceptable under for us to use.

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 du hash 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 de 787d64a11 (7 décembre 2015).

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

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

Activer l'espace de nom 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 is a node.js  service that converts a graph definition into a static PNG image using the same Vega library code that runs in advanced browsers. The reason Graphoid was initially developed was to provide a static image so we wouldn't have to bundle Vega and d3 resource loader modules with every page response. 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 :

The service URLs contain the domain of the page (for example mediawiki.org), service version (v1), the title of the page with the graph (PageTitle), revision ID of the page (12345, but could be 0 for current), and a hash ID of the graph itself (also used in HTML page to identify graph definition), for example:

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) qu permet l'édition d'un 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 et ses données. L'interface utilisateur offre aussi un moyen d'éditer les paramètres bruts JSON dans l'éditeur visuel, sans passer par l'éditeur de wikitexte, 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.

Voir aussi

 * Extension:GraphViz — for displaying graphs of sets of vertices connected by edges (i.e. not charts, like this extension)
 * Plotly — The open source JavaScript graphing library (with 3d charting capabilities)
 * D3 — Data-Driven Documents