/** * Theme: Montran Admin Template * Author: Coderthemes * Module/App: Flot-Chart */ !function($) { "use strict"; var FlotChart = function() { this.$body = $("body") this.$realData = [] }; //creates plot graph FlotChart.prototype.createPlotGraph = function(selector, data1, data2, labels, colors, borderColor, bgColor) { //shows tooltip function showTooltip(x, y, contents) { $('
' + contents + '
').css( { position: 'absolute', top: y + 5, left: x + 5 }).appendTo("body").fadeIn(200); } $.plot($(selector), [ { data: data1, label: labels[0], color: colors[0] }, { data: data2, label: labels[1], color: colors[1] } ], { series: { lines: { show: true, fill: true, lineWidth: 1, fillColor: { colors: [ { opacity: 0.5 }, { opacity: 0.5 } ] } }, points: { show: true }, shadowSize: 0 }, legend: { position: 'nw' }, grid: { hoverable: true, clickable: true, borderColor: borderColor, borderWidth: 1, labelMargin: 10, backgroundColor: bgColor }, yaxis: { min: 0, max: 15, color: 'rgba(0,0,0,0.1)' }, xaxis: { color: 'rgba(0,0,0,0.1)' }, tooltip: true, tooltipOpts: { content: '%s: Value of %x is %y', shifts: { x: -60, y: 25 }, defaultTheme: false } }); }, //end plot graph //creates Pie Chart FlotChart.prototype.createPieGraph = function(selector, labels, datas, colors) { var data = [{ label: labels[0], data: datas[0] }, { label: labels[1], data: datas[1] }, { label: labels[2], data: datas[2] }]; var options = { series: { pie: { show: true } }, legend : { show : false }, grid : { hoverable : true, clickable : true }, colors : colors, tooltip : true, tooltipOpts : { content : "%s, %p.0%" } }; $.plot($(selector), data, options); }, //returns some random data FlotChart.prototype.randomData = function() { var totalPoints = 300; if (this.$realData.length > 0) this.$realData = this.$realData.slice(1); // Do a random walk while (this.$realData.length < totalPoints) { var prev = this.$realData.length > 0 ? this.$realData[this.$realData.length - 1] : 50, y = prev + Math.random() * 10 - 5; if (y < 0) { y = 0; } else if (y > 100) { y = 100; } this.$realData.push(y); } // Zip the generated y values with the x values var res = []; for (var i = 0; i < this.$realData.length; ++i) { res.push([i, this.$realData[i]]) } return res; }, FlotChart.prototype.createRealTimeGraph = function(selector, data, colors) { var plot = $.plot(selector, [data], { colors: colors, series: { lines: { show: true, fill: true, lineWidth: 1, fillColor: { colors: [{ opacity: 0.45 }, { opacity: 0.45 }] } }, points: { show: false }, shadowSize: 0 }, grid : { show : true, aboveData : false, color : '#dcdcdc', labelMargin : 15, axisMargin : 0, borderWidth : 0, borderColor : null, minBorderMargin : 5, clickable : true, hoverable : true, autoHighlight : false, mouseActiveRadius : 20 }, tooltip : true, //activate tooltip tooltipOpts : { content : "Value is : %y.0" + "%", shifts : { x : -30, y : -50 } }, yaxis : { min : 0, max : 100, color : 'rgba(0,0,0,0.1)' }, xaxis : { show : false } }); return plot; }, //creates Pie Chart FlotChart.prototype.createDonutGraph = function(selector, labels, datas, colors) { var data = [{ label: labels[0], data: datas[0] }, { label: labels[1], data: datas[1] }, { label: labels[2], data: datas[2] }, { label: labels[3], data: datas[3] }, { label: labels[4], data: datas[4] } ]; var options = { series: { pie: { show: true, innerRadius: 0.7, show: true } }, legend : { show : true, labelFormatter : function(label, series) { return '
 ' + label + '
' }, labelBoxBorderColor : null, margin : 50, width : 20, padding : 1 }, grid : { hoverable : true, clickable : true }, colors : colors, tooltip : true, tooltipOpts : { content : "%s, %p.0%" } }; $.plot($(selector), data, options); }, //creates Combine Chart FlotChart.prototype.createCombineGraph = function(selector, ticks, labels, datas) { var data = [{ label: labels[0], data: datas[0], lines: { show: true, fill: true }, points: { show: true } }, { label: labels[1], data: datas[1], lines: { show: true }, points: { show: true } }, { label: labels[2], data: datas[2], bars: { show: true } }]; var options = { xaxis: { ticks: ticks }, series: { shadowSize: 0 }, grid: { hoverable: true, clickable: true, tickColor: "#f9f9f9", borderWidth: 1, borderColor: "#eeeeee" }, colors: ["#317eeb", "#1a2942", "#60b1cc"], tooltip: true, tooltipOpts: { defaultTheme: false }, legend: { position: 'nw' }, }; $.plot($(selector), data, options); }, //initializing various charts and components FlotChart.prototype.init = function() { //plot graph data var uploads = [[0, 9], [1, 8], [2, 5], [3, 8], [4, 5], [5, 14], [6, 10]]; var downloads = [[0, 5], [1, 12], [2,4], [3, 3], [4, 12], [5, 11], [6, 14]]; var plabels = ["Visits", "Pages/Visit"]; var pcolors = ['#6e8cd7', '#1a2942']; var borderColor = '#efefef'; var bgColor = '#fff'; this.createPlotGraph("#website-stats", uploads, downloads, plabels, pcolors, borderColor, bgColor); //Pie graph data var pielabels = ["Series 1","Series 2","Series 3"]; var datas = [20,30, 15]; var colors = ["#60b1cc", "#6c85bd", "#1ca8dd"]; this.createPieGraph("#pie-chart #pie-chart-container", pielabels , datas, colors); //real time data representation var plot = this.createRealTimeGraph('#flotRealTime', this.randomData() , ['#6e8cd7']); plot.draw(); var $this = this; function updatePlot() { plot.setData([$this.randomData()]); // Since the axes don't change, we don't need to call plot.setupGrid() plot.draw(); setTimeout(updatePlot, $( 'html' ).hasClass( 'mobile-device' ) ? 1000 : 1000); } updatePlot(); //Donut pie graph data var donutlabels = ["Series 1","Series 2","Series 3","Series 4","Series 5"]; var donutdatas = [35,20, 10, 15, 20]; var donutcolors = ["#60b1cc", "#bac3d2", "#4697ce","#6c85bd","#6e8cd7"]; this.createDonutGraph("#donut-chart #donut-chart-container", donutlabels , donutdatas, donutcolors); //Combine graph data var data24Hours = [ [0, 201], [1, 520], [2, 337], [3, 261], [4, 157], [5, 95], [6, 200], [7, 250], [8, 320], [9, 500], [10, 152], [11, 214], [12, 364], [13, 449], [14, 558], [15, 282], [16, 379], [17, 429], [18, 518], [19, 470], [20, 330], [21, 245], [22, 358], [23, 74] ]; var data48Hours = [ [0, 245], [1, 492], [2, 538], [3, 332], [4, 234], [5, 143], [6, 147], [7, 63], [8, 64], [9, 43], [10, 486], [11, 201], [12, 315], [13, 397], [14, 612], [15, 281], [16, 370], [17, 279], [18, 425], [19, 53], [20, 122], [21, 355], [22, 340], [23, 801] ]; var dataDifference = [ [23, 727], [22, 128], [21, 110], [20, 92], [19, 172], [18, 63], [17, 150], [16, 592], [15, 12], [14, 246], [13, 52], [12, 149], [11, 123], [10, 2], [9, 325], [8, 10], [7, 15], [6, 89], [5, 65], [4, 77], [3, 600], [2, 200], [1, 385], [0, 200] ]; var ticks = [ [0, "22h"], [1, ""], [2, "00h"], [3, ""], [4, "02h"], [5, ""], [6, "04h"], [7, ""], [8, "06h"], [9, ""], [10, "08h"], [11, ""], [12, "10h"], [13, ""], [14, "12h"], [15, ""], [16, "14h"], [17, ""], [18, "16h"], [19, ""], [20, "18h"], [21, ""], [22, "20h"], [23, ""] ]; var combinelabels = ["Last 24 Hours","Last 48 Hours","Difference"]; var combinedatas = [data24Hours,data48Hours,dataDifference]; this.createCombineGraph("#combine-chart #combine-chart-container", ticks, combinelabels , combinedatas); }, //init flotchart $.FlotChart = new FlotChart, $.FlotChart.Constructor = FlotChart }(window.jQuery), //initializing flotchart function($) { "use strict"; $.FlotChart.init() }(window.jQuery);