forked from Ejdamm/chart.js-php
-
Notifications
You must be signed in to change notification settings - Fork 0
/
driver.js
39 lines (33 loc) · 1.1 KB
/
driver.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Will be filled with canvas
var ChartJSPHP = new Array();
// You must call this function after document.ready
function loadChartJsPhp() {
// Getting all chart.js canvas
var elements = document.querySelectorAll("[data-chartjs]");
// Looping every canvas
for (var canvas of elements) {
var id = canvas.id;
// Getting ctx from canvas
var ctx = canvas.getContext('2d');
// Getting values in data attributes
var htmldata = canvas.dataset;
var type = htmldata.chartjs;
var data = JSON.parse(htmldata.data);
var options = JSON.parse(htmldata.options);
evalFunctions(options)
var config = {type:type, data:data, options:options};
// Creating chart and saving for later use
ChartJSPHP[id] = new Chart(ctx, config);
}
};
//Converts functions in json from strings to actual functions
function evalFunctions(chartArray) {
for (var key in chartArray) {
var value = chartArray[key];
if (value instanceof Array || value instanceof Object ) {
evalFunctions(value);
} else if (typeof value === "string" && value.indexOf('function(') == 0) {
chartArray[key] = eval("(" + value + ")");
}
}
}