Filter Records from data to Render a chart by FusionCharts

CSharp · Mvc

Model

using System;
using System.ComponentModel.DataAnnotations;

namespace FusionChartsSamples
{
	public class SampleViewModel
	{
	}
}

View

@model FusionChartsSamples.SampleViewModel
@{
	Layout = null;
}
<!DOCTYPE html>
<html>
<head>
	<script src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.js"></script>
  <script src="//cdn.fusioncharts.com/fusioncharts/latest/fusioncharts.widgets.js"></script>   
    <script src="//cdn.fusioncharts.com/fusioncharts/latest/themes/fusioncharts.theme.fusion.js"></script>
</head>
<body>
<div>
    <div id="chartContainer">@Html.Raw(ViewData["Chart"])</div>
</div>

</body>
</html>

Controller

using System;
using System.Web.Mvc;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using FusionCharts.Visualization;
using FusionCharts.DataEngine;
using System.Data;

namespace FusionChartsSamples
{
	public class HomeController : Controller
	{
		public ActionResult Index()
		{
			DataTable ChartData = new DataTable();
            ChartData.Columns.Add("Order Date", typeof(System.DateTime));
            ChartData.Columns.Add("Country", typeof(System.String));
            ChartData.Columns.Add("Sales", typeof(System.Double));
            ChartData.Rows.Add("1/ 1 / 2011", "Australia", 120.366);
            ChartData.Rows.Add("1/ 1 / 2011", "Australia", 55.242);
            ChartData.Rows.Add("1/ 3 / 2011", "Australia", 276.102);
            ChartData.Rows.Add("1/ 3 / 2011", "Australia", 35.883);
            ChartData.Rows.Add("1/ 4 / 2011", "United States", 16.448);
            ChartData.Rows.Add("1/ 5 / 2011", "United States", 272.736);
            ChartData.Rows.Add("1/ 5 / 2011", "United States", 11.784);
            ChartData.Rows.Add("1/ 6 / 2011", "United States", 19.536);
            ChartData.Rows.Add("1/ 7 / 2011", "United States", 6.54);
            ChartData.Rows.Add("1/ 7 / 2011", "United States", 5.48);
            ChartData.Rows.Add("1/ 8 / 2011", "United States", 76.728);
            ChartData.Rows.Add("1/ 8 / 2011", "United States", 10.43);
            ChartData.Rows.Add("1/ 10 / 2011", "Australia", 1475.095);
            ChartData.Rows.Add("1/ 10 / 2011", "United States", 9.344);
            ChartData.Rows.Add("1/ 11 / 2011", "India", 141.57);
            ChartData.Rows.Add("1/ 11 / 2011", "United States", 51.94);
            ChartData.Rows.Add("1/ 11 / 2011", "United States", 2.89);
            ChartData.Rows.Add("1/ 12 / 2011", "United States", 9.94);
            ChartData.Rows.Add("1/ 13 / 2011", "Australia", 15.93);
            ChartData.Rows.Add("1/ 14 / 2011", "United States", 1325.85);
            ChartData.Rows.Add("1/ 14 / 2011", "United States", 572.58);
            ChartData.Rows.Add("1/ 15 / 2011", "United States", 61.96);
            ChartData.Rows.Add("1/ 16 / 2011", "United States", 149.95);
            ChartData.Rows.Add("1/ 17 / 2011", "United States", 18.588);
            ChartData.Rows.Add("1/ 17 / 2011", "Australia", 18.576);
            ChartData.Rows.Add("1/ 19 / 2011", "United States", 64.864);
            ChartData.Rows.Add("1/ 20 / 2011", "United States", 181.47);
            ChartData.Rows.Add("1/ 20 / 2011", "Australia", 138.753);
            ChartData.Rows.Add("1/ 21 / 2011", "United States", 1067.94);
            ChartData.Rows.Add("1/ 21 / 2011", "United States", 6.63);
            ChartData.Rows.Add("1/ 22 / 2011", "Australia", 59.724);
            ChartData.Rows.Add("1/ 24 / 2011", "India", 59.25);
            ChartData.Rows.Add("1/ 24 / 2011", "United States", 5.94);
            ChartData.Rows.Add("1/ 26 / 2011", "India", 79.38);
            ChartData.Rows.Add("1/ 26 / 2011", "India", 342.51);
            ChartData.Rows.Add("1/ 27 / 2011", "United States", 141.96);
            ChartData.Rows.Add("1/ 27 / 2011", "United States", 489.92);
            ChartData.Rows.Add("1/ 27 / 2011", "United States", 10.68);
            ChartData.Rows.Add("1/ 28 / 2011", "Australia", 531.522);
            ChartData.Rows.Add("1/ 29 / 2011", "United States", 3.928);
            ChartData.Rows.Add("1/ 31 / 2011", "Australia", 838.593);
            // Create static source with this data table
            StaticSource source = new StaticSource(ChartData);
            // Create instance of DataModel class
            DataModel model = new DataModel();
            // Add DataSource to the DataModel
            model.DataSources.Add(source);
            // Filter Applied to the tabular data
            model = model.Where("Order Date is between 1/11/2011 to 1/25/2011 and Country = United States");
            // Instantiate Column Chart
            Charts.ColumnChart column = new Charts.ColumnChart("first_chart");
            // Set Chart's width and height
            column.Width.Pixel(700);
            column.Height.Pixel(400);
            // Set DataModel instance as the data source of the chart
            column.Data.Source = model;
           
            // Set Chart Title
            column.Caption.Text = "Global online sales of SuperStore";
			// Set chart Sub title
			column.SubCaption.Text = "2017-2018";
			column.ThemeName = FusionChartsTheme.ThemeName.FUSION;
			ViewData["Chart"] = column.Render();
			return View();
		}
	}
}
;