Fermer

juin 16, 2020

Génération de graphiques basés sur des données dans votre grille d'interface utilisateur Kendo


Dans ce didacticiel, voyez comment vous pouvez facilement générer une variété de graphiques en fonction des données de votre interface utilisateur Kendo pour Angular Grid.

Une question fréquente qui surgit des personnes utilisant Kendo UI pour Angular est de savoir comment elles peuvent fonctionner. avec les composants Grille et Graphique ensemble. Cela a du sens après tout, la grille peut afficher les données brutes et le graphique est un bon moyen de consommer visuellement lesdites données. Un scénario particulier qui nous est souvent demandé:

"Comment générer des graphiques avec la sélection actuelle dans une grille?"

Eh bien, je suis ici pour dire que c'est aussi simple que la tarte ie et tout ce dont vous avez besoin est une grille, un graphique, un composant de menu et peut-être un moule à tarte!

Dans cet article, je vais vous expliquer CETTE DÉMO KILLER et comment vous aussi vous pouvez atteindre une telle ✨ MAJESTÉ ✨ dans votre Interface utilisateur de Kendo pour Angular Grid! Pour suivre facilement, saisissez le code source et voyez ce que nous avons fait. Je vais couvrir les éléments importants pour la mise en place de ce type d'interaction entre nos composants!

Ce gif a été tiré de l'un de nos exemples d'applications que vous pouvez trouver ici: https://prgress.co/ ChartsSampleApp . Pour ceux qui souhaitent suivre le code source, voici un lien vers le référentiel GitHub: https://prgress.co/ChartsGitHub .

Lorsque vous sélectionnez une ligne sur cette grille et cliquez avec le bouton droit , un menu contextuel vous est proposé. Dans ce menu, vous verrez tous les types de graphiques que vous pouvez générer avec ces données.

 Un gif de sélection de plusieurs lignes, de clic droit, de sélection d'un graphique circulaire et de voir le graphique circulaire s'animer dans

Une fois que vous avez choisi un type de graphique, une boîte de dialogue apparaît avec les données choisies affiché sous forme de graphique!

 Graphique KUI avec les données choisies de la grille KUI

Cet article va parcourir certaines des étapes qu'il faudra pour créer ce flux de travail. Nous allons commencer par ajouter un menu pour les types de graphiques sur clic droit. Ensuite, nous vous montrerons comment construire les différents graphiques lorsqu'ils sont sélectionnés. Plongeons et parcourons l'exemple d'application pour voir le type d'interaction sur lequel la démo se concentre!

Construire la plus belle des grilles

La première étape de cet incroyable voyage de Grille à Graphique est, bien sûr. la grille. Nous avons ajouté de nombreux éléments à cette Grille: des cases à cocher pour la sélection, des noms et des descriptions bien sûr, beaucoup d'autres éléments de données et une mini-Grille dans la dernière colonne! Vous pouvez personnaliser davantage les cellules et les colonnes de votre grille d'interface utilisateur Kendo en spécifiant le modèle utilisé. Consultez nos documents de modèle de grille pour plus de détails.

Passons en revue les "os" de notre grille pour voir comment nous avons réalisé cette disposition:

 structure de colonne de notre grille " title = "structure des colonnes de notre grille" /> </p>
<h2> La grille elle-même </h2>
<p> Premièrement, nous devions créer la grille elle-même, le moule à tarte si vous voulez, qui contiendra cette magnifique confection. Nos données sont <code> public gridData: Stock [] = stocksInPortfolio; </code> provient du fichier <a href= data.ts si vous souhaitez vérifier comment il est formaté.

 Kendo UI Grid mark up "title =" Kendo UI Grid mark up "/> </p>
