--- a/src/pyams_skin/resources/js/myams-plugins.js Wed Oct 16 13:00:43 2019 +0200
+++ b/src/pyams_skin/resources/js/myams-plugins.js Wed Oct 16 13:01:12 2019 +0200
@@ -1695,45 +1695,75 @@
chart: function(element) {
var charts = $('.chart', element);
if (charts.length > 0) {
- ams.ajax && ams.ajax.check($.fn.plot,
- ams.baseURL + 'flot/jquery.flot' + ams.devext + '.js',
- function() {
- charts.each(function() {
+ ams.ajax && ams.ajax.check([window.Flot, $.color],
+ [ams.baseURL + 'ext/flot/jquery.canvaswrapper' + ams.devext + '.js',
+ ams.baseURL + 'ext/flot/jquery.colorhelpers' + ams.devext + '.js'],
+ function () {
+ ams.ajax.check($.fn.plot,
+ ams.baseURL + 'ext/flot/jquery.flot' + ams.devext + '.js',
+ function () {
+ charts.each(function () {
- function checkPlugin(plugin) {
- for (var index in $.plot.plugins) {
- if ($.plot.plugins.hasOwnProperty(index)) {
- var pluginInfo = $.plot.plugins[index];
- if (pluginInfo.name === plugin) {
- return pluginInfo;
- }
- }
- }
- return null;
- }
+ var chart = $(this),
+ data = chart.data(),
+ dataOptions = {},
+ plugin,
+ flotPlugins = (data.amsChartPlugins || '').split(/\s+/);
+
+ function checkPlugin(plugin) {
+ for (var index in $.plot.plugins) {
+ if ($.plot.plugins.hasOwnProperty(index)) {
+ var pluginInfo = $.plot.plugins[index];
+ if (pluginInfo.name === plugin) {
+ return pluginInfo;
+ }
+ }
+ }
+ return null;
+ }
- var chart = $(this);
- var data = chart.data();
- var dataOptions = {};
- var plugins = (data.amsChartPlugins || '').split(/\s+/);
- if (plugins.length > 0) {
- for (var index in plugins) {
- if (plugins.hasOwnProperty(index)) {
- var pluginName = plugins[index];
- if (!checkPlugin(pluginName)) {
- ams.getScript(ams.baseURL + 'flot/jquery.flot.' + pluginName + ams.devext + '.js');
- }
- }
- }
- }
- var settings = $.extend({}, dataOptions, data.amsChartOptions);
- settings = ams.executeFunctionByName(data.amsChartInitCallback, chart, settings) || settings;
- var chartData = data.amsChartData;
- chartData = ams.executeFunctionByName(data.amsChartInitData, chart, chartData) || chartData;
- var plugin = chart.plot(chartData, settings);
- ams.executeFunctionByName(data.amsChartAfterInitCallback, chart, plugin, settings);
- });
- });
+ function initChart() {
+ var settings = $.extend({}, dataOptions, data.amsChartOptions);
+ settings = ams.executeFunctionByName(data.amsChartInitCallback, chart, settings) || settings;
+ var chartData = data.amsChartData,
+ chartDataLoader = data.amsChartDataLoader;
+ if (chartDataLoader) {
+ $.getJSON(chartDataLoader, chartData).done(function (data) {
+ settings = $.extend({}, settings, data.settings);
+ createChart(data.data, settings);
+ });
+ } else {
+ createChart(data, settings);
+ }
+ }
+
+ function createChart(chartData, settings) {
+ chartData = ams.executeFunctionByName(data.amsChartInitData, chart, chartData) || chartData;
+ plugin = chart.plot(chartData, settings);
+ ams.executeFunctionByName(data.amsChartAfterInitCallback, chart, plugin, settings);
+ }
+
+ var deferred = [];
+ if (flotPlugins.length > 0) {
+ for (var index in flotPlugins) {
+ if (flotPlugins.hasOwnProperty(index)) {
+ var pluginName = flotPlugins[index];
+ if (!checkPlugin(pluginName)) {
+ deferred.push(ams.getScript(ams.baseURL + 'ext/flot/jquery.flot.' + pluginName + ams.devext + '.js'));
+ }
+ }
+ }
+ }
+ if (deferred.length > 0) {
+ $.when.apply($, deferred).then(function () {
+ initChart();
+ })
+ } else {
+ initChart();
+ }
+ });
+ });
+ });
}
},