UNPKG

pm2-web

Version:
8 lines 3.34 kB
/** * highcharts-ng * @version v0.0.4-dev - 2014-01-15 * @link https://github.com/pablojim/highcharts-ng * @author Barry Fitzgerald <> * @license MIT License, http://www.opensource.org/licenses/MIT */ "use strict";angular.module("highcharts-ng",[]).directive("highchart",function(){function a(a,b,c){var d=a[b];a[b]=function(){var a=Array.prototype.slice.call(arguments);return c.apply(this,a),d?d.apply(this,a):void 0}}function b(a,c){for(var d in c)c[d]&&c[d].constructor&&c[d].constructor===Object?(a[d]=a[d]||{},b(a[d],c[d])):a[d]=c[d];return a}var c=function(a,b,c){void 0===c&&(c=0),0>c&&(c+=a.length),0>c&&(c=0);for(var d=a.length;d>c;c++)if(c in a&&a[c]===b)return c;return-1},d=0,e=function(a){angular.forEach(a,function(a){angular.isDefined(a.id)||(a.id="series-"+d++)})},f=["xAxis","yAxis"],g=function(c,d,e){var g={},h={chart:{events:{}},title:{},subtitle:{},series:[],credits:{},plotOptions:{},navigator:{enabled:!1}};return g=e.options?b(h,e.options):h,g.chart.renderTo=d[0],angular.forEach(f,function(b){e[b]&&(a(g.chart.events,"selection",function(a){var d=this;a[b]?c.$apply(function(){c.config[b].currentMin=a[b][0].min,c.config[b].currentMax=a[b][0].max}):c.$apply(function(){c.config[b].currentMin=d[b][0].dataMin,c.config[b].currentMax=d[b][0].dataMax})}),a(g.chart.events,"addSeries",function(){c.config[b].currentMin=this[b][0].min||c.config[b].currentMin,c.config[b].currentMax=this[b][0].max||c.config[b].currentMax}),g[b]=angular.copy(e[b]))}),e.title&&(g.title=e.title),e.subtitle&&(g.subtitle=e.subtitle),e.credits&&(g.credits=e.credits),g},h=function(a,b){var c=a.getExtremes();(b.currentMin!==c.dataMin||b.currentMax!==c.dataMax)&&a.setExtremes(b.currentMin,b.currentMax,!1)},i=function(a,b,c){(b.currentMin||b.currentMax)&&a[c][0].setExtremes(b.currentMin,b.currentMax,!0)},j=function(a){return angular.extend({},a,{data:null,visible:null})},k={},l=function(a,b){var d=[];b&&(e(b),angular.forEach(b,function(b){d.push(b.id);var c=a.get(b.id);c?angular.equals(k[b.id],j(b))?(void 0!==b.visible&&c.visible!==b.visible&&c.setVisible(b.visible,!1),c.options.data!==b.data&&c.setData(b.data,!1)):c.update(angular.copy(b),!1):a.addSeries(angular.copy(b),!1),k[b.id]=j(b)}));for(var f=a.series.length-1;f>=0;f--){var g=a.series[f];c(d,g.options.id)<0&&g.remove(!1)}},m=function(a,b,c){c=c||{};for(var d=g(a,b,c),e=c.useHighStocks?new Highcharts.StockChart(d):new Highcharts.Chart(d),h=0;h<f.length;h++)c[f[h]]&&i(e,c[f[h]],f[h]);return l(e,c.series),c.loading&&e.showLoading(),e.redraw(),e};return{restrict:"EAC",replace:!0,template:"<div></div>",scope:{config:"="},link:function(a,b){function c(){d&&d.destroy(),d=m(a,b,a.config)}var d=!1;c(),a.$watch("config.series",function(a,b){a!==b&&(l(d,a),d.redraw())},!0),a.$watch("config.title",function(a){d.setTitle(a,!0)},!0),a.$watch("config.subtitle",function(a){d.setTitle(!0,a)},!0),a.$watch("config.loading",function(a){a?d.showLoading():d.hideLoading()}),a.$watch("config.credits.enabled",function(a){a?d.credits.show():d.credits&&d.credits.hide()}),a.$watch("config.useHighStocks",function(){c()}),angular.forEach(f,function(b){a.$watch("config."+b,function(a,c){a!==c&&a&&(d[b][0].update(a,!1),h(d[b][0],angular.copy(a)),d.redraw())},!0)}),a.$watch("config.options",function(a,b){a!==b&&c()},!0),a.$on("$destroy",function(){d&&d.destroy(),b.remove()})}}});