<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Joshua Arias</title>
    <description>The latest articles on DEV Community by Joshua Arias (@josh_arias714).</description>
    <link>https://dev.to/josh_arias714</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F197110%2F88c04ee1-1749-4376-9d41-297f8549eff1.png</url>
      <title>DEV Community: Joshua Arias</title>
      <link>https://dev.to/josh_arias714</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/josh_arias714"/>
    <language>en</language>
    <item>
      <title>Creating Interactive Dashboards in Angular</title>
      <dc:creator>Joshua Arias</dc:creator>
      <pubDate>Fri, 14 Feb 2020 20:45:03 +0000</pubDate>
      <link>https://dev.to/josh_arias714/creating-interactive-dashboards-in-angular-9co</link>
      <guid>https://dev.to/josh_arias714/creating-interactive-dashboards-in-angular-9co</guid>
      <description>&lt;p&gt;Our first two posts in our recently published Angular 'How To' series were meant to show you &lt;a href="https://blog.zingchart.com/how-to-create-charts-in-angular/?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=angular-dashboard"&gt;how to create a simple chart&lt;/a&gt; and give you &lt;a href="https://blog.zingchart.com/angular-chart-examples/?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=angular-dashboard"&gt;examples of different chart types&lt;/a&gt; and features, all in Angular.&lt;/p&gt;

&lt;p&gt;As the third article in this series, we have created an interactive dashboard and will walk through how we created it. To make this happen, we used &lt;a href="http://www.zingchart.com?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=angular-dashboard"&gt;ZingChart&lt;/a&gt;, &lt;a href="http://www.zinggrid.com?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=angular-dashboard"&gt;ZingGrid&lt;/a&gt; and ZingChart's new &lt;a href="https://github.com/zingchart/zingchart-angular"&gt;Angular component&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  ZingChart and TypeScript
&lt;/h2&gt;

&lt;p&gt;ZingChart is a JavaScript charting library that has been around for 10+ years and has over 35+ chart types and 25+ charting features. To improve our library, we created a TypeScript definition file - giving you easy access to all typings for ZingChart's extensive JSON configuration.&lt;/p&gt;

&lt;p&gt;If you use TypeScript, this will allow you to easily verify your various chart configurations. Using this in conjunction with an IDE that supports type-ahead descriptions, such as VS Code, makes setting up new charts a breeze.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--adKBWgO---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rstquzi524pglg1rtuid.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--adKBWgO---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rstquzi524pglg1rtuid.png" alt="Angular Dashboard with ZingChart and ZingGrid"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Dashboard originally created by Mike Schultz, Engineer at ZingSoft&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Take a minute to &lt;a href="https://zingchart-angular-material-dashboard-extd.stackblitz.io/"&gt;check out this dashboard&lt;/a&gt; and &lt;a href="https://stackblitz.com/edit/zingchart-angular-material-dashboard-extd?file=src%2Fapp%2Fapp.component.html"&gt;view the code&lt;/a&gt; used to create it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;This article primarily focuses on how to create the actual charts and grids themselves.&lt;/p&gt;

&lt;p&gt;To create this dashboard, we need to look at a few key areas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Starting  &amp;amp; Creating your Angular Application&lt;/li&gt;
&lt;li&gt;Formatting your JSON config and Styling your Charts&lt;/li&gt;
&lt;li&gt;Creating and Formatting Your Grid&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Setting Up Your Angular Application
&lt;/h2&gt;

