Projet Phabricator : #graph

Extension:Graph

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Extension:Graph and the translation is 39% complete.

Outdated translations are marked like this.
Other languages:
English • ‎français • ‎日本語 • ‎한국어 • ‎occitan • ‎中文
Cette extension reprend le nom d'une ancienne extension graph qui semble avoir été abandonnée depuis 2006.
Manuel des extensions MediaWikiManual:Extensions
Crystal Clear action run.svg
Graph

État de la version :Extension status beta

ImplémentationTemplate:Extension#type Tag, ContentHandler
DescriptionTemplate:Extension#description Data-driven graphs
Auteur(s)Template:Extension#username Yuri Astrakhan (Yurik talk), Dan Andreescu, Frédéric Bolduc
LicenceTemplate:Extension#license MIT License
Téléchargement
Accroches utiliséesTemplate:Extension#hook
ParserFirstCallInitManual:Hooks/ParserFirstCallInit

Traduisez l’extension Graph sur translatewiki.net

Vérifiez la matrice des utilisations et des versions.

ProblèmesPhabricator

Tâches ouvertes · Signalez un bug

L'extension Graph permet au moyen de la balise <graph> 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 {{Graph:Chart}}. 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

Installation

Installation manuelle

  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php :
    wfLoadExtension( 'Graph' );
    
  • YesY Fait - Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.

Pour les utilisateurs de MediaWiki 1.24 ou précédents :

Les instructions ci-dessous décrivent la nouvelle procédure pour installer cette extension en utilisant wfLoadExtension()

Si vous avez besoin d'installer cette extensions sur les précédentes versions de MediaWiki (1.24 ou précédent), à la place de wfLoadExtension( 'Graph' );, vous devez utiliser :

require_once "$IP/extensions/Graph/Graph.php";

Charts examples

See Demo pageExtension:Graph/Demo for many samples and usage tricks.

Historical Fertility Rates
Historical Fertility Rates

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 wikiraw:, wikiapi:, et d'autres.

Le service Graphoid et l'extension Graph utilisent le paramètre GraphAllowedDomains pour contrôler la résolution de ces protocoles :

$wgGraphAllowedDomains = [
    # http + https keys lists all of the domains allowed for the external data access.
    # Any domain listed here automatically permits all subdomains as well.
    # Custom protocols like 'wikiraw' use it to determine which protocol to use.
    # This way wikiraw://en.wikipedia.org/Page will be an api request to https://en.wikipedia.org/w/api.php?action=query&titles=Page&...
    'https' => [ 'wikipedia.org', 'wikimedia.org', ... ],
    'http' => [ 'wmflabs.org', ... ],
    
    # list of domains allowed for the wikirawupload: protocol access.
    # Exact match only, no subdomains.
    'wikirawupload' => [ 'upload.wikimedia.org' ],
    
    # same as wikirawupload but for Wikidata Sparql queries
    'wikidatasparql' => [ 'query.wikidata.org' ],
];

Problèmes connus et limites

Fonctionnement interne

When parsing, the Graph extension expands all template parameters/expressions, and stores the complete graph definitions in the graph_specs page property, using graph hashes for IDs. This means you can easily locate a wiki's graphs with either Special:PageWithProps or the action API.

The graph extension adds HTML to the page where graphs should go, a <div> containing an <img> tag. Exemple :

<div class="mw-wiki-graph-container">
  <img class="mw-wiki-graph-img"
    src="/api/rest_v1/page/graph/png/Extension%3AGraph%2FDemo/1686336/d243aa924db2f82926e0f317217fcce591fe8cd4.png" />
</div>

The <img> tag's href attribute points to the #Graphoid service, which provides a static image of the graph.

If the Graph extension is configured for interactivity, and if the client browser has JavaScript enabled and is not a legacy browser to which ResourceLoader does not ship JavaScript, then the client browser renders graphs on the fly. The Graph extension adds an ext.graph ResourceLoader JavaScript module to the page that includes the Vega library, and puts the JSON of graph definitions into a JavaScript mediaWiki.config variable named wgGraphSpecs. Once the client has loaded this module, the Vega JavaScript library populates each <div> with an HTML canvas and draws the graph in it, replacing the static image. As of November 2015, Wikimedia wikis only enable this interactive rendering for edit preview.

You can configure the Graph extension to always use just the <img> tag, and not add the Vega libraries or graph definition JSON. This mode will not work during editing, since page_props do not get updated until after the save. Once saved, the Graphoid service will be able to access the new graph definition via the action API.

Fonctions de sécurité

<graph> can be configured to disallow referencing untrusted data sources (e.g. Wikimedia only allows data from the Wikimedia sites). It can also send extra headers whenever accessing external data, e.g. Treat-as-Untrusted header that MediaWiki uses to prevent CSRF attacks.

Licence

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

This appears to be a copy of the BSD license, with some minor (acceptable) modifications. It's not a problem for us to use it, although ideally they would not make changes like this to the license. It's better if people do not make these changes to their license, to avoid confusion (like this) about whether the license is safe for open-source use.

—Stephen LaPorte

Configuration

wgGraphIsTrusted

If false (default), passes Treat-as-Untrusted:1 header with all graph data requests

wgGraphImgServiceUrl

A format string to form a backend service request URL for the <img> tag. For example:

"//graphoid.wikimedia.org/%1\$s/v1/png/%2\$s/%3\$s/%4\$s.png"

Would produce this URL:

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

Parameters will be supplied in this order: 1=server, 2=title, 3=revid, 4=graph-hash-id. All parameters will be escaped with rawurlencode(). If the value is false (default), no <noscript> urls will be generated

wgGraphUrlBlacklist variable has been removed in 787d64a11 (7 Dec 2015), wgGraphDataDomains has been removed in e0813f85a (28 Jan 2016). Use a wgGraphAllowedDomains instead.

wgGraphUserServiceAlways variable has been removed in b735f63ff4b (30 Sep 2015).

Activer l'espace de nom Graph

To store graph definitions as standalone pages in their own namespace, configure JsonConfig.

// See https://www.mediawiki.org/wiki/Extension:JsonConfig
$wgJsonConfigModels['graph.jsonconfig'] = 'graph\Content';
$wgJsonConfigs['graph.jsonconfig'] = array(
	'namespace' => <PICK-A-NS-NUMBER>,
	'nsName' => 'Graph',
	'isLocal' => true,
);

Service Graphoid

This section should reference/sync-up with wikitech:Graphoid

Graphoid (git repo) 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 service is available on the Wikimedia cluster at graphoid.wikimedia.org.

You can install it yourself:

$ git clone https://gerrit.wikimedia.org/r/mediawiki/services/graphoid
$ cd graphoid
$ npm install
$ npm start

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:19000/mediawiki.org/v1/PageTitle/12345/a64b022a8fa5b7fc5e40a2c95cd0a114b2ae1174.png
http://graphoid.wikimedia.org/mediawiki.org/v1/png/Extension:Graph/0/be66c7016b9de3188ef6a585950f10dc83239837.png

You configure the Graph extension to use the Graphoid service in LocalSettings.php with a line like

$wgGraphImgServiceUrl = "//localhost:19000/%1\$s/v1/%2\$s/%3\$s/%4\$s.png";
$wgGraphImgServiceUrl = "//graphoid.wikimedia.org/%1\$s/v1/png/%2\$s/%3\$s/%4\$s.png";
Graph extension workflow

You can further configure the service via its config file.

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 phab:T89287 pour plus de détails.

Ve-graph-showcase.png

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