mivita/_static/assets/js/view/demo.graphs.flot.js
2018-10-29 09:39:31 +01:00

525 lines
14 KiB
JavaScript

/** Graphs : Flot
graphs-flot.html
<!-- PAGE LEVEL SCRIPTS -->
loadScript(plugin_path + "chart.flot/jquery.flot.min.js", function(){
loadScript(plugin_path + "chart.flot/jquery.flot.resize.min.js", function(){
loadScript(plugin_path + "chart.flot/jquery.flot.time.min.js", function(){
loadScript(plugin_path + "chart.flot/jquery.flot.fillbetween.min.js", function(){
loadScript(plugin_path + "chart.flot/jquery.flot.orderBars.min.js", function(){
loadScript(plugin_path + "chart.flot/jquery.flot.pie.min.js", function(){
loadScript(plugin_path + "chart.flot/jquery.flot.tooltip.min.js", function(){
// demo js script
loadScript("assets/js/view/demo.graphs.flot.js");
});
});
});
});
});
});
});
------------------------------------------------------------------------------------------
01. SALES CHART
02. SIN CHART
03. BAR CHART
04. BAR CHART HORIZONTAL
05. PIE CHART
06. STATS CHART
07. REALTIME CHART
http://www.flotcharts.org/flot/examples/
************************************************* **/
jQuery(window).ready(function() {
_flot();
});
function _flot() {
/* DEFAULTS FLOT COLORS */
var $color_border_color = "#eaeaea"; /* light gray */
$color_grid_color = "#dddddd" /* silver */
$color_main = "#E24913"; /* red */
$color_second = "#6595b4"; /* blue */
$color_third = "#FF9F01"; /* orange */
$color_fourth = "#7e9d3a"; /* green */
$color_fifth = "#BD362F"; /* dark red */
$color_mono = "#000000"; /* black */
/** 01. SALES CHART
******************************************* **/
if (jQuery("#flot-sales").length > 0) {
var d = [[1196463600000, 0], [1196550000000, 0], [1196636400000, 0], [1196722800000, 77], [1196809200000, 3636], [1196895600000, 3575], [1196982000000, 2736], [1197068400000, 1086], [1197154800000, 676], [1197241200000, 1205], [1197327600000, 906], [1197414000000, 710], [1197500400000, 639], [1197586800000, 540], [1197673200000, 435], [1197759600000, 301], [1197846000000, 575], [1197932400000, 481], [1198018800000, 591], [1198105200000, 608], [1198191600000, 459], [1198278000000, 234], [1198364400000, 1352], [1198450800000, 686], [1198537200000, 279], [1198623600000, 449], [1198710000000, 468], [1198796400000, 392], [1198882800000, 282], [1198969200000, 208], [1199055600000, 229], [1199142000000, 177], [1199228400000, 374], [1199314800000, 436], [1199401200000, 404], [1199487600000, 253], [1199574000000, 218], [1199660400000, 476], [1199746800000, 462], [1199833200000, 500], [1199919600000, 700], [1200006000000, 750], [1200092400000, 600], [1200178800000, 500], [1200265200000, 900], [1200351600000, 930], [1200438000000, 1200], [1200524400000, 980], [1200610800000, 950], [1200697200000, 900], [1200783600000, 1000], [1200870000000, 1050], [1200956400000, 1150], [1201042800000, 1100], [1201129200000, 1200], [1201215600000, 1300], [1201302000000, 1700], [1201388400000, 1450], [1201474800000, 1500], [1201561200000, 546], [1201647600000, 614], [1201734000000, 954], [1201820400000, 1700], [1201906800000, 1800], [1201993200000, 1900], [1202079600000, 2000], [1202166000000, 2100], [1202252400000, 2200], [1202338800000, 2300], [1202425200000, 2400], [1202511600000, 2550], [1202598000000, 2600], [1202684400000, 2500], [1202770800000, 2700], [1202857200000, 2750], [1202943600000, 2800], [1203030000000, 3245], [1203116400000, 3345], [1203202800000, 3000], [1203289200000, 3200], [1203375600000, 3300], [1203462000000, 3400], [1203548400000, 3600], [1203634800000, 3700], [1203721200000, 3800], [1203807600000, 4000], [1203894000000, 4500]];
for (var i = 0; i < d.length; ++i) {
d[i][0] += 60 * 60 * 1000;
}
function weekendAreas(axes) {
var markings = [];
var d = new Date(axes.xaxis.min);
// go to the first Saturday
d.setUTCDate(d.getUTCDate() - ((d.getUTCDay() + 1) % 7))
d.setUTCSeconds(0);
d.setUTCMinutes(0);
d.setUTCHours(0);
var i = d.getTime();
do {
// when we don't set yaxis, the rectangle automatically
// extends to infinity upwards and downwards
markings.push({
xaxis : {
from : i,
to : i + 2 * 24 * 60 * 60 * 1000
}
});
i += 7 * 24 * 60 * 60 * 1000;
} while (i < axes.xaxis.max);
return markings;
}
var options = {
xaxis : {
mode : "time",
tickLength : 5
},
series : {
lines : {
show : true,
lineWidth : 1,
fill : true,
fillColor : {
colors : [{
opacity : 0.1
}, {
opacity : 0.15
}]
}
},
//points: { show: true },
shadowSize : 0
},
selection : {
mode : "x"
},
grid : {
hoverable : true,
clickable : true,
tickColor : $color_border_color,
borderWidth : 0,
borderColor : $color_border_color,
},
tooltip : true,
tooltipOpts : {
content : "Your sales for <b>%x</b> was <span>$%y</span>",
dateFormat : "%y-%0m-%0d",
defaultTheme : false
},
colors : [$color_second],
};
var plot = jQuery.plot(jQuery("#flot-sales"), [d], options);
}
/** 02. SIN CHART
******************************************* **/
if (jQuery("#flot-sin").length > 0) {
var sin = [], cos = [];
for (var i = 0; i < 16; i += 0.5) {
sin.push([i, Math.sin(i)]);
cos.push([i, Math.cos(i)]);
}
var plot = jQuery.plot(jQuery("#flot-sin"), [{
data : sin,
label : "sin(x)"
}, {
data : cos,
label : "cos(x)"
}], {
series : {
lines : {
show : true
},
points : {
show : true
}
},
grid : {
hoverable : true,
clickable : true,
tickColor : $color_border_color,
borderWidth : 0,
borderColor : $color_border_color,
},
tooltip : true,
tooltipOpts : {
//content : "Value <b>$x</b> Value <span>$y</span>",
defaultTheme : false
},
colors : [$color_second, $color_fourth],
yaxis : {
min : -1.1,
max : 1.1
},
xaxis : {
min : 0,
max : 15
}
});
jQuery("#flot-sin").bind("plotclick", function(event, pos, item) {
if (item) {
jQuery("#clickdata").text("You clicked point " + item.dataIndex + " in " + item.series.label + ".");
plot.highlight(item.series, item.datapoint);
}
});
}
/** 03. BAR CHART
******************************************* **/
if (jQuery("#flot-bar").length > 0) {
var data1 = [];
for (var i = 0; i <= 12; i += 1)
data1.push([i, parseInt(Math.random() * 30)]);
var data2 = [];
for (var i = 0; i <= 12; i += 1)
data2.push([i, parseInt(Math.random() * 30)]);
var data3 = [];
for (var i = 0; i <= 12; i += 1)
data3.push([i, parseInt(Math.random() * 30)]);
var ds = new Array();
ds.push({
data : data1,
bars : {
show : true,
barWidth : 0.2,
order : 1,
}
});
ds.push({
data : data2,
bars : {
show : true,
barWidth : 0.2,
order : 2
}
});
ds.push({
data : data3,
bars : {
show : true,
barWidth : 0.2,
order : 3
}
});
//Display graph
jQuery.plot(jQuery("#flot-bar"), ds, {
colors : [$color_second, $color_fourth, "#666", "#BBB"],
grid : {
show : true,
hoverable : true,
clickable : true,
tickColor : $color_border_color,
borderWidth : 0,
borderColor : $color_border_color,
},
legend : true,
tooltip : true,
tooltipOpts : {
content : "<b>%x</b> = <span>%y</span>",
defaultTheme : false
}
});
}
/** 04. BAR CHART HORIZONTAL
******************************************* **/
if (jQuery("#flot-bar-horizontal").length > 0) {
//Display horizontal graph
var d1_h = [];
for (var i = 0; i <= 3; i += 1)
d1_h.push([parseInt(Math.random() * 30), i]);
var d2_h = [];
for (var i = 0; i <= 3; i += 1)
d2_h.push([parseInt(Math.random() * 30), i]);
var d3_h = [];
for (var i = 0; i <= 3; i += 1)
d3_h.push([parseInt(Math.random() * 30), i]);
var ds_h = new Array();
ds_h.push({
data : d1_h,
bars : {
horizontal : true,
show : true,
barWidth : 0.2,
order : 1,
}
});
ds_h.push({
data : d2_h,
bars : {
horizontal : true,
show : true,
barWidth : 0.2,
order : 2
}
});
ds_h.push({
data : d3_h,
bars : {
horizontal : true,
show : true,
barWidth : 0.2,
order : 3
}
});
// display graph
jQuery.plot(jQuery("#flot-bar-horizontal"), ds_h, {
colors : [$color_second, $color_fourth, "#666", "#BBB"],
grid : {
show : true,
hoverable : true,
clickable : true,
tickColor : $color_border_color,
borderWidth : 0,
borderColor : $color_border_color,
},
legend : true,
tooltip : true,
tooltipOpts : {
content : "<b>%x</b> = <span>%y</span>",
defaultTheme : false
}
});
}
/** 05. PIE CHART
******************************************* **/
if (jQuery("#flot-pie").length > 0) {
var data_pie = [];
var series = Math.floor(Math.random() * 10) + 1;
for (var i = 0; i < series; i++) {
data_pie[i] = {
label : "Series" + (i + 1),
data : Math.floor(Math.random() * 100) + 1
}
}
jQuery.plot(jQuery("#flot-pie"), data_pie, {
series : {
pie : {
show : true,
innerRadius : 0.5,
radius : 1,
label : {
show : false,
radius : 2 / 3,
formatter : function(label, series) {
return '<div style="font-size:11px;text-align:center;padding:4px;color:white;">' + label + '<br/>' + Math.round(series.percent) + '%</div>';
},
threshold : 0.1
}
}
},
legend : {
show : true,
noColumns : 1, // number of colums in legend table
labelFormatter : null, // fn: string -> string
labelBoxBorderColor : "#000", // border color for the little label boxes
container : null, // container (as jQuery object) to put legend in, null means default on top of graph
position : "ne", // position of default legend container within plot
margin : [5, 10], // distance from grid edge to default legend container within plot
backgroundColor : "#efefef", // null means auto-detect
backgroundOpacity : 1 // set to 0 to avoid background
},
grid : {
hoverable : true,
clickable : true
},
});
}
/** 06. STATS CHART
******************************************* **/
if (jQuery("#flot-stats").length) {
var pageviews = [[1, 75], [3, 87], [4, 93], [5, 127], [6, 116], [7, 137], [8, 135], [9, 130], [10, 167], [11, 169], [12, 179], [13, 185], [14, 176], [15, 180], [16, 174], [17, 193], [18, 186], [19, 177], [20, 153], [21, 149], [22, 130], [23, 100], [24, 50]];
var visitors = [[1, 65], [3, 50], [4, 73], [5, 100], [6, 95], [7, 103], [8, 111], [9, 97], [10, 125], [11, 100], [12, 95], [13, 141], [14, 126], [15, 131], [16, 146], [17, 158], [18, 160], [19, 151], [20, 125], [21, 110], [22, 100], [23, 85], [24, 37]];
var plot = jQuery.plot(jQuery("#flot-stats"), [{
data : pageviews,
label : "Your pageviews"
}, {
data : visitors,
label : "Site visitors"
}], {
series : {
lines : {
show : true,
lineWidth : 1,
fill : true,
fillColor : {
colors : [{
opacity : 0.1
}, {
opacity : 0.15
}]
}
},
points : {
show : true
},
shadowSize : 0
},
xaxis : {
mode : "time",
tickLength : 10
},
yaxes : [{
min : 20,
tickLength : 5
}],
grid : {
hoverable : true,
clickable : true,
tickColor : $color_border_color,
borderWidth : 0,
borderColor : $color_border_color,
},
tooltip : true,
tooltipOpts : {
content : "%s for <b>%x:00 hrs</b> was %y",
dateFormat : "%y-%0m-%0d",
defaultTheme : false
},
colors : [$color_main, $color_second],
xaxis : {
ticks : 15,
tickDecimals : 2
},
yaxis : {
ticks : 15,
tickDecimals : 0
},
});
}
/** 07. REALTIME CHART
******************************************* **/
if (jQuery("#flot-realtime").length) {
// For the demo we use generated data, but normally it would be coming from the server
var data = [], totalPoints = 200;
function getRandomData() {
if (data.length > 0)
data = data.slice(1);
// do a random walk
while (data.length < totalPoints) {
var prev = data.length > 0 ? data[data.length - 1] : 50;
var y = prev + Math.random() * 10 - 5;
if (y < 0)
y = 0;
if (y > 100)
y = 100;
data.push(y);
}
// zip the generated y values with the x values
var res = [];
for (var i = 0; i < data.length; ++i)
res.push([i, data[i]])
return res;
}
// setup control widget
var updateInterval = 1000;
jQuery("#flot-realtime").val(updateInterval).change(function() {
var v = jQuery(this).val();
if (v && !isNaN(+v)) {
updateInterval = +v;
if (updateInterval < 1)
updateInterval = 1;
if (updateInterval > 2000)
updateInterval = 2000;
jQuery(this).val("" + updateInterval);
}
});
// setup plot
var options = {
yaxis : {
min : 0,
max : 100
},
xaxis : {
min : 0,
max : 100
},
colors : [$color_fourth],
series : {
lines : {
lineWidth : 1,
fill : true,
fillColor : {
colors : [{
opacity : 0.4
}, {
opacity : 0
}]
},
steps : false
}
}
};
var plot = jQuery.plot(jQuery("#flot-realtime"), [getRandomData()], options);
function update() {
plot.setData([getRandomData()]);
// since the axes don't change, we don't need to call plot.setupGrid()
plot.draw();
setTimeout(update, updateInterval);
}
update();
}
}