mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-16 21:17:14 +01:00
105 lines
2.4 KiB
JavaScript
105 lines
2.4 KiB
JavaScript
|
var ChartHelper = (function ($, ChartJs) {
|
||
|
|
||
|
var me = {
|
||
|
|
||
|
elem: {
|
||
|
$chartWrapper: null
|
||
|
},
|
||
|
|
||
|
storage: {
|
||
|
charts: []
|
||
|
},
|
||
|
|
||
|
init: function () {
|
||
|
me.elem.$chartWrapper = $('.chart-wrapper');
|
||
|
|
||
|
// Keine Charts gefunden > Ende
|
||
|
if (me.elem.$chartWrapper.length === 0) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
me.initCharts();
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Alle Diagramme initialisieren
|
||
|
*/
|
||
|
initCharts: function () {
|
||
|
var interval = 250;
|
||
|
me.elem.$chartWrapper.each(function () {
|
||
|
var $wrapper = $(this);
|
||
|
|
||
|
// Alle 250 ms ein Chart initialisieren
|
||
|
window.setTimeout(function () {
|
||
|
me.initChart($wrapper);
|
||
|
}, interval);
|
||
|
|
||
|
interval += 250;
|
||
|
});
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Einzelnes Diagramm initialisieren
|
||
|
*
|
||
|
* @param {jQuery} $wrapper
|
||
|
*
|
||
|
* @return {Chart}
|
||
|
*/
|
||
|
initChart: function ($wrapper) {
|
||
|
var chartCanvas = $wrapper.find('canvas');
|
||
|
var chartJson = $wrapper.find('script');
|
||
|
var chartData = JSON.parse(chartJson.html());
|
||
|
|
||
|
var graphId = chartCanvas.data('graph-id');
|
||
|
var graph = new ChartJs(chartCanvas, chartData);
|
||
|
|
||
|
if (typeof graphId === 'undefined') {
|
||
|
graphId = me.generateRandomId();
|
||
|
chartCanvas.data('graph-id', graphId);
|
||
|
}
|
||
|
me.storage.charts[graphId] = graph;
|
||
|
|
||
|
return graph;
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Chart-Instanz abrufen
|
||
|
*
|
||
|
* @param {String} chartId
|
||
|
*
|
||
|
* @return {Chart}
|
||
|
*/
|
||
|
getChart: function (chartId) {
|
||
|
return me.storage.charts[chartId];
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Alle Chart-Instanzen abrufen
|
||
|
*
|
||
|
* @return {Array|Chart[]}
|
||
|
*/
|
||
|
getCharts: function () {
|
||
|
return me.storage.charts;
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Zufällige ID generieren
|
||
|
*
|
||
|
* @return {string}
|
||
|
*/
|
||
|
generateRandomId: function () {
|
||
|
return 'chart-' + Math.floor(Math.random() * Math.floor(9999999999));
|
||
|
}
|
||
|
};
|
||
|
|
||
|
return {
|
||
|
init: me.init,
|
||
|
initChart: me.initChart,
|
||
|
getChart: me.getChart,
|
||
|
getCharts: me.getCharts
|
||
|
};
|
||
|
|
||
|
})(jQuery, Chart);
|
||
|
|
||
|
$(document).ready(ChartHelper.init);
|