Présentation
Les tableaux de bord sont un moyen simple d'organiser et de gérer plusieurs graphiques partageant les mêmes données sous-jacentes. En utilisant les API décrites sur cette page, vous n'avez plus besoin de raccorder les deux outils et de coordonner tous les graphiques qui font partie d'un tableau de bord.
Les tableaux de bord sont définis à l'aide de classes google.visualization.Dashboard
.
Les instances Dashboard
reçoivent un DataTable
contenant les données à visualiser, ainsi qu'à dessiner et à distribuer les données à tous les graphiques du tableau de bord.
Les commandes sont des widgets d'interface utilisateur (tels que des sélecteurs de catégorie, des curseurs de plage, des fonctionnalités de saisie semi-automatique, etc.) avec lesquels vous interagissez pour gérer les données gérées par un tableau de bord et les graphiques qui en font partie.
Les commandes sont définies à l'aide de classes google.visualization.ControlWrapper
.
Vous pouvez ajouter des instances ControlWrapper
à un tableau de bord, où elles se comportent comme des conduites et des vannes de plomberie. Ils collectent les entrées utilisateur et utilisent ces informations pour décider quelles données gérées par le tableau de bord doivent être mises à la disposition des graphiques qui en font partie.
Examinez l'exemple suivant, dans lequel un sélecteur de catégorie et un curseur de plage sont utilisés pour générer les données visualisées par un graphique à secteurs.
Remarque:Le tableau de bord est interactif. Utilisez les commandes pour observer l'évolution du graphique en temps réel.
Utiliser des commandes et des tableaux de bord
Voici les principales étapes à suivre pour créer un tableau de bord et l'intégrer à votre page. Vous trouverez ci-dessous un extrait de code illustrant chacune de ces étapes, suivies d'informations détaillées sur chacune d'elles.
- Créez un squelette HTML pour votre tableau de bord. Votre page doit comporter autant d'éléments HTML que nécessaire pour contenir chaque membre d'un tableau de bord. Cela inclut le tableau de bord lui-même ainsi que toutes les commandes et tous les graphiques qui en font partie. En règle générale, vous devez utiliser un tag <div> pour chaque balise.
-
Chargez vos bibliothèques. Un tableau de bord ne nécessite que deux bibliothèques à inclure ou à charger sur la page: l'API Google AJAX et le package
controls
de visualisation Google. - Préparez vos données. Vous devez préparer les données à visualiser. Autrement dit, vous devez spécifier les données vous-même dans le code ou interroger un site distant pour obtenir des données.
- Créez une instance de tableau de bord. Instanciez votre tableau de bord en appelant son constructeur et en transmettant une référence à l'élément <div> qui le contiendra.
-
Créez autant d'instances de commandes et de graphiques que nécessaire.
Créez des instances
google.visualization.ChartWrapper
etgoogle.visualization.ControlWrapper
pour décrire chaque graphique et chaque commande gérés par le tableau de bord. -
Établissez les dépendances. Appelez
bind()
sur votre tableau de bord, et transmettez les instances de commande et de graphique pour que le tableau de bord sache ce qu'il doit gérer. Une fois qu'une commande et un graphique sont liés, le tableau de bord met à jour le graphique pour qu'il corresponde aux contraintes que la commande applique aux données. -
Dessinez votre tableau de bord. Appelez
draw()
sur votre tableau de bord et transmettez vos données pour dessiner l'intégralité du tableau de bord sur la page. - Modifications programmatiques après le dessin. Une fois le dessin initial terminé, vous pouvez également programmer les commandes qui font partie du tableau de bord et lui demander de mettre à jour les graphiques en conséquence.
Voici un exemple simple de page créant un tableau de bord simple avec un curseur de plage qui pilote un graphique à secteurs. Le tableau de bord obtenu est affiché sous l'extrait de code.
<html> <head> <!--Load the AJAX API--> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> // Load the Visualization API and the controls package. google.charts.load('current', {'packages':['corechart', 'controls']}); // Set a callback to run when the Google Visualization API is loaded. google.charts.setOnLoadCallback(drawDashboard); // Callback that creates and populates a data table, // instantiates a dashboard, a range slider and a pie chart, // passes in the data and draws it. function drawDashboard() { // Create our data table. var data = google.visualization.arrayToDataTable([ ['Name', 'Donuts eaten'], ['Michael' , 5], ['Elisa', 7], ['Robert', 3], ['John', 2], ['Jessica', 6], ['Aaron', 1], ['Margareth', 8] ]); // Create a dashboard. var dashboard = new google.visualization.Dashboard( document.getElementById('dashboard_div')); // Create a range slider, passing some options var donutRangeSlider = new google.visualization.ControlWrapper({ 'controlType': 'NumberRangeFilter', 'containerId': 'filter_div', 'options': { 'filterColumnLabel': 'Donuts eaten' } }); // Create a pie chart, passing some options var pieChart = new google.visualization.ChartWrapper({ 'chartType': 'PieChart', 'containerId': 'chart_div', 'options': { 'width': 300, 'height': 300, 'pieSliceText': 'value', 'legend': 'right' } }); // Establish dependencies, declaring that 'filter' drives 'pieChart', // so that the pie chart will only display entries that are let through // given the chosen slider range. dashboard.bind(donutRangeSlider, pieChart); // Draw the dashboard. dashboard.draw(data); } </script> </head> <body> <!--Div that will hold the dashboard--> <div id="dashboard_div"> <!--Divs that will hold each control and chart--> <div id="filter_div"></div> <div id="chart_div"></div> </div> </body> </html>
Voici le tableau de bord créé par ce code.
1. Créer un squelette HTML pour votre tableau de bord
Votre page doit comporter autant d'éléments HTML (généralement des balises <div>) pour contenir à la fois le tableau de bord lui-même et toutes les commandes et tous les graphiques qu'il contient. Lorsque vous instanciez des instances de tableau de bord, de commande et de graphique, vous devez transmettre une référence à leur élément. Vous devez donc attribuer un ID à chaque élément HTML.
<!--Div that will hold the dashboard--> <div id="dashboard_div"> <!--Divs that will hold each control and chart--> <div id="filter_div"></div> <div id="chart_div"></div> </div>
Vous êtes libre de positionner chaque élément HTML comme vous le souhaitez pour votre tableau de bord.
2. Charger vos bibliothèques
Un tableau de bord ne nécessite que deux bibliothèques à inclure ou à charger sur la page: l'API Google AJAX et le package controls
de visualisation Google. L'API (en particulier google.visualization.ChartWrapper
) identifie automatiquement les autres packages nécessaires (par exemple, gauge
si vous utilisez un graphique jauge) et les charge à la volée, sans aucune autre intervention de votre part.
Vous devez utiliser google.charts.load()
pour récupérer la bibliothèque de contrôle.
<!--Load the AJAX API--> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> // Load the Visualization API and the controls package. // Packages for all the other charts you need will be loaded // automatically by the system. google.charts.load('current', {'packages':['corechart', 'controls']}); // Set a callback to run when the Google Visualization API is loaded. google.charts.setOnLoadCallback(drawDashboard); function drawDashboard() { // Everything is loaded. Assemble your dashboard... } </script>
3. Préparer vos données
Une fois l'API de visualisation chargée, google.charts.setOnLoadCallback()
appelle votre fonction de gestionnaire. Vous savez donc que toutes les classes et méthodes d'assistance requises sont prêtes pour que vous puissiez commencer à préparer vos données.
Les tableaux de bord acceptent les données d'un tableau de données, tout comme les graphiques.
4. Créer une instance de tableau de bord
Après avoir créé vos données, vous pouvez instancier l'objet de tableau de bord. Un constructeur de tableau de bord utilise un seul paramètre: une référence à l'élément DOM dans lequel dessiner le tableau de bord.
var dashboard = new google.visualization.Dashboard(document.getElementById('dashboard_div'));
Les tableaux de bord sont présentés sous la forme d'une classe JavaScript. Après avoir instancié votre tableau de bord, vous pouvez effectuer quelques étapes facultatives, telles que l'ajout d'écouteurs d'événements (par exemple, pour être averti lorsque le tableau de bord est "prêt"). Les tableaux de bord gèrent les événements de la même manière que les graphiques. Pour en savoir plus, consultez les sections Gérer les événements de visualisation ou Afficher correctement les erreurs dans la section dédiée aux graphiques.
5. Créer des instances de graphique et de commande
Définissez le nombre d'instances dont vous avez besoin pour chaque commande et chaque graphique qui figureront dans le tableau de bord.
Utilisez
google.visualization.ChartWrapper
et
google.visualization.ControlWrapper
pour définir des graphiques et des commandes, respectivement.
// Create a range slider, passing some options var donutRangeSlider = new google.visualization.ControlWrapper({ 'controlType': 'NumberRangeFilter', 'containerId': 'filter_div', 'options': { 'filterColumnLabel': 'Donuts eaten' } }); // Create a pie chart, passing some options var pieChart = new google.visualization.ChartWrapper({ 'chartType': 'PieChart', 'containerId': 'chart_div', 'options': { 'width': 300, 'height': 300, 'pieSliceText': 'label' } });
Lorsque vous créez des instances ChartWrapper
et ControlWrapper
, ne spécifiez ni le paramètre dataTable
, ni le paramètre dataSourceUrl
. Le tableau de bord s'occupe de fournir à chacun d'entre eux les données appropriées. Toutefois, veillez à spécifier les paramètres requis: chartType
et containerId
pour les graphiques, controlType
et containerId
pour les commandes.
Quelques conseils sur la configuration des commandes et des graphiques:
-
Vous devez attribuer à toutes les commandes un
filterColumnIndex
(oufilterColumnLabel
) pour spécifier la colonne de lagoogle.visualization.DataTable
sur laquelle elles s'appliquent (dans l'exemple ci-dessus, le contrôle agit sur la colonne intitulée Donuts mangés). -
Utilisez l'option de configuration
state
sur les commandes pour les initialiser avec un état explicite lorsqu'elles sont dessinées pour la première fois. Par exemple, utilisez ce paramètre pour fixer les positions initiales des curseurs d'une commande de curseur de plage.var donutRangeSlider = new google.visualization.ControlWrapper({ 'controlType': 'NumberRangeFilter', 'containerId': 'filter_div', 'options': { 'filterColumnLabel': 'Donuts eaten', 'minValue': 1, 'maxValue': 10 }, // Explicitly positions the thumbs at position 3 and 8, // out of the possible range of 1 to 10. 'state': {'lowValue': 3, 'highValue': 8} });
-
Tous les graphiques d'un tableau de bord partagent la même table de données sous-jacente que vous avez préparée à l'étape Préparer vos données. Toutefois, les graphiques nécessitent souvent une disposition spécifique des colonnes pour s'afficher correctement. Par exemple, un graphique à secteurs nécessite une colonne de chaîne pour l'étiquette, suivie d'une colonne numérique pour la valeur.
Utilisez l'option
view
lors de la configuration de chaque instanceChartWrapper
pour déclarer les colonnes pertinentes pour le graphique, comme dans l'exemple suivant.var data = google.visualization.arrayToDataTable([ ['Name', 'Gender', 'Age', 'Donuts eaten'], ['Michael' , 'Male', 12, 5], ['Elisa', 'Female', 20, 7], ['Robert', 'Male', 7, 3], ['John', 'Male', 54, 2], ['Jessica', 'Female', 22, 6], ['Aaron', 'Male', 3, 1], ['Margareth', 'Female', 42, 8] ]); var pieChart = new google.visualization.ChartWrapper({ 'chartType': 'PieChart', 'containerId': 'chart_div', 'options': { 'width': 300, 'height': 300, 'title': 'Donuts eaten per person' }, // The pie chart will use the columns 'Name' and 'Donuts eaten' // out of all the available ones. 'view': {'columns': [0, 3]} }); // The rest of dashboard configuration follows // ...
6. Établir des dépendances
Une fois que vous avez instancié le tableau de bord ainsi que toutes les commandes et tous les graphiques qui en feront partie, utilisez la méthode bind()
pour indiquer au tableau de bord les dépendances qui existent entre les commandes et les graphiques.
Une fois qu'une commande et un graphique sont liés, le tableau de bord met à jour le graphique pour qu'il corresponde aux contraintes que la commande applique aux données. Dans l'exemple de tableau de bord que vous créez, le curseur de plage et le graphique à secteurs sont liés. Par conséquent, chaque fois que vous interagissez avec le premier, le second se met à jour pour n'afficher que les données correspondant à la plage sélectionnée.
// 'pieChart' will update whenever you interact with 'donutRangeSlider' // to match the selected range. dashboard.bind(donutRangeSlider, pieChart);
Vous pouvez lier des commandes et des graphiques dans de nombreuses configurations différentes: un à un, un à plusieurs, plusieurs à un et plusieurs à plusieurs. Chaque fois que plusieurs commandes sont liées à un graphique, le tableau de bord met à jour le graphique pour qu'il corresponde aux contraintes combinées appliquées par toutes les commandes liées. Une commande peut générer simultanément plusieurs graphiques. Pour spécifier plusieurs liaisons en même temps, transmettez des tableaux à la méthode bind()
au lieu d'instances uniques. Vous pouvez également enchaîner plusieurs appels bind()
. Voici quelques exemples.
// Many-to-one binding where 'ageSelector' and 'salarySelector' concurrently // participate in selecting which data 'ageVsSalaryScatterPlot' visualizes. dashboard.bind([agePicker, salaryPicker], ageVsSalaryScatterPlot); // One-to-many binding where 'ageSelector' drives two charts. dashboard.bind(agePicker, [ageVsSalaryScatterPlot, ageBarChart]); // bind() chaining where each control drives its own chart. dashboard.bind(agePicker, ageBarChart).bind(salaryRangePicker, salaryPieChart);
Pour les utilisations avancées, vous pouvez également lier des contrôles à d'autres contrôles pour établir des chaînes de dépendances .
dashboard.bind(countryPicker, regionPicker).bind(regionPicker, cityPicker);
7. Dessiner votre tableau de bord
Appelez la méthode draw()
sur l'instance du tableau de bord pour afficher l'intégralité du tableau de bord.
La méthode draw()
n'accepte qu'un seul paramètre: le DataTable
(ou DataView
) qui alimente le tableau de bord.
Vous devez appeler draw()
chaque fois que vous modifiez la composition du tableau de bord (par exemple, en y ajoutant des commandes ou des graphiques), ou lorsque vous modifiez le DataTable
global qui l'utilise.
L'instance de tableau de bord déclenche un événement ready
chaque fois que draw()
met fin au dessin de toutes les commandes et tous les graphiques qui en font partie. Un événement error
est déclenché si l'un des graphiques ou des commandes gérés ne s'affiche pas. Pour en savoir plus sur la gestion des événements, consultez la page Gérer les événements.
Remarque:Écoutez l'événement ready
avant d'essayer de modifier la composition du tableau de bord ou de le dessiner à nouveau.
8. Modifications programmatiques après tirage
Une fois que le tableau de bord aura terminé la draw()
initiale, il sera en ligne et répondra automatiquement à toute action que vous y effectuerez (comme la modification de la plage sélectionnée d'un curseur de commande faisant partie du tableau de bord).
Si vous devez modifier l'état du tableau de bord par programmation, vous pouvez le faire en opérant directement sur les instances ControlWrapper
et ChartWrapper
qui en font partie.
En règle générale, il convient d'effectuer toutes les modifications dont vous avez besoin directement sur l'instance ControlWrapper
(ou ChartWrapper
) spécifique. Par exemple, modifiez une option de commande ou un état via setOption()
et setState()
respectivement, puis appelez sa méthode draw()
par la suite. Le tableau de bord sera ensuite mis à jour pour refléter les modifications demandées.
L'exemple suivant illustre ce cas de figure.
<html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> google.charts.load('current', {'packages':['corechart', 'controls']}); google.charts.setOnLoadCallback(drawStuff); function drawStuff() { var dashboard = new google.visualization.Dashboard( document.getElementById('programmatic_dashboard_div')); // We omit "var" so that programmaticSlider is visible to changeRange. var programmaticSlider = new google.visualization.ControlWrapper({ 'controlType': 'NumberRangeFilter', 'containerId': 'programmatic_control_div', 'options': { 'filterColumnLabel': 'Donuts eaten', 'ui': {'labelStacking': 'vertical'} } }); var programmaticChart = new google.visualization.ChartWrapper({ 'chartType': 'PieChart', 'containerId': 'programmatic_chart_div', 'options': { 'width': 300, 'height': 300, 'legend': 'none', 'chartArea': {'left': 15, 'top': 15, 'right': 0, 'bottom': 0}, 'pieSliceText': 'value' } }); var data = google.visualization.arrayToDataTable([ ['Name', 'Donuts eaten'], ['Michael' , 5], ['Elisa', 7], ['Robert', 3], ['John', 2], ['Jessica', 6], ['Aaron', 1], ['Margareth', 8] ]); dashboard.bind(programmaticSlider, programmaticChart); dashboard.draw(data); changeRange = function() { programmaticSlider.setState({'lowValue': 2, 'highValue': 5}); programmaticSlider.draw(); }; changeOptions = function() { programmaticChart.setOption('is3D', true); programmaticChart.draw(); }; } </script> </head> <body> <div id="programmatic_dashboard_div" style="border: 1px solid #ccc"> <table class="columns"> <tr> <td> <div id="programmatic_control_div" style="padding-left: 2em; min-width: 250px"></div> <div> <button style="margin: 1em 1em 1em 2em" onclick="changeRange();"> Select range [2, 5] </button><br /> <button style="margin: 1em 1em 1em 2em" onclick="changeOptions();"> Make the pie chart 3D </button> </div> </td> <td> <div id="programmatic_chart_div"></div> </td> </tr> </table> </div> </body> </html>
Documentation de référence de l'API
Cette section répertorie les objets exposés par l'API Controls and Tableaux de bord, ainsi que les méthodes standards exposées par tous les contrôles.
Tableau de bord
Représente un ensemble de commandes et de graphiques collaboratifs qui partagent les mêmes données sous-jacentes.
Constructeur
Dashboard(containerRef)
- containerRef
- Référence à un élément de conteneur valide sur la page qui contiendra le contenu du tableau de bord.
Méthodes
Le tableau de bord expose les méthodes suivantes:
Méthode | Type renvoyé | Description |
---|---|---|
bind(controls, charts) |
google.visualization.Dashboard |
Lie une ou plusieurs commandes à un ou plusieurs autres participants du tableau de bord (graphiques ou autres). Ces dernières sont ainsi toutes redessinées chaque fois que l'une des premières collecte une interaction programmatique ou utilisateur qui affecte les données gérées par le tableau de bord. Renvoie l'instance de tableau de bord elle-même permettant de chaîner plusieurs appels
|
draw(dataTable) |
Aucun | Permet de dessiner le tableau de bord.
|
getSelection() |
Tableau d'objets |
Renvoie un tableau des entités visuelles sélectionnées des graphiques dans le tableau de bord. Lorsqu'elle est appelée sur le tableau de bord, la méthode Remarque:Les écouteurs d'événements de l'événement de sélection doivent toujours être associés à chaque graphique que vous souhaitez écouter. |
Événements
L'objet Dashboard génère les événements suivants. Notez que vous devez appeler Dashboard.draw()
avant qu'un événement ne soit généré.
Nom | Description | Propriétés |
---|---|---|
error |
Déclenché lorsqu'une erreur se produit lors de la tentative d'affichage du tableau de bord. Un ou plusieurs graphiques et commandes du tableau de bord ont peut-être échoué à s'afficher. | ID, message |
ready |
Le dessin du tableau de bord est terminé et il est prêt à accepter des modifications. Toutes les commandes et tous les graphiques du tableau de bord sont prêts pour l'appel de méthode externe et les interactions de l'utilisateur. Si vous souhaitez modifier le tableau de bord (ou les données qu'il affiche) après l'avoir dessiné, vous devez configurer un écouteur pour cet événement avant d'appeler la méthode L'événement
|
Aucun |
ControlWrapper
Un objet ControlWrapper est un wrapper autour d'une représentation JSON d'une instance de contrôle configurée. La classe présente des méthodes pratiques permettant de définir une commande de tableau de bord, de la dessiner et de modifier son état par programmation.
Constructeur
ControlWrapper(opt_spec)
- opt_spec
- [Facultatif] : objet JSON définissant la commande, ou version de chaîne sérialisée de cet objet. Les propriétés acceptées de l'objet JSON sont présentées dans le tableau suivant. Si aucune valeur n'est spécifiée, vous devez définir toutes les propriétés appropriées à l'aide des méthodes set... exposées par ControlWrapper.
Propriété | Type | Obligatoire | Par défaut | Description |
---|---|---|---|---|
controlType | Chaîne | Obligatoire | none |
Nom de classe de la commande. Le nom de package google.visualization peut être omis pour les commandes Google. Exemples:CategoryFilter , NumberRangeFilter .
|
containerId | Chaîne | Obligatoire | none | ID de l'élément DOM de votre page qui hébergera la commande. |
options | Objets | Facultatif | none |
Objet décrivant les options de la commande. Vous pouvez utiliser la notation littérale JavaScript ou fournir un handle vers l'objet. Exemple:
"options": {"filterColumnLabel": "Age",
"minValue": 10, "maxValue": 80}
|
state | Objets | Facultatif | none |
Objet décrivant l'état de la commande. L'état collecte toutes les variables que l'utilisateur qui exploite la commande de contrôle peut affecter. Par exemple, l'état d'un curseur de plage peut être décrit en fonction des positions occupées par le curseur bas et haut du curseur. Vous pouvez utiliser la notation littérale JavaScript ou fournir un handle vers l'objet.Exemple:"state": {"lowValue": 20, "highValue": 50}
|
Méthodes
ControlWrapper expose les méthodes supplémentaires suivantes:
Méthode | Type renvoyé | Description |
---|---|---|
draw() |
Aucun |
Permet de dessiner la commande. Normalement, le tableau de bord contenant la commande se charge de le dessiner.
Vous devez appeler |
toJSON() |
Chaîne | Renvoie une version sous forme de chaîne de la représentation JSON de la commande. |
clone() |
ControlWrapper | Renvoie une copie complète du wrapper de contrôle. |
getControlType() |
Chaîne |
Nom de classe de la commande. S'il s'agit d'un contrôle Google, le nom ne sera pas qualifié avec google.visualization . Par exemple, s'il s'agissait d'une commande "CategoryFilter", elle renverrait "CategoryFilter" plutôt que "google.visualization.CategoryFilter".
|
getControlName() |
Chaîne | Renvoie le nom de la commande attribué par setControlName() . |
getControl() |
Documentation de référence sur les objets de contrôle |
Renvoie une référence à la commande créée par ce ControlWrapper. La valeur "null" est renvoyée jusqu'à ce que vous ayez appelé draw() sur l'objet ControlWrapper (ou sur le tableau de bord contenant celui-ci), et génère un événement "ready". L'objet renvoyé n'expose qu'une seule méthode: resetControl() , qui rétablit l'état du contrôle sur celui avec lequel il a été initialisé (comme la réinitialisation d'un élément de formulaire HTML).
|
getContainerId() |
Chaîne | ID de l'élément de conteneur DOM de la commande. |
getOption(key, opt_default_val) |
Tous les types | Renvoie la valeur de l'option de commande spécifiée
|
getOptions() |
Objets | Renvoie l'objet "options" pour cette commande. |
getState() |
Objets | Renvoie l'état de la commande. |
setControlType(type) |
Aucun |
Définit le type de commande. Transmettez le nom de classe de la commande à instancier. S'il s'agit d'un contrôle Google, ne le qualifiez pas avec google.visualization .
Ainsi, pour un curseur de plage sur une colonne numérique, transmettez "NumberRangeFilter".
|
setControlName(name) |
Aucun | Définit un nom arbitraire pour la commande. Cette information n'apparaît nulle part sur la commande, mais elle est fournie à titre indicatif uniquement. |
setContainerId(id) |
Aucun | Définit l'ID de l'élément DOM conteneur pour la commande. |
setOption(key, value) |
Aucun |
Définit une valeur d'option de contrôle unique, où key est le nom de l'option et value la valeur. Pour désactiver une option, transmettez la valeur null. Notez que key peut être un nom complet, tel que 'vAxis.title' .
|
setOptions(options_obj) |
Aucun | Définit un objet "options" complet pour une commande. |
setState(state_obj) |
Aucun | Définit l'état du contrôle. L'état collecte toutes les variables que l'utilisateur qui exploite la commande de contrôle peut affecter. Par exemple, l'état d'un curseur de plage peut être décrit en fonction des positions occupées par le curseur bas et haut du curseur. |
Événements
L'objet ControlWrapper génère les événements suivants. Notez que vous devez appeler ControlWrapper.draw()
(ou dessiner le tableau de bord contenant la commande) avant que des événements ne soient générés.
Nom | Description | Propriétés |
---|---|---|
error |
Déclenché lorsqu'une erreur se produit lors de la tentative d'affichage de la commande. | ID, message |
ready |
La commande est prête à accepter les interactions de l'utilisateur et pour les appels de méthode externes. Si vous souhaitez interagir avec la commande et appeler des méthodes après l'avoir dessinée, vous devez configurer un écouteur pour cet événement avant d'appeler la méthode draw , puis ne les appeler qu'après le déclenchement de l'événement. Vous pouvez également écouter un événement ready sur le tableau de bord contenant les méthodes de commande et de contrôle d'appel uniquement après le déclenchement de l'événement.
|
Aucun |
statechange |
Déclenché lorsque l'utilisateur interagit avec la commande, ce qui a une incidence sur son état. Par exemple, un événement statechange se déclenche chaque fois que vous déplacez les pouces d'une commande de curseur de plage. Pour récupérer un état de contrôle mis à jour après le déclenchement de l'événement, appelez ControlWrapper.getState() .
|
Aucun |
ChartWrapper
Reportez-vous à la documentation de
google.visualization.ChartWrapper
dans la section de référence de l'API des visualisations.
Les remarques suivantes s'appliquent lorsque vous utilisez un ChartWrapper
dans un tableau de bord:
-
Ne définissez pas les attributs
dataTable
,query
,dataSourceUrl
etrefreshInterval
de manière explicite. Le tableau de bord contenant le graphique s'occupe de lui fournir les données dont il a besoin. -
Définissez son attribut
view
pour déclarer les colonnes pertinentes pour le graphique, parmi toutes celles présentes dans ladataTable
fournie au tableau de bord, comme indiqué dans la section Créer des instances de commande et de graphique.
Galerie des commandes
Les filtres sont des éléments graphiques que les utilisateurs peuvent utiliser pour sélectionner de manière interactive les données à afficher dans votre graphique. Cette section décrit les filtres de graphique Google: CategoryFilter, ChartRangeFilter, DateRangeFilter, NumberRangeFilter et StringFilter.
Vous pouvez utiliser n'importe lequel d'entre eux comme paramètre pour ControlWrapper.setControlType()
.
Remarque:Dans la description des options, la notation par points permet de décrire les attributs d'objets imbriqués. Par exemple, une option nommée 'ui.label'
doit être déclarée dans un objet options en tant que var options = {"ui": {"label": "someLabelValue"} };
.
CategoryFilter
Un sélecteur pour choisir une ou plusieurs valeurs parmi un ensemble de valeurs définies.
État
Nom | Type | Par défaut | Description |
---|---|---|---|
selectedValues | Tableau d'objets ou de types primitifs | none |
Ensemble de valeurs actuellement sélectionné. Les valeurs sélectionnées doivent être un ensemble de valeurs globales sélectionnables définis par l'option values (toutes les valeurs superflues seront ignorées). Si CategoryFilter n'autorise pas les choix multiples, seule la première valeur du tableau est conservée.
|
Options
Nom | Type | Par défaut | Description |
---|---|---|---|
filterColumnIndex | Nombre | none |
Colonne du tableau de données sur laquelle le filtre doit fonctionner. Vous devez obligatoirement fournir cette option ou filterColumnLabel . Si ces deux options sont présentes, cette option prévaut.
|
filterColumnLabel | chaîne | none |
Étiquette de la colonne sur laquelle le filtre doit fonctionner. Vous devez obligatoirement fournir cette option ou filterColumnIndex . Si les deux sont présents, filterColumnIndex est prioritaire.
|
valeurs | Tableau | auto |
Liste de valeurs disponibles. Si un tableau d'objets est utilisé, ils doivent disposer d'une représentation toString() appropriée pour être présentée à l'utilisateur. Si la valeur est nulle ou non définie, la liste des valeurs sera automatiquement calculée à partir des valeurs présentes dans la colonne DataTable sur laquelle cette commande agit.
|
useFormattedValue | boolean | false | Lorsque ce filtre remplit automatiquement la liste des valeurs sélectionnables à partir de la colonne DataTable, ce filtre s'applique selon qu'il doit utiliser les valeurs réelles des cellules ou leurs valeurs formatées. |
ui | Objets | nul |
Objet avec des membres permettant de configurer divers aspects de l'interface utilisateur de la commande.
Pour spécifier les propriétés de cet objet, vous pouvez utiliser la notation littérale d'objet, comme indiqué ci-dessous : {label: 'Metric', labelSeparator: ':'} |
ui.caption | chaîne | "Sélectionner une valeur..." | Légende à afficher dans le widget de sélection de valeur lorsqu'aucun élément n'est sélectionné. |
ui.sortValues | boolean | true | Indique si les valeurs à choisir doivent être triées. |
ui.selectedValuesLayout | chaîne | "à part" | Comment afficher les valeurs sélectionnées, lorsque la sélection multiple est autorisée Les valeurs possibles du champ sont les suivantes :
|
ui.allowNone | boolean | true |
Indique si l'utilisateur n'est pas autorisé à choisir une valeur. Si la valeur est false , l'utilisateur doit choisir au moins une valeur parmi celles disponibles. Lors de l'initialisation du contrôle, si l'option est définie sur false et qu'aucun état selectedValues n'est indiqué, la première valeur parmi les valeurs disponibles est automatiquement sélectionnée.
|
ui.allowMultiple | boolean | true | Indique si plusieurs valeurs peuvent être sélectionnées plutôt qu'une seule. |
ui.allowTyping | boolean | true | Indique si l'utilisateur est autorisé ou non à saisir du texte dans un champ de texte pour affiner la liste des choix possibles (via une saisie semi-automatique). |
ui.label | chaîne | auto | Libellé à afficher à côté de l'outil de sélection des catégories. Si aucune valeur n'est spécifiée, l'étiquette de la colonne sur laquelle agit la commande sera utilisée. |
ui.labelSeparator | chaîne | none | Chaîne séparatrice ajoutée au libellé, pour séparer visuellement le libellé de l'outil de sélection de catégories. |
ui.labelStacking | chaîne | "horizontal" |
Indique si le libellé doit s'afficher au-dessus (empilement vertical) ou à côté (empilement horizontal) du sélecteur de catégorie. Utilisez 'vertical' ou 'horizontal' .
|
ui.cssClass | chaîne | 'google-visualization-controls-categoryfilter' | Classe CSS à attribuer à la commande pour obtenir un style personnalisé |
ChartRangeFilter
Un curseur avec deux pouces superposés sur un graphique, permettant de sélectionner une plage de valeurs à partir de l'axe continu du graphique.
État
Nom | Type | Par défaut | Description |
---|---|---|---|
range.start | number, date, datetime ou timeofday (nombre, date, date et heure ou heure de la journée) | Valeur de début de la plage | Début de la plage sélectionnée, inclus. |
range.end | number, date, datetime ou timeofday (nombre, date, date et heure ou heure de la journée) | Valeur de fin de la plage | Fin de la plage sélectionnée, incluse. |
Options
Nom | Type | Par défaut | Description |
---|---|---|---|
filterColumnIndex | Nombre | none |
Index de la colonne de la table de données sur laquelle le filtre agit.
Vous devez obligatoirement fournir cette option ou filterColumnLabel . Si les deux sont présents, cette option est prioritaire.
Notez qu'il n'est judicieux de spécifier que l'index d'une colonne domain incarnée dans l'axe continu du graphique dessiné dans la commande. |
filterColumnLabel | chaîne | none |
Libellé de la colonne de la table de données sur laquelle le filtre s'applique. Vous devez obligatoirement fournir cette option ou filterColumnIndex . Si les deux sont présents, filterColumnIndex est prioritaire.
Notez qu'il n'est judicieux de spécifier que l'étiquette d'une colonne domain incarnée dans l'axe continu du graphique dessiné dans la commande. |
ui | Objets | nul |
Objet avec des membres permettant de configurer divers aspects de l'interface utilisateur de la commande.
Pour spécifier les propriétés de cet objet, vous pouvez utiliser la notation littérale d'objet, comme indiqué ci-dessous : {chartType: 'ScatterChart', chartOptions: {pointSize: 10}} |
ui.chartType | chaîne | ComboChart |
Type du graphique affiché dans la commande. Les valeurs possibles sont "Graphique en aires", "Graphique en courbes", "Graphique combiné" ou "Graphique à nuage de points". |
ui.chartOptions | Objets |
{ 'enableInteractivity': false, 'chartArea': {'height': '100%'}, 'legend': {'position': 'none'}, 'hAxis': {'textPosition': 'in'}, 'vAxis': { 'textPosition': 'none', 'gridlines': {'color': 'none'} } } |
Options de configuration du graphique affiché dans la commande.
Permet le même niveau de configuration que n'importe quel graphique du tableau de bord et respecte le même format que celui accepté par ChartWrapper.setOptions().
Vous pouvez spécifier des options supplémentaires ou remplacer celles par défaut (notez toutefois que les valeurs par défaut ont été choisies avec soin pour une apparence optimale). |
ui.chartView | Objet ou chaîne (objet sérialisé) | nul |
Spécification de la vue à appliquer à la table de données utilisée pour dessiner le graphique dans la commande. Permet le même niveau de configuration que n'importe quel graphique du tableau de bord et respecte le même format que celui accepté par ChartWrapper.setView(). Si aucune valeur n'est spécifiée, la table de données elle-même est utilisée pour dessiner le graphique.
Notez que l'axe horizontal du graphique dessiné doit être continu. Veillez donc à spécifier |
ui.minRangeSize | Nombre | Différence de valeur de données interprétée comme 1 pixel |
Taille minimale de la plage sélectionnable (range.end - range.start ), spécifiée en unités de valeur de données. Pour un axe numérique, il s'agit d'un nombre (pas nécessairement un entier).
Pour un axe de date, date/heure ou heure de la journée, il s'agit d'un entier qui spécifie la différence en millisecondes.
|
ui.snapToData | boolean | false |
Si la valeur est "true", les pouces de la plage sont ancrés aux points de données les plus proches.
Dans ce cas, les points de terminaison de la plage renvoyée par getState() sont nécessairement des valeurs dans la table de données.
|
Événements
Ajouts aux événements ControlWrapper:
Nom | Description | Propriétés |
---|---|---|
statechange |
Comme indiqué pour chaque ControlWrapper, elle ne comporte qu'une propriété booléenne supplémentaire, inProgress , qui spécifie si l'état est en cours de modification (l'un des curseurs ou la plage elle-même est en train d'être déplacée).
|
inProgress |
DateRangeFilter
Curseur à deux valeurs permettant de sélectionner des plages de dates.
Essayez de déplacer le curseur pour modifier les lignes affichées dans le tableau ci-dessous.
État
Nom | Type | Par défaut | Description |
---|---|---|---|
lowValue | Nombre | none | Partie inférieure de la plage sélectionnée (incluse). |
highValue | Nombre | none | Partie la plus élevée de la plage sélectionnée (incluse). |
lowThumbAtMinimum | boolean | none |
Indique si le curseur inférieur est verrouillé sur la plage minimale autorisée. Si cette valeur est définie, elle remplace lowValue .
|
highThumbAtMaximum | boolean | none |
Indique si le curseur le plus haut est verrouillé sur la plage maximale autorisée. Si cette valeur est définie, elle remplace highValue .
|
Options
Nom | Type | Par défaut | Description |
---|---|---|---|
filterColumnIndex | Nombre | none |
Colonne du tableau de données sur laquelle le filtre doit fonctionner. Vous devez obligatoirement fournir cette option ou filterColumnLabel . Si ces deux options sont présentes, cette option prévaut.
Doit pointer vers une colonne de type number .
|
filterColumnLabel | chaîne | none |
Étiquette de la colonne sur laquelle le filtre doit fonctionner. Vous devez obligatoirement fournir cette option ou filterColumnIndex . Si les deux sont présents, filterColumnIndex est prioritaire. Doit pointer vers une colonne de type number .
|
minValue | Date | auto | Valeur minimale autorisée pour l'étendue inférieure de la plage. Si elle n'est pas définie, la valeur sera déduite du contenu de la table de données gérée par la commande. |
maxValue | Date | auto | Valeur maximale autorisée pour l'étendue supérieure de la plage. Si elle n'est pas définie, la valeur sera déduite du contenu de la table de données gérée par la commande. |
ui | Objets | nul |
Objet avec des membres permettant de configurer divers aspects de l'interface utilisateur de la commande.
Pour spécifier les propriétés de cet objet, vous pouvez utiliser la notation littérale d'objet, comme indiqué ci-dessous : {label: 'Age', labelSeparator: ':'} |
ui.format | Objets | none | Comment représenter la date sous forme de chaîne. Accepte tout format de date valide. |
ui.step | chaîne | jour | La variation minimale possible lorsque vous faites glisser les curseurs: n'importe quelle unité de temps jusqu'à "jour". ("mois" et "année" ne sont pas encore acceptés). |
ui.ticks | Nombre | auto | Nombre de graduations (positions fixes dans la barre de plage) que les curseurs peuvent occuper. |
ui.unitIncrement | chaîne | "1" | Montant à incrémenter pour les incréments unitaires des étendues de la plage. Un incrément d'unité équivaut à utiliser les touches fléchées pour déplacer un curseur. |
ui.blockIncrement | Nombre | 10 | Montant à incrémenter pour les incréments de bloc de l'étendue de la plage. Un incrément de bloc équivaut à utiliser les touches pgPréc et pgSuiv pour déplacer les curseurs. |
ui.showRangeValues | boolean | true | Permet d'afficher ou non des libellés à côté du curseur affichant l'étendue de la plage sélectionnée. |
ui.orientation | chaîne | "horizontal" | Orientation du curseur. 'horizontal' ou 'vertical' . |
ui.label | chaîne | auto | Libellé à afficher à côté du curseur. Si aucune valeur n'est spécifiée, l'étiquette de la colonne sur laquelle agit la commande sera utilisée. |
ui.labelSeparator | chaîne | none | Chaîne séparatrice ajoutée au libellé, pour séparer visuellement le libellé du curseur. |
ui.labelStacking | chaîne | "horizontal" |
Indique si le libellé doit s'afficher au-dessus (empilement vertical) ou à côté (empilement horizontal) du curseur. Utilisez 'vertical' ou 'horizontal' .
|
ui.cssClass | chaîne | 'google-visualization-controls-rangefilter' | Classe CSS à attribuer à la commande pour obtenir un style personnalisé |
NumberRangeFilter
Curseur à double valeur permettant de sélectionner des plages de valeurs numériques.
État
Nom | Type | Par défaut | Description |
---|---|---|---|
lowValue | Nombre | none | Partie inférieure de la plage sélectionnée (incluse). |
highValue | Nombre | none | Partie la plus élevée de la plage sélectionnée (incluse). |
lowThumbAtMinimum | boolean | none |
Indique si le curseur inférieur est verrouillé sur la plage minimale autorisée. Si cette valeur est définie, elle remplace lowValue .
|
highThumbAtMaximum | boolean | none |
Indique si le curseur le plus haut est verrouillé sur la plage maximale autorisée. Si cette valeur est définie, elle remplace highValue .
|
Options
Nom | Type | Par défaut | Description |
---|---|---|---|
filterColumnIndex | Nombre | none |
Colonne du tableau de données sur laquelle le filtre doit fonctionner. Vous devez obligatoirement fournir cette option ou filterColumnLabel . Si ces deux options sont présentes, cette option prévaut.
Doit pointer vers une colonne de type number .
|
filterColumnLabel | chaîne | none |
Étiquette de la colonne sur laquelle le filtre doit fonctionner. Vous devez obligatoirement fournir cette option ou filterColumnIndex . Si les deux sont présents, filterColumnIndex est prioritaire. Doit pointer vers une colonne de type number .
|
minValue | Nombre | auto | Valeur minimale autorisée pour l'étendue inférieure de la plage. Si elle n'est pas définie, la valeur sera déduite du contenu de la table de données gérée par la commande. |
maxValue | Nombre | auto | Valeur maximale autorisée pour l'étendue supérieure de la plage. Si elle n'est pas définie, la valeur sera déduite du contenu de la table de données gérée par la commande. |
ui | Objets | nul |
Objet avec des membres permettant de configurer divers aspects de l'interface utilisateur de la commande.
Pour spécifier les propriétés de cet objet, vous pouvez utiliser la notation littérale d'objet, comme indiqué ci-dessous : {label: 'Age', labelSeparator: ':'} |
ui.format | Objets | none | Comment représenter le nombre sous forme de chaîne. Accepte tout format numérique valide. |
ui.step | Nombre | 1, ou calculé à partir de ticks si défini |
Variation minimale possible lorsque vous faites glisser les curseurs. |
ui.ticks | Nombre | auto | Nombre de graduations (positions fixes dans la barre de plage) que les curseurs peuvent occuper. |
ui.unitIncrement | Nombre | 1 | Montant à incrémenter pour les incréments unitaires des étendues de la plage. Un incrément d'unité équivaut à utiliser les touches fléchées pour déplacer un curseur. |
ui.blockIncrement | Nombre | 10 | Montant à incrémenter pour les incréments de bloc de l'étendue de la plage. Un incrément de bloc équivaut à utiliser les touches pgPréc et pgSuiv pour déplacer les curseurs. |
ui.showRangeValues | boolean | true | Permet d'afficher ou non des libellés à côté du curseur affichant l'étendue de la plage sélectionnée. |
ui.orientation | chaîne | "horizontal" | Orientation du curseur. 'horizontal' ou 'vertical' . |
ui.label | chaîne | auto | Libellé à afficher à côté du curseur. Si aucune valeur n'est spécifiée, l'étiquette de la colonne sur laquelle agit la commande sera utilisée. |
ui.labelSeparator | chaîne | none | Chaîne séparatrice ajoutée au libellé, pour séparer visuellement le libellé du curseur. |
ui.labelStacking | chaîne | "horizontal" |
Indique si le libellé doit s'afficher au-dessus (empilement vertical) ou à côté (empilement horizontal) du curseur. Utilisez 'vertical' ou 'horizontal' .
|
ui.cssClass | chaîne | 'google-visualization-controls-rangefilter' | Classe CSS à attribuer à la commande pour obtenir un style personnalisé |
StringFilter
Champ de saisie de texte simple qui vous permet de filtrer des données via la mise en correspondance de chaînes. Il est mis à jour après chaque touche: essayez de saisir j
pour réduire la table ci-dessous à John et Jessica.
État
Nom | Type | Par défaut | Description |
---|---|---|---|
valeur | chaîne ou objet | none | Texte actuellement saisi dans le champ de saisie de la commande. |
Options
Nom | Type | Par défaut | Description |
---|---|---|---|
filterColumnIndex | Nombre | none |
Colonne du tableau de données sur laquelle le filtre doit fonctionner. Vous devez obligatoirement fournir cette option ou filterColumnLabel . Si ces deux options sont présentes, cette option prévaut.
|
filterColumnLabel | chaîne | none |
Étiquette de la colonne sur laquelle le filtre doit fonctionner. Vous devez obligatoirement fournir cette option ou filterColumnIndex . Si les deux sont présents, filterColumnIndex est prioritaire.
|
matchType | chaîne | "préfixe" |
Indique si la commande doit correspondre uniquement à des valeurs exactes ('exact' ), aux préfixes commençant par le début de la valeur ('prefix' ) ou à n'importe quelle sous-chaîne ('any' ).
|
caseSensitive | boolean | false | Indique si la correspondance doit être sensible à la casse ou non. |
useFormattedValue | boolean | false | Indique si le contrôle doit correspondre à des valeurs au format de cellule ou renvoyer des valeurs réelles. |
ui | Objets | nul |
Objet avec des membres permettant de configurer divers aspects de l'interface utilisateur de la commande.
Pour spécifier les propriétés de cet objet, vous pouvez utiliser la notation littérale d'objet, comme indiqué ci-dessous : {label: 'Name', labelSeparator: ':'} |
ui.realtimeTrigger | boolean | true | Indique si la commande doit correspondre à chaque fois que l'utilisateur appuie sur une touche ou uniquement lorsque le champ de saisie "change" (perte de la sélection ou appui sur la touche Entrée). |
ui.label | chaîne | auto | Libellé à afficher à côté du champ de saisie. Si aucune valeur n'est spécifiée, l'étiquette de la colonne sur laquelle agit la commande sera utilisée. |
ui.labelSeparator | chaîne | none | Chaîne séparatrice ajoutée au libellé, pour séparer visuellement le libellé du champ de saisie. |
ui.labelStacking | chaîne | "horizontal" |
Indique si le libellé doit s'afficher au-dessus (empilement vertical) ou à côté (empilement horizontal) du champ de saisie. Utilisez 'vertical' ou 'horizontal' .
|
ui.cssClass | chaîne | 'google-visualization-controls-stringfilter' | Classe CSS à attribuer à la commande pour obtenir un style personnalisé |