var colors = ["#5B90BF", "#BF616A", "#A3BE8C", "#EBCB8B", "#D08770",
"#B48EAD", "#96B5B4", "#8FA1B3", "#B48EAD", "#AB7967",
"#B9E3AE", "#FDB4BF", "#A3E7D8", "#F4EFAF", "#BACAB3", "#FF9797",
"#C0C0C0", "#B3B3D9", "#D0B3E1", "#FFBE7D", "#EFA694", "#F9A484"];
var lightColors = ["#7CA6CC", "#CC8188", "#B7CCA5", "#EFD6A3", "#DAA08E",
"#C4A6BE", "#AAC3C2", "#A7B5C3", "#C4A6BE", "#BD9688",
"#C8E9BF", "#FDBFC8", "#B5ECE0", "#F6F2BE", "#C9D6C4", "#FFAEAE",
"#CBCBCB", "#C2C2E1", "#DAC3E7", "#FFCC99", "#F2B6A8", "#FAB89F"];
function GetKeyArray(jsonString) {
var key_array = [];
var jsonString_split = jsonString.split('}')[0].replace("[{", "").split(',');
for (var i = 0; i < jsonString_split.length; i++) {
key_array.push(eval(jsonString_split[i].split(':')[0]));
}
return key_array;
}
function CreateBarChart(jsonString, canvasID, ulID) {
//clear old chart
if (typeof barChart != 'undefined') {
barChart.destroy();
}
//clear all li
$("#" + ulID).empty();
if (jsonString == "[]") {
return;
}
//new chart data structure
var dataChart = {
labels: [],
datasets: []
};
//ceate dataset with first record key array not use first key
var key_array = GetKeyArray(jsonString);
for (var i = 1; i < key_array.length; i++) {
var dataSet = {
label: key_array[i],
fillColor: colors[i - 1],
highlightFill: lightColors[i - 1],
data: []
};
dataChart.datasets.push(dataSet);
$("#" + ulID).append('
' + key_array[i] + '');
}
//loop records for create labels and push data value
var dataJSON = JSON.parse(jsonString);
$.each(dataJSON, function (rowIndex, rowData) {
dataChart.labels.push(rowData[key_array[0]]);
for (var i = 1; i < key_array.length; i++) {
dataChart.datasets[i - 1].data.push(rowData[key_array[i]]);
}
});
Chart.defaults.global.responsive = true;
var ctx = $("#" + canvasID).get(0).getContext("2d");
var chart = new Chart(ctx).Bar(dataChart, {
bezierCurve: false
});
window.barChart = chart;
}
function CreateLineChart(jsonString, canvasID, ulID) {
//clear old chart
if (typeof lineChart != 'undefined') {
lineChart.destroy();
}
//clear all li
$("#" + ulID).empty();
if (jsonString == "[]") {
return;
}
//new chart data structure
var dataChart = {
labels: [],
datasets: []
};
//ceate dataset with first record key array not use first key
var key_array = GetKeyArray(jsonString);
for (var i = 1; i < key_array.length; i++) {
var dataSet = {
label: key_array[i],
strokeColor: colors[i - 1],
pointColor: colors[i - 1],
pointHighlightFill: lightColors[i - 1],
data: []
};
dataChart.datasets.push(dataSet);
$("#" + ulID).append(' ' + key_array[i] + '');
}
//loop records for create labels and push data value
var dataJSON = JSON.parse(jsonString);
$.each(dataJSON, function (rowIndex, rowData) {
dataChart.labels.push(rowData[key_array[0]]);
for (var i = 1; i < key_array.length; i++) {
dataChart.datasets[i - 1].data.push(rowData[key_array[i]]);
}
});
Chart.defaults.global.responsive = true;
var ctx = $("#" + canvasID).get(0).getContext("2d");
var chart = new Chart(ctx).Line(dataChart, {
bezierCurve: false,
datasetFill: false,
pointDot: true
});
window.lineChart = chart;
}
function CreatePieChart(jsonString, canvasID, ulID) {
//clear old chart
/*if (typeof pieChart != 'undefined') {
pieChart.destroy();
}*/
//clear all li
$("#" + ulID).empty();
if (jsonString == "[]") {
return;
}
//new chart data structure
var dataChart = [];
//ceate dataset with first record key array not use first key
var key_array = GetKeyArray(jsonString);
for (var i = 1; i < key_array.length; i++) {
var dataSet = {
value: "",
color: colors[i - 1],
highlight: lightColors[i - 1],
label: key_array[i]
};
dataChart.push(dataSet);
}
//loop records for create labels and push data value
var dataJSON = JSON.parse(jsonString);
$.each(dataJSON, function (rowIndex, rowData) {
//dataChart.labels.push(rowData[key_array[0]]);
for (var i = 1; i < key_array.length; i++) {
dataChart[i - 1].value = rowData[key_array[i]];
if (rowData[key_array[i]] != "0") {
$("#" + ulID).append(' ' + key_array[i] + '');
}
}
});
Chart.defaults.global.responsive = true;
var ctx = $("#" + canvasID).get(0).getContext("2d");
var chart = new Chart(ctx).Pie(dataChart, {});
//window.pieChart = chart;
}