Créer des graphiques avec Google Charts en asynchrone
Concept et utilisation
Le service gratuit Google Charts comble la plupart des besoins de création et de personnalisation de graphiques pour permettre de visualiser des données dans une page Web.
Néanmoins, l'exemple de démarrage rapide met en avant une utilisation de la bibliothèque "google" supposant qu'elle est chargée et rendue disponible au préalable de l'exécution d'un script personnalisé (exécution synchrone). En intégrant cet exemple en l'état, on peut se retrouver avec l'erreur "Uncaught ReferenceError: google is not defined", lorsque le script est exécuté avant que la bibliothèque ne soit effectivement chargée.
La fonction gChart() permet de créer des graphiques Google Charts en asynchrone, sans impacter le chargement de la page.
Fonction
- gChart()
- Exécute une configuration de graphique Google Charts après le chargement effectif de la librairie " - google".
- Syntaxe
- gChart(options);
- Paramètre
- options(Object)
- Le paramètre - optionsde la fonction- gChart()définit la configuration d'un graphique à construire.- packages(Array)
- La propriété - packagesdu paramètre- optionsdéfinit le ou les package(s) à charger pour créer les visualisations.
 Si ce paramètre est omis, le package "- corechart" sera utilisé par défaut.
- language(String
- La propriété - languagedu paramètre- optionsdéfinit une langue à prendre en compte lors de la construction des graphiques (exemple: "- fr").
- callback(Function)
- La propriété - callbackdu paramètre- optionsdéfinit une fonction de rappel à exécuter lorsque le graphique a été créé.
 
 
Exemple de création asynchrone de graphique
var container = document.getElementById('graphique');
var options = {
  packages: ['corechart'],
  callback: function() {
    var chart = new google.visualization.PieChart(container);
    // ...
  }
};
gChart(options);Code source de la fonction
window.gChart=(function(c,h,a,r,t){"use strict";a=[];r=!1;t=!1;
return function(x){x.packages=x.packages||['corechart'];a.push(x);
if(t){t();}else if(!r&&!t){r=c.createElement('SCRIPT');
r.src='https://www.gstatic.com/charts/loader.js';r.onload=function(){
t=function(){while(a.length>0){google.charts.load('current',a.shift())}
};t();};c.getElementsByTagName(h)[0].appendChild(r)}}})(document,'body');Dernière mise à jour le .
