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 |