Step 1 : Create ASP.NET Web API 2 project
Step 2: Create Master_Site and SiteAnalyticsData Models in Model Folder
Master_Site
SiteAnalyticsData
Step 3: Add Context Class in Model Folder
Step 4: Open Package Manager Console Enable MIgration and Add Migration then Update database in
PM> enable-migrations
PM> add-migration "Initial"
PM> update-database
Step 5 : Go to database and add some dummy data like
Now our data is ready.
Step 6: Create a Web api Controller and paste the below code
using jQueryFlotChart.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace jQueryFlotChart.Controllers
{
public class ChartController : ApiController
{
public dynamic Get(int year)
{
using (SampleDbContext context = new SampleDbContext())
{
var alldata = (from item in context.SiteAnalyticsDatas
where item.Date.Year == year && item.SiteID == 1
group item by item.Date.Month into grp
select new
{
Month = grp.Key,
Visitors = grp.Sum(x => x.Visitors),
Visits = grp.Sum(x => x.Visits),
PageViews = grp.Sum(x => x.PageViews)
}).ToList();
var ret = new[]
{
new { label="PageViews", data = alldata.Select(x=>new int[]{ x.Month, x.PageViews })},
new { label="Visits", data = alldata.Select(x=>new int[]{ x.Month, x.Visits })},
new { label="Visitors", data = alldata.Select(x=>new int[]{ x.Month, x.Visitors })}
};
return ret;
}
}
}
}
Step 7 : Go to manage package Manager and search for flot and instal it... or you can directly download from Flot website and keep the required js and css file.
one css file we have to take from flot website... when you will download the file in that example.css will be there so you can use that.
Step 8: Go to View : Home> Index and write /Paste the following code
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="~/Scripts/flot/excanvas.min.js"></script><![endif]-->
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/flot/jquery.flot.min.js"></script>
<script type="text/javascript">
var dataurl = 'api/Chart/';
success: function (data) {
$.plot($("#placeholder"), data, options);
grid: { hoverable: true, clickable: true },
yaxis: { min: 0, tickFormatter: formatter },
xaxis: { ticks: [[1, "Jan"], [2, "Feb"], [3, "Mar"], [4, "Apr"], [5, "May"], [6, "Jun"], [7, "Jul"], [8, "Aug"], [9, "Sep"], [10, "Oct"], [11, "Nov"], [12, "Dec"]] }
function formatter(val, axis) {
return val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
var previousPoint = null;
$("#placeholder").bind("plothover", function (event, pos, item) {
if (previousPoint != item.dataIndex) {
previousPoint = item.dataIndex;
var x = item.datapoint[0],
y = item.datapoint[1].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
showTooltip(item.pageX, item.pageY, item.series.label + ": " + y);
function showTooltip(x, y, contents) {
$('<div id="tooltip">' + contents + '</div>').css({
border: '1px solid #fdd',
'background-color': '#fee',
}).appendTo("body").fadeIn(200);
<section style="width: 500px; margin: 10px; text-align:center;">
<div id="placeholder" style="width: 500px; height: 300px;">
<h3 style="font-size:1.4em">Traffic Overview - 2015 </h3>
Done: RUN the application you will get the o/p.