&lt;p&gt;To start, we will look at how we set up our new Angular application. Much of this is already outlined in our first article, &lt;a href="https://blog.zingchart.com/how-to-create-charts-in-angular/?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=angular-dashboard"&gt;How to Create Charts in Angular&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When setting up a new Angular app, we recommend using the angular-cli.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ ng new my-app&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We have to add ZingChart's library, the ZingChart Angular package as well as the ZingGrid library using NPM.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm i zingchart-angular zingchart zinggrid&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;From here, we have to add ZingChart's chart module to our App's module.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;BrowserModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/platform-browser&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;NgModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ZingchartAngularModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;zingchart-angular&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;AppComponent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./app.component&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;NgModule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="na"&gt;declarations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="nx"&gt;AppComponent&lt;/span&gt; &lt;span class="p"&gt;],&lt;/span&gt; 
    &lt;span class="na"&gt;imports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="nx"&gt;BrowserModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ZingchartAngularModule&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;],&lt;/span&gt; 
    &lt;span class="na"&gt;bootstrap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;AppComponent&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; 
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; 

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;AppModule&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Inside of the &lt;code&gt;app.component.ts&lt;/code&gt;, we will be defining and customizing our chart. ZingChart's TypeScript definition file will allow us to validate our JSON configuration moving forward. For now, we will setup everything outside of our chart's JSON.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;app-root&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="na"&gt;templateUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./app.component.html&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="na"&gt;styleUrls&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./app.component.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; 
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; 

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;AppComponent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
  &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Angular&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 

  &lt;span class="nl"&gt;websiteTraffic&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;zingchart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;graphset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="c1"&gt;//all of our JSON&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Lastly, we need to add our charts into &lt;code&gt;app.component.html&lt;/code&gt;. The example below only shows the div for a single chart. I recommend taking a moment to review the &lt;a href="https://stackblitz.com/edit/zingchart-angular-material-dashboard-extd?file=src%2Fapp%2Fapp.component.html"&gt;.html&lt;/a&gt; and &lt;a href="https://stackblitz.com/edit/zingchart-angular-material-dashboard-extd?file=src%2Fapp%2Fapp.component.scss"&gt;.scss&lt;/a&gt; file to see exactly how we setup the HTML of this dashboard using Material design and standard CSS.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&amp;lt;zingchart-angular&lt;/span&gt; &lt;span class="na"&gt;#subscribers&lt;/span&gt; &lt;span class="na"&gt;[config]=&lt;/span&gt;&lt;span class="s"&gt;"websiteTraffic"&lt;/span&gt; &lt;span class="na"&gt;[height]=&lt;/span&gt;&lt;span class="s"&gt;"'250px'"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/zingchart-angular&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Formatting your JSON Config &amp;amp; Styling Your Dashboard
&lt;/h2&gt;

&lt;p&gt;ZingChart renders charts based on data structured as JSON.&lt;/p&gt;

&lt;p&gt;Without diving too deep into the capabilities of ZingChart, we will highlight some of ZingChart's basic features and customizations. Pretty quickly, you should see that changing a few properties can drastically change the contents of a chart.&lt;/p&gt;

&lt;p&gt;If you take a look at the TypeScript component &lt;a href="https://stackblitz.com/edit/zingchart-angular-material-dashboard-extd?file=src%2Fapp%2Fapp.component.ts"&gt;found here&lt;/a&gt;, you will notice we start off by importing our list of customers. This will be used later when we are adding data to our grid component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;customers&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./customers.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;my-app&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;templateUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./app.component.html&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;styleUrls&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./app.component.scss&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;From here, we will be creating our JSON config for each chart. You will see additional code meant to do things like fill in dummy data, grab the current date, etc.&lt;/p&gt;

&lt;p&gt;For our first chart, we will define our config as &lt;code&gt;websiteTraffic&lt;/code&gt; and call the ZingChart library using &lt;code&gt;zingchart.graphset&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;AppComponent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Angular&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;today&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;toLocaleDateString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;//grabbing the current time&lt;/span&gt;
  &lt;span class="nx"&gt;customers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;customerData&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//grabbing our customer list for our grid&lt;/span&gt;

  &lt;span class="nl"&gt;websiteTraffic&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;zingchart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;graphset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;//all of our JSON&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;The two essential properties required to render a chart are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;type&lt;/code&gt; - defines what &lt;a href="https://www.zingchart.com/docs/chart-types?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=angular-dashboard"&gt;type of chart&lt;/a&gt; you are looking to display.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;series&lt;/code&gt; - where to &lt;a href="https://www.zingchart.com/docs/api/json-configuration/graphset/series?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=angular-dashboard"&gt;format and set data&lt;/a&gt; for a chart&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additional important properties include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;scaleX&lt;/code&gt; - allows for customization of the X-axis.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;scaleY&lt;/code&gt; - allows for customization of the Y-axis.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;plot&lt;/code&gt; - affects the data on your chart (global change).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tooltip&lt;/code&gt; - allows for customization of the tooltip feature.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;legend&lt;/code&gt; - allows for customization of the chart's legend.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Review the full list of &lt;a href="https://www.zingchart.com/docs/api/json-configuration?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=angular-dashboard"&gt;ZingChart's JSON config&lt;/a&gt; to see what is available to you.&lt;/p&gt;

