src/myams/resources/js/myams.js
changeset 24 5ea89334a159
parent 21 d1946c8a78b5
child 30 37ac838dfc35
equal deleted inserted replaced
23:fa5083469321 24:5ea89334a159
     1 /*
     1 /*
     2  * MyAMS
     2  * MyAMS
     3  * « My Application Management Skin »
     3  * « My Application Management Skin »
     4  *
     4  *
     5  * Version: 0.1.43 (rev. 1)
     5  * Version: 0.1.44 (rev. 1)
     6  * A bootstrap based application/administration skin
     6  * A bootstrap based application/administration skin
     7  *
     7  *
     8  * Custom administration and application skin tools
     8  * Custom administration and application skin tools
     9  * Released under Zope Public License ZPL 1.1
     9  * Released under Zope Public License ZPL 1.1
    10  * ©2014-2020 Thierry Florac <tflorac@ulthar.net>
    10  * ©2014-2020 Thierry Florac <tflorac@ulthar.net>
  5083 					 ams.baseURL + 'ext/flot/jquery.colorhelpers' + ams.devext + '.js'],
  5083 					 ams.baseURL + 'ext/flot/jquery.colorhelpers' + ams.devext + '.js'],
  5084 					function () {
  5084 					function () {
  5085 						ams.ajax.check($.plot,
  5085 						ams.ajax.check($.plot,
  5086 							ams.baseURL + 'ext/flot/jquery.flot' + ams.devext + '.js',
  5086 							ams.baseURL + 'ext/flot/jquery.flot' + ams.devext + '.js',
  5087 							function () {
  5087 							function () {
  5088 								ams.ajax.check($.plot.uiConstants,
  5088 
  5089 									ams.baseURL + 'ext/flot/jquery.flot.uiConstants' + ams.devext + '.js',
  5089 								var flotPlugins = new Set();
  5090 									function() {
  5090 								charts.each(function() {
  5091 										charts.each(function () {
  5091 									var chart = $(this),
  5092 
  5092 										data = chart.data(),
  5093 											var chart = $(this),
  5093 										chartPlugins = (data.amsChartPlugins || '').split(/\s+/);
  5094 												data = chart.data(),
  5094 									$.each(chartPlugins, function(idx, elt) {
  5095 												dataOptions = {},
  5095 										flotPlugins.add(elt);
  5096 												plugin,
  5096 									});
  5097 												flotPlugins = (data.amsChartPlugins || '').split(/\s+/);
  5097 								});
  5098 
  5098 
  5099 											function checkPlugin(plugin) {
  5099 								function checkPlugin(plugin) {
  5100 												for (var index in $.plot.plugins) {
  5100 									for (var index in $.plot.plugins) {
  5101 													if ($.plot.plugins.hasOwnProperty(index)) {
  5101 										if ($.plot.plugins.hasOwnProperty(index)) {
  5102 														var pluginInfo = $.plot.plugins[index];
  5102 											var pluginInfo = $.plot.plugins[index];
  5103 														if (pluginInfo.name === plugin) {
  5103 											if (pluginInfo.name === plugin) {
  5104 															return pluginInfo;
  5104 												return pluginInfo;
  5105 														}
       
  5106 													}
       
  5107 												}
       
  5108 												return null;
       
  5109 											}
  5105 											}
  5110 
  5106 										}
  5111 											function initChart() {
  5107 									}
  5112 												var settings = $.extend({}, dataOptions, data.amsChartOptions);
  5108 									return null;
  5113 												settings = ams.executeFunctionByName(data.amsChartInitCallback, chart, settings) || settings;
  5109 								}
  5114 												var chartData = data.amsChartData,
  5110 
  5115 													chartDataLoader = data.amsChartDataLoader;
  5111 								var deferred = [];
  5116 												if (chartDataLoader) {
  5112 								for (var pluginName of flotPlugins.values()) {
  5117 													$.getJSON(chartDataLoader, chartData).done(function (data) {
  5113 									if (!checkPlugin(pluginName)) {
  5118 														settings = $.extend({}, settings, data.settings);
  5114 										deferred.push(ams.getScript(ams.baseURL + 'ext/flot/jquery.flot.' + pluginName + ams.devext + '.js'));
  5119 														createChart(data.data, settings);
  5115 									}
  5120 													});
  5116 								}
  5121 												} else {
  5117 
  5122 													createChart(data, settings);
  5118 								$.when.apply($, deferred).then(function() {
  5123 												}
  5119 
  5124 											}
  5120 									charts.each(function() {
  5125 
  5121 
  5126 											function createChart(chartData, settings) {
  5122 										var chart = $(this),
  5127 												chartData = ams.executeFunctionByName(data.amsChartInitData, chart, chartData) || chartData;
  5123 											data = chart.data(),
  5128 												plugin = chart.plot(chartData, settings);
  5124 											dataOptions = {};
  5129 												ams.executeFunctionByName(data.amsChartAfterInitCallback, chart, plugin, settings);
  5125 
  5130 											}
  5126 										function createChart(chartData, settings) {
  5131 
  5127 											chartData = ams.executeFunctionByName(data.amsChartInitData, chart, chartData) || chartData;
  5132 											var deferred = [];
  5128 											var plugin = chart.plot(chartData, settings);
  5133 											if (flotPlugins.length > 0) {
  5129 											ams.executeFunctionByName(data.amsChartAfterInitCallback, chart, plugin, settings);
  5134 												for (var index in flotPlugins) {
  5130 										}
  5135 													if (flotPlugins.hasOwnProperty(index)) {
  5131 
  5136 														var pluginName = flotPlugins[index];
  5132 										var settings = $.extend({}, dataOptions, data.amsChartOptions);
  5137 														if (!checkPlugin(pluginName)) {
  5133 										settings = ams.executeFunctionByName(data.amsChartInitCallback, chart, settings) || settings;
  5138 															deferred.push(ams.getScript(ams.baseURL + 'ext/flot/jquery.flot.' + pluginName + ams.devext + '.js'));
  5134 										var chartData = data.amsChartData,
  5139 														}
  5135 											chartDataLoader = data.amsChartDataLoader;
  5140 													}
  5136 										if (chartDataLoader) {
  5141 												}
  5137 											$.getJSON(chartDataLoader, chartData).done(function(data) {
  5142 											}
  5138 												settings = $.extend({}, settings, data.settings);
  5143 											if (deferred.length > 0) {
  5139 												createChart(data.data, settings);
  5144 												$.when.apply($, deferred).then(function () {
  5140 											});
  5145 													initChart();
  5141 										} else {
  5146 												})
  5142 											createChart(chartData, settings);
  5147 											} else {
  5143 										}
  5148 												initChart();
  5144 
  5149 											}
  5145 									});
  5150 										});
       
  5151 								});
  5146 								});
  5152 							});
  5147 							});
  5153 					});
  5148 					});
  5154 			}
  5149 			}
  5155 		},
  5150 		},