src/pyams_skin/resources/js/myams-plugins.js
changeset 547 9fe15f541572
parent 542 a6d37768ab8f
child 560 1ee4e482bfe7
equal deleted inserted replaced
546:9f02c09d2393 547:9fe15f541572
  1693 		 * Flot charts
  1693 		 * Flot charts
  1694 		 */
  1694 		 */
  1695 		chart: function(element) {
  1695 		chart: function(element) {
  1696 			var charts = $('.chart', element);
  1696 			var charts = $('.chart', element);
  1697 			if (charts.length > 0) {
  1697 			if (charts.length > 0) {
  1698 				ams.ajax && ams.ajax.check($.fn.plot,
  1698 				ams.ajax && ams.ajax.check([window.Flot, $.color],
  1699 										   ams.baseURL + 'flot/jquery.flot' + ams.devext + '.js',
  1699 					[ams.baseURL + 'ext/flot/jquery.canvaswrapper' + ams.devext + '.js',
  1700 										   function() {
  1700 					 ams.baseURL + 'ext/flot/jquery.colorhelpers' + ams.devext + '.js'],
  1701 											   charts.each(function() {
  1701 					function () {
  1702 
  1702 						ams.ajax.check($.fn.plot,
  1703 												   function checkPlugin(plugin) {
  1703 							ams.baseURL + 'ext/flot/jquery.flot' + ams.devext + '.js',
  1704 													   for (var index in $.plot.plugins) {
  1704 							function () {
  1705 														   if ($.plot.plugins.hasOwnProperty(index)) {
  1705 								charts.each(function () {
  1706 															   var pluginInfo = $.plot.plugins[index];
  1706 
  1707 															   if (pluginInfo.name === plugin) {
  1707 									var chart = $(this),
  1708 																   return pluginInfo;
  1708 										data = chart.data(),
  1709 															   }
  1709 										dataOptions = {},
  1710 														   }
  1710 										plugin,
  1711 													   }
  1711 										flotPlugins = (data.amsChartPlugins || '').split(/\s+/);
  1712 													   return null;
  1712 
  1713 												   }
  1713 									function checkPlugin(plugin) {
  1714 
  1714 										for (var index in $.plot.plugins) {
  1715 												   var chart = $(this);
  1715 											if ($.plot.plugins.hasOwnProperty(index)) {
  1716 												   var data = chart.data();
  1716 												var pluginInfo = $.plot.plugins[index];
  1717 												   var dataOptions = {};
  1717 												if (pluginInfo.name === plugin) {
  1718 												   var plugins = (data.amsChartPlugins || '').split(/\s+/);
  1718 													return pluginInfo;
  1719 												   if (plugins.length > 0) {
  1719 												}
  1720 													   for (var index in plugins) {
  1720 											}
  1721 														   if (plugins.hasOwnProperty(index)) {
  1721 										}
  1722 															   var pluginName = plugins[index];
  1722 										return null;
  1723 															   if (!checkPlugin(pluginName)) {
  1723 									}
  1724 																   ams.getScript(ams.baseURL + 'flot/jquery.flot.' + pluginName + ams.devext + '.js');
  1724 
  1725 															   }
  1725 									function initChart() {
  1726 														   }
  1726 										var settings = $.extend({}, dataOptions, data.amsChartOptions);
  1727 													   }
  1727 										settings = ams.executeFunctionByName(data.amsChartInitCallback, chart, settings) || settings;
  1728 												   }
  1728 										var chartData = data.amsChartData,
  1729 												   var settings = $.extend({}, dataOptions, data.amsChartOptions);
  1729 											chartDataLoader = data.amsChartDataLoader;
  1730 												   settings = ams.executeFunctionByName(data.amsChartInitCallback, chart, settings) || settings;
  1730 										if (chartDataLoader) {
  1731 												   var chartData = data.amsChartData;
  1731 											$.getJSON(chartDataLoader, chartData).done(function (data) {
  1732 												   chartData = ams.executeFunctionByName(data.amsChartInitData, chart, chartData) || chartData;
  1732 												settings = $.extend({}, settings, data.settings);
  1733 												   var plugin = chart.plot(chartData, settings);
  1733 												createChart(data.data, settings);
  1734 												   ams.executeFunctionByName(data.amsChartAfterInitCallback, chart, plugin, settings);
  1734 											});
  1735 											   });
  1735 										} else {
  1736 										   });
  1736 											createChart(data, settings);
       
  1737 										}
       
  1738 									}
       
  1739 
       
  1740 									function createChart(chartData, settings) {
       
  1741 										chartData = ams.executeFunctionByName(data.amsChartInitData, chart, chartData) || chartData;
       
  1742 										plugin = chart.plot(chartData, settings);
       
  1743 										ams.executeFunctionByName(data.amsChartAfterInitCallback, chart, plugin, settings);
       
  1744 									}
       
  1745 
       
  1746 									var deferred = [];
       
  1747 									if (flotPlugins.length > 0) {
       
  1748 										for (var index in flotPlugins) {
       
  1749 											if (flotPlugins.hasOwnProperty(index)) {
       
  1750 												var pluginName = flotPlugins[index];
       
  1751 												if (!checkPlugin(pluginName)) {
       
  1752 													deferred.push(ams.getScript(ams.baseURL + 'ext/flot/jquery.flot.' + pluginName + ams.devext + '.js'));
       
  1753 												}
       
  1754 											}
       
  1755 										}
       
  1756 									}
       
  1757 									if (deferred.length > 0) {
       
  1758 										$.when.apply($, deferred).then(function () {
       
  1759 											initChart();
       
  1760 										})
       
  1761 									} else {
       
  1762 										initChart();
       
  1763 									}
       
  1764 								});
       
  1765 							});
       
  1766 					});
  1737 			}
  1767 			}
  1738 		},
  1768 		},
  1739 
  1769 
  1740 		/**
  1770 		/**
  1741 		 * Sparkline graphs
  1771 		 * Sparkline graphs