&lt;p&gt;Below is the configuration we created for the initial yellow-background line chart in our demo. Review the comments in the code to see how each property changes the way the chart is displayed.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Notice that you can include most standard CSS classes for any object within a config.&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;websiteTraffic&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;zingchart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;graphset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;line&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//defines what chart type to display&lt;/span&gt;
  &lt;span class="na"&gt;backgroundColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#FFC107&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//sets the yellow background color&lt;/span&gt;
  &lt;span class="na"&gt;tooltip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;fontColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#333&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="c1"&gt;//sets the font color of the tooltip&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;marker&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;backgroundColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#FFC107&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;borderWidth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2px&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="c1"&gt;//sets the border width for the marker&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;aspect&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;spline&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;plotarea&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;35 40 40 40&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//gives a specific margin to the area of the chart&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;scaleX&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;lineColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#ffd363&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//changes the color of the X-axis line&lt;/span&gt;
    &lt;span class="na"&gt;tick&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;lineColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;none&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Mon&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Tues&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Weds&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Thurs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Fri&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Sat&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Sun&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="c1"&gt;//defines the X-axis labels&lt;/span&gt;
    &lt;span class="na"&gt;item&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;fontColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;white&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;rules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;guide&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;lineColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;none&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;scaleY&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;offsetX&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//offsets the entire Y-axis to the left&lt;/span&gt;
    &lt;span class="na"&gt;lineColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;none&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//adds transparency&lt;/span&gt;
    &lt;span class="na"&gt;tick&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;lineColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;none&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;item&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;fontColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;white&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;guide&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;lineColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#ffd363&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;series&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;
    &lt;span class="na"&gt;values&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="c1"&gt;//defines the values for the chart&lt;/span&gt;
    &lt;span class="na"&gt;lineColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;white&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;lineWidth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2px&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;}]&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This is the output&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NXNUkbcn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9n8k1jzsc2d44iok7h5i.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NXNUkbcn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9n8k1jzsc2d44iok7h5i.gif" alt="Angular Line Chart"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When looking at other chart configurations in this demo, you will quickly see that they all follow a similar format with changes to chart type, data, scales and other customizations.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Within this file, lines 66 through 124 create a gauge chart and lines 237 through 298 create a radar chart. The three of these configurations output the three charts shown below.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4nSnHsoU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4kcq2r2punsufq5xf1kl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4nSnHsoU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4kcq2r2punsufq5xf1kl.png" alt="Angular Line, Gauge and Radar Charts"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We won't go over the other charts and how they were created, but if you run into any issues trying to recreate these - visit our &lt;a href="https://www.zingchart.com/docs/api/json-configuration?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=angular-dashboard"&gt;JSON config&lt;/a&gt; page or reach out to &lt;a href="mailto:support@zingsoft.com"&gt;support@zingsoft.com&lt;/a&gt; with any questions you may have.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating and Formatting Your Grid
&lt;/h2&gt;

&lt;p&gt;You might also notice there is a grid in this dashboard. This is powered by a newer library called &lt;a href="http://www.zinggrid.com?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=angular-dashboard"&gt;ZingGrid&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;This free-to-use web-component has made it extremely easy to create data tables and grids.&lt;/p&gt;