<h3> Paramètres sélectionnables </h3>
<p> Nous passons <code><a href= SelectableSettings pour permettre aux utilisateurs de sélectionner la grille avec ou sans sélection de flèche (afin qu'ils puissent cliquer sur

Sélection persistante

Si vous remarquez le bac kendoGridSelectBy C'est ici que nous lions les éléments stockés que nous avons sélectionnés. Le selectedKeys est l'endroit où nous définissons la collection qui stocke nos articles sélectionnés. J'adore cette fonctionnalité! En savoir plus sur nos documents Persistance de la sélection .

Remarque: Un élément important à noter ici: lorsqu'un utilisateur modifie les éléments sélectionnés, la grille émet un événement selectionChange que nous sommes. en utilisant pour appeler onSelectionChange () qui stocke les nouveaux éléments sélectionnés pour la persistance! 1965

Les colonnes de notre grille

Voyons maintenant les autres colonnes que nous avons créées! La première consiste à créer des cases à cocher pour la sélection. Nous spécifions showSelectAll à true donc nous avons une case à cocher tout sélectionner disponible dans l'en-tête.

 balisage de grille pour une case à cocher "title =" balisage de grille pour une case à cocher "/> [19659005] Ensuite, nous avons la colonne Symbole pour l'acronyme du stock: </p>
<p> <img decoding=

Suit ensuite le nom du stock, comme vous vous en doutez:

 Balisage de grille pour le nom de la colonne de stock "title =" Balisage de grille pour le nom de la colonne de stock "/> </p>
<p> Notre interface utilisateur Kendo pour Angular Grid est si flexible, comme vous pouvez le voir ici, la colonne suivante utilise le angulaire element <code><a href= ng-template (Modèles angulaires pas nos propres modèles) pour personnaliser l'apparence! Beaucoup d'autres colonnes font aussi bien, comme vous le verrez ci-dessous.

 la colonne des prix dans notre grille angulaire kui "title =" la colonne des prix dans notre grille angulaire kui "/> </p>
<p> le reste des morceaux de cette grille ici dans cet essentiel que j'ai créé pour faciliter la visualisation. (Ou consultez le <a href= fichier complet ici. ) Développez la flèche ci-dessous pour voir le balisage complet.

L'intérieur morceaux de notre grille

Une note sympa avec ces colonnes – la bibliothèque de graphiques est si flexible que nous pouvons même l'utiliser dans des graphiques plus petits dans la grille elle-même (voir la dernière colonne et son mini-graphique!). [19659005]  graphique dans une capture d'écran de graphique "title =" graphique dans une capture d'écran de graphique "/> </p>
<p> Certains d'entre vous ont peut-être remarqué que le menu contextuel ci-dessus avait également une option" Exporter vers Excel ". Saviez-vous que Kendo UI for Angular a un framework Excel côté client que vous pouvez utiliser pour créer des fichiers Excel à la volée? Eh bien, non seulement cela, mais il est également intégré à la grille. </p>
<p> Par défaut, si nous l'activons, la Grille exportera tout ce qu'elle peut dans un fichier Excel. Cependant, nous pouvons spécifier exactement à quoi nous voulons que l'exportation ressemble et quelles colonnes seront réellement incluses dans l'exportation. Cela peut être n'importe quel champ dans les données, donc même si nous ne le montrons pas dans la grille de l'interface utilisateur de Kendo, il peut être exporté. De plus, <code> fetchData </code> nous permet de spécifier où aller pour obtenir TOUTES les données à exporter, pas seulement ce qui est actuellement dans la Grille (qui peut être juste la page actuelle). Ceci est pratique pour les scénarios où vous souhaitez un frontend léger avec moins de données chargées mais souhaitez toujours exporter l'ensemble de données complet à la demande de l'utilisateur. Vérifiez-le: </p>
<p> <img decoding= ici dans nos documents .

Maintenant que nous avons nos données souhaitées dans la plus belle des grilles, nous sommes prêts à obtenir ces données sous forme de graphique! La première étape sera de créer un menu lorsque certains morceaux

 le menu qui apparaît sur clic droit "title =" le menu qui apparaît sur clic droit "/> </p>
<p> Avoir un menu comme ceci nous permettra de sélectionner le type de graphique dans lequel nous aimerions voir nos lignes de données sélectionnées. Alors, comment faire? </p>
<h2> Construire un menu contextuel </h2>
<p> La capture de l'événement click avec notre grille est aussi simple qu'une tarte ! ? À l'intérieur de notre composant stock-list, nous pouvons dire ceci pour capturer les événements de clic sur les cellules de la grille: </p>
<pre><code class= public onCellClick (e: CellClickEvent): void { console.log (e.type, "J'ai été cliqué! Rude!"); }

Utilisation de cellClickEvent sur les cellules de grille

Avec la grille cellClickEvent vous avez deux types: cliquez sur et menu contextuel . Le premier, cliquez sur se déclenchera sur simple clic (ou entrez à partir du clavier). L'événement de clic du menu contextuel se déclenchera lors d'un clic droit. 1965

Nous pouvons maintenant saisir l'événement de clic (si cela s'est produit lors d'un clic droit) et créer un petit menu contextuel pour afficher nos options de graphique !! ? Pie, non?!

 public onCellClick (e: CellClickEvent): void {
            if (e.type === 'menu contextuel') {
                const originalEvent = e.originalEvent;
                originalEvent.preventDefault ();
                
            }
        } 

Prévention du défaut par clic droit

Nous avons également accès à l'événement de clic DOM qui a déclenché l'événement cellClick (appelé originalEvent ). Si nous le déconnectons dans la console, vous pouvez voir tout ce à quoi nous avons accès hors de ceci:

Toutes les propriétés de l'événement click!

Nous saisissons l'originalEvent du clic droit et empêchons la valeur par défaut de événement. La valeur par défaut dans ce cas serait le menu du navigateur normal qui apparaît sur le clic droit:

 le menu par défaut qui apparaît en chrome sur le clic droit "title =" le menu par défaut qui apparaît en chrome sur la droite cliquez sur "/> </p>
<p> Remarque: Si vous souhaitez suivre ou bifurquer le projet vous-même, <a href= consultez le dépôt ici!

Maintenant que nous avons capturé le clic droit et empêché la valeur par défaut , nous sommes prêts POUR CE QUE VOUS AVEZ ATTENDU! Le composant menu!

 garçon excité sur le dos d'un dragon "title =" garçon excité sur le dos d'un dragon "/> </p>
<h2> Utilisation de @ViewChild pour injecter notre gridMenu </h2>
<p> Premièrement, nous donnons à notre composant l'accès au <code> gridContextMenu </code>. Ce menu contextuel utilise l'interface utilisateur de Kendo <code> ContextMenuComponent </code>. </p>
<pre><code class= @ViewChild ('gridmenu') public gridContextMenu: ContextMenuComponent;

Maintenant, sur un clic droit, nous devons positionner ce MAGNIFIQUE menu:

 public onCellClick (e: CellClickEvent): void {
            console.log (e.type, "J'ai été cliqué! Rude!", e.originalEvent);
            if (e.type === 'menu contextuel') {
                console.log (e.type);
                const originalEvent = e.originalEvent;
                originalEvent.preventDefault ();
                this.gridContextMenu.show ({
                    left: originalEvent.pageX, // position où le clic droit s'est produit sur l'axe des x
                    top: originalEvent.pageY // position où le clic droit s'est produit sur l'axe des y
                });
            }
        } 

Création du balisage du menu

Voici le kendo-contextmenu dans le fichier HTML de notre composant stock-list:

 balisage pour kendo-contextmenu "title =" mark up for kendo-contextmenu "/> </p>
<p> Nous définissons ce menu de manière déclarative ici dans le balisage, puis nous l'utilisons lorsque l'événement de clic droit se produit. Nous avons pas mal de choses que nous faisons avec ce menu, comme vous pouvez le voir . Nous basculons <code> openOnClick </code> donc une fois que la grille est cliquée avec le bouton droit, le menu contextuel apparaît. Ensuite, nous avons une méthode <code> onSelect </code> qui se déclenche sur select. Check it out: </p>
<pre><code class= public onSelect (e: ContextMenuSelectEvent): void { if (e.item.text === 'Graphiques' || e.item.items! == non défini) { revenir; } if (e.item.text === 'Exporter Excel') { this.grid.saveAsExcel (); } autre { this.chartConfiguration = { chartName: e.item.text, seriesType: getChartType (e.item.text), pile: getChartStack (e.item.text) }; si (! this.opened) { this.opened = true; } this.gridContextMenu.hide (); } }

Ici, nous faisons des choses magiques. Nous revenons (essentiellement sans action, sans masquer le menu contextuel si l'élément sur lequel vous avez cliqué est Graphiques ou indéfini. Si l'élément sélectionné était Exporter Excel nous enregistrons la grille dans un Fichier Excel. Sinon, nous arrivons à créer un magnifique graphique avec les données sélectionnées et à masquer le menu contextuel!

Comment construisons-nous les éléments qui remplissent ce menu?

 le menu qui apparaît- haut sur clic droit "title =" le menu qui apparaît sur clic droit "/> </p>
<p> Quant aux éléments de menu, nous obtenons les données pour les remplir à partir de ce <a href= fichier data.ts .

 la partie de nos ts que nous définissons des éléments égaux à menuItems du fichier data.ts "title =" la partie de nos ts que nous définissons des éléments égaux à menuItems du fichier data.ts "/> [19659005] Ce qui est bien sûr la façon dont nous obtenons les éléments à parcourir et à définir l'élément.text avec! </p>
<p> <img decoding= abattre ce projet et à approfondir les autres détails soignés que nous n'avons pas couverts dans cet article. J'aime vraiment cette démo qui Tsvetomir et Svetlin a travaillé dur pour montrer la puissance de plusieurs interfaces utilisateur Kendo pour les composants angulaires combinés.

 Un gif de sélection de plusieurs lignes, faire un clic droit, sélectionner un graphique à secteurs et voir le graphique à secteurs s'animer dans

Alyssa est l'avocat des développeurs angulaires pour l'interface utilisateur de Kendo. Si vous aimez Angular, React, Vue ou jQuery et que vous aimez également les composants magnifiques et très détaillés, consultez la bibliothèque d'interface utilisateur de Kendo ici ou passez simplement à un essai gratuit de 30 jours aujourd'hui. Bon codage!





Source link