&lt;p&gt;The entirety of the Grid can be created and displayed by downloading the library (completed earlier) and adding a few lines of HTML to our code. Below shows exactly how we used the ZingGrid component to render a grid to the page.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;zing-grid&lt;/span&gt; 
  &lt;span class="na"&gt;template-start-delimiter=&lt;/span&gt;&lt;span class="s"&gt;"$^"&lt;/span&gt;
  &lt;span class="na"&gt;template-end-delimiter=&lt;/span&gt;&lt;span class="s"&gt;"^$"&lt;/span&gt;
  &lt;span class="na"&gt;pager&lt;/span&gt;
  &lt;span class="na"&gt;page-size=&lt;/span&gt;&lt;span class="s"&gt;"3"&lt;/span&gt;
  &lt;span class="na"&gt;page-size-options=&lt;/span&gt;&lt;span class="s"&gt;"2,3,6"&lt;/span&gt;
  &lt;span class="na"&gt;viewport-stop&lt;/span&gt;
  &lt;span class="na"&gt;[data]=&lt;/span&gt;&lt;span class="s"&gt;'customers'&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;zg-colgroup&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;zg-column&lt;/span&gt; &lt;span class="na"&gt;index=&lt;/span&gt;&lt;span class="s"&gt;"selector"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"selector"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/zg-column&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;zg-column&lt;/span&gt; &lt;span class="na"&gt;index=&lt;/span&gt;&lt;span class="s"&gt;"first_name"&lt;/span&gt; &lt;span class="na"&gt;header=&lt;/span&gt;&lt;span class="s"&gt;"First Name"&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&amp;lt;/zg-column&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;zg-column&lt;/span&gt; &lt;span class="na"&gt;index=&lt;/span&gt;&lt;span class="s"&gt;"last_name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/zg-column&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;zg-column&lt;/span&gt; &lt;span class="na"&gt;index=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/zg-column&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;zg-column&lt;/span&gt; &lt;span class="na"&gt;index=&lt;/span&gt;&lt;span class="s"&gt;"company"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/zg-column&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/zg-colgroup&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/zing-grid&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;By adding various attributes to the &lt;code&gt;&amp;lt;zing-grid&amp;gt;&lt;/code&gt; component, we are able to seamlessly add and remove features from our grid.&lt;/p&gt;

&lt;p&gt;Each of these attributes are explained below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;[data]&lt;/code&gt; - important attribute is what tells ZingGrid what to include as data. It can be mannually added or fed from a dataset.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;template-start-delimeter&lt;/code&gt; - defines the regex expression for starting data binding.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;template-end-delimeter&lt;/code&gt; - defines the regex expression for ending data binding.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pager&lt;/code&gt; - allows for pagination.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;page-size&lt;/code&gt; - defines how many entries are shown on a single page.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;page-size-options&lt;/code&gt; - defines what options the user has when changing page-size.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;viewport-stop&lt;/code&gt; - inclusion of this disables viewport resizing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out ZingGrid's site for a full list of &lt;a href="https://www.zinggrid.com/docs/features/accessibility?utm_source=devto&amp;amp;utm_medium=blog&amp;amp;utm_campaign=angular-dashboard"&gt;features and attributes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this particular case, we defined the customer data in our TypeScript file. By importing the customers.js file into &lt;code&gt;app.component.ts&lt;/code&gt; and setting &lt;code&gt;customers = customerData&lt;/code&gt; we were able to set &lt;code&gt;[data] = 'customers'&lt;/code&gt; in our &lt;code&gt;&amp;lt;zing-grid&amp;gt;&lt;/code&gt; component and let ZingGrid do the rest!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hC4ePQzz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4gh28z0v43tlt9xn4he1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hC4ePQzz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4gh28z0v43tlt9xn4he1.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Ending Thoughts
&lt;/h3&gt;

&lt;p&gt;ZingChart and ZingGrid have both made it incredibly easy to visualize your data through the use of various charts and grids. I highly recommend downloading the library for free, copying this demo or any of the other 300+ demos these libraries have available.&lt;/p&gt;

&lt;p&gt;Good luck!&lt;/p&gt;

</description>
      <category>angular</category>
      <category>javascript</category>
      <category>typescript</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
