forked from GraFiddle/angular-chart
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathangular-chart.min.js
More file actions
1 lines (1 loc) · 14.9 KB
/
Copy pathangular-chart.min.js
File metadata and controls
1 lines (1 loc) · 14.9 KB
1
!function(){"use strict";var a=window.angular?window.angular:"undefined"!=typeof require?require("angular"):void 0,b=a.module("angularCircularNavigation",[]).directive("circular",["$compile",function(){return{restrict:"EA",scope:{options:"="},template:'<div class="cn-wrapper {{options.size}} items-{{options.items.length}}" ng-class="{\'opened-nav\': options.isOpen}"><ul><li ng-repeat="item in options.items"><a ng-hide="item.empty" ng-click="perform(options, item)" ng-class="{\'is-active\': item.isActive}" class="{{item.cssClass}}" title="{{item.title}}" style="background: {{item.background ? item.background : options.background}}; color: {{item.color ? item.color : options.color}};"><span>{{item.content}}</span></a></li></ul></div><button ng-click="toggleMenu()" class="cn-button {{options.button.size}}" ng-class="options.button.cssClass" style="background: {{options.button.background ? options.button.background : options.background}}; color: {{options.button.color ? options.button.color :options.color}};">{{options.content}}</button>',controller:["$scope","$element","$attrs",function(a){a.toggleMenu=function(){a.options.isOpen=!a.options.isOpen},a.perform=function(b,c){"function"==typeof c.onclick&&c.onclick(b,c),a.options.toggleOnClick&&a.toggleMenu()}}]}}]);"function"==typeof define&&define.amd?define("circular",["../../bower_components/angular/angular"],b):"undefined"!=typeof exports&&"undefined"!=typeof module&&(module.exports=b)}(),function(){"use strict";var a=window.angular?window.angular:"undefined"!=typeof require?require("angular"):void 0,b=a.module("angularChart",["angularCircularNavigation"]).directive("angularchart",["$compile","$q",function(b,c){{var d=window.c3?window.c3:"undefined"!=typeof require?require("c3"):void 0;window.d3?window.d3:"undefined"!=typeof require?require("d3"):void 0}return{restrict:"EA",scope:{dataset:"=",options:"=",schema:"="},link:function(e,f){e.options=e.options?e.options:{},e.chart=null,e.configuration={data:{x:"",keys:{value:[],x:""},types:{},names:[],colors:{},selection:{},groups:[],axes:{},onselected:function(a){e.selections.addSelected(a)},onunselected:function(a){e.selections.removeSelected(a)},onclick:a.noop},axis:{x:{label:"",tick:{}},y:{label:"",min:null,max:null,tick:{}},y2:{label:"",min:null,max:null,tick:{}}},tooltip:{format:{}},legend:{show:!0},subchart:{show:!1},zoom:{enabled:!1},grid:{x:{lines:[]},y:{lines:[]}}},e.addIdentifier=function(){e.dataAttributeChartID="chartid"+Math.floor(1000000001*Math.random()),a.element(f).attr("id",e.dataAttributeChartID),e.configuration.bindto="#"+e.dataAttributeChartID},e.updateOptions=function(a){e.disableOptionsWatcher=!0,e.$apply(a),e.disableOptionsWatcher=!1},e.updateChart=function(){delete e.configuration.data.columns,delete e.configuration.data.rows,delete e.configuration.data.json;var b=e.dataset;if(a.isArray(b)||(b=[]),e.options.data&&"columns"===e.options.data.orientation?e.configuration.data.columns=b:e.options.data&&"rows"===e.options.data.orientation?e.configuration.data.rows=b:e.configuration.data.json=b,e.configuration.data.type=e.options.type,e.configuration.axis.y.show=!1,e.configuration.axis.y2.show=!1,e.configuration.data.keys.value=[],a.isArray(e.options.rows)&&e.options.rows.forEach(function(a){(void 0===a.show||a.show)&&e.configuration.data.keys.value.push(a.key),a.name?e.configuration.data.names[a.key]=a.name:e.schema&&e.schema[a.key]&&e.schema[a.key].name&&(e.configuration.data.names[a.key]=e.schema[a.key].name),a.type||(a.type=e.options.type),e.configuration.data.types[a.key]=a.type,a.color&&(e.configuration.data.colors[a.key]=a.color),a.axis?(e.configuration.data.axes[a.key]=a.axis,e.configuration.axis[a.axis].show=!0):e.configuration.axis.y.show=!0}),e.options.selection&&e.options.selection.enabled&&(e.configuration.data.selection.enabled=e.options.selection.enabled,e.configuration.data.selection.multiple=e.options.selection.multiple),e.configuration.data.keys.x="",e.configuration.data.x="",e.configuration.axis.x.type="category",e.configuration.axis.x.tick.format=void 0,e.options.xAxis&&e.options.xAxis.key&&(e.configuration.data.keys.x=e.options.xAxis.key,e.configuration.data.x=e.options.xAxis.key,e.options.xAxis.displayFormat&&(e.configuration.axis.x.tick.format=e.options.xAxis.displayFormat),e.schema&&e.schema[e.options.xAxis.key])){var c=e.schema[e.options.xAxis.key];(c.prefix||c.postfix)&&(e.configuration.axis.x.tick.format=function(a){return c.prefix&&(a=c.prefix+" "+a),c.postfix&&(a+=c.postfix),a}),c.type&&"datetime"===c.type?(e.configuration.axis.x.type="timeseries",e.configuration.data.xFormat=c.format?c.format:"%Y-%m-%dT%H:%M:%S"):"numeric"===c.type&&(e.configuration.axis.x.type="numeric")}e.options.xAxis&&e.options.xAxis.tickOptions&&a.extend(e.configuration.axis.x.tick,e.options.xAxis.tickOptions),e.configuration.axis.x.label=e.options.xAxis&&e.options.xAxis.label?e.options.xAxis.label:"",e.configuration.data.groups=e.options.groups?e.options.groups:[],e.configuration.data.onclick=a.isFunction(e.options.onclick)?e.options.onclick:a.noop,e.configuration.subchart.show=e.options.subchart?e.options.subchart.show:!1,e.configuration.axis.y.label="",e.configuration.axis.y.max=null,e.configuration.axis.y.min=null,e.configuration.axis.y.tick.format=void 0,a.isObject(e.options.yAxis)&&(a.isDefined(e.options.yAxis.label)&&(e.configuration.axis.y.label=e.options.yAxis.label),a.isDefined(e.options.yAxis.max)&&(e.configuration.axis.y.max=e.options.yAxis.max),a.isDefined(e.options.yAxis.min)&&(e.configuration.axis.y.min=e.options.yAxis.min),a.isDefined(e.options.yAxis.displayFormat)&&(e.configuration.axis.y.tick.format=e.options.yAxis.displayFormat)),e.options.yAxis&&e.options.yAxis.tickOptions&&a.extend(e.configuration.axis.y.tick,e.options.yAxis.tickOptions),a.isObject(e.options.y2Axis)&&(e.configuration.axis.y2.label=a.isUndefined(e.options.y2Axis.label)?"":e.options.y2Axis.label,e.configuration.axis.y2.max=a.isUndefined(e.options.y2Axis.max)?null:e.options.y2Axis.max,e.configuration.axis.y2.min=a.isUndefined(e.options.y2Axis.min)?null:e.options.y2Axis.min,e.configuration.axis.y2.tick.format=a.isUndefined(e.options.y2Axis.displayFormat)?null:e.options.y2Axis.displayFormat),e.configuration.tooltip.format={},e.options.tooltip&&e.options.tooltip.displayFormat&&(e.configuration.tooltip.format.value=e.options.tooltip.displayFormat),e.configuration.legend.show=e.options.legend?void 0===e.options.legend.selector?e.options.legend.show:!e.options.legend.selector:!0,e.configuration.grid.y.lines=[],e.configuration.grid.x.lines=[],e.options.annotation&&"pie"!==e.options.type&&"donut"!==e.options.type&&e.options.annotation.forEach(function(a){switch(a.axis){case"x":e.configuration.grid.x.lines.push({text:a.label,value:a.value});break;case"y":e.configuration.grid.y.lines.push({text:a.label,value:a.value});break;case"y2":e.configuration.grid.y.lines.push({text:a.label,value:a.value,axis:"y2"})}}),e.configuration.size=e.options.size?e.options.size:{},e.options.zoom&&(e.configuration.zoom.enabled=e.options.zoom.enabled),e.configuration.zoom.onzoomend=function(a){e.updateOptions(function(){e.options.zoom.range=a}),e.options.zoom.onzoom&&e.options.zoom.onzoom()},e.configuration.subchart.onbrush=function(a){e.updateOptions(function(){e.options.zoom.range=a}),e.options.zoom.onzoom&&e.options.zoom.onzoom()},e.options.donut&&(e.configuration.donut=e.options.donut),window.onresize=null,e.chart=d.generate(e.configuration),e.chooseXAxis(),e.customLegend(),e.chooseChartType(),e.toggleSubchartLink(),a.element(f).removeAttr("style"),e.options.zoom&&e.options.zoom.range&&e.chart.zoom(e.options.zoom.range)},e.chooseXAxis=function(){if("pie"!==e.options.type&&"donut"!==e.options.type&&e.options.xAxis&&e.options.xAxis.selector){var c=a.element('<span class="chooseXAxis"/>');c.append('<select ng-hide="options.type === \'pie\' || options.type === \'donut\'" ng-model="options.xAxis.key" class="form-control"><option ng-repeat="col in schema" value="{{col.id}}" ng-selected="col.id===options.xAxis.key">{{col.name ? col.name : col.id}}</option></select>'),b(c)(e),f.append(c)}},e.chooseChartType=function(){if(e.options.typeSelector){var c=a.element('<div class="chooseChartType btn-group">');c.append("<button ng-click=\"changeChartType('scatter')\" ng-class=\"{'active': options.type === 'scatter'}\" class=\"btn btn-default\">Scatter</button>"),c.append("<button ng-click=\"changeChartType('bar')\" ng-class=\"{'active': options.type === 'bar'}\" class=\"btn btn-default\">Bar</button>"),c.append("<button ng-click=\"changeChartType('line')\" ng-class=\"{'active': options.type === 'line'}\" class=\"btn btn-default\">Line</button>"),c.append("<button ng-click=\"changeChartType('pie')\" ng-class=\"{'active': options.type === 'pie'}\" class=\"btn btn-default\">Pie</button>"),b(c)(e),f.prepend(c)}},e.changeChartType=function(a){e.options.type=a,e.options.rows.forEach(function(b){b.type=a})},e.toggleSubchart=function(){e.options.subchart.show=!e.options.subchart.show,e.options.zoom&&e.options.zoom.range&&delete e.options.zoom.range},e.toggleSubchartLink=function(){if("pie"!==e.options.type&&"donut"!==e.options.type&&e.options.subchart&&e.options.subchart.selector){var c=a.element('<span class="toggleSubchart"/>');c.append(e.options.subchart.show?'<a title="hide navigation subchart" ng-click="toggleSubchart()"><i class="flaticon-hide"></i> hide navigator</a>':'<a title="show navigation subchart" ng-click="toggleSubchart()"><i class="flaticon-show"></i> show navigator</a>'),b(c)(e),f.append(c)}},e.customLegend=function(){if(e.options.legend&&e.options.legend.selector){var c=a.element('<div class="customLegend"><span ng-repeat="row in options.rows" ng-if="row.key !== options.xAxis.key" class="customLegend-item" ><circular options="rowEdit[$index]"></circular><span class="customLegend-label" data-id="{{row.name}}">{{(schema[row.key] && schema[row.key].name) ? schema[row.key].name : (row.name ? row.name : row.key)}}</span></span></div>');b(c)(e),f.prepend(c);var d={line:"flaticon-line",spline:"flaticon-line",area:"flaticon-area","area-spline":"flaticon-area",scatter:"flaticon-scatter",bar:"flaticon-bar",pie:"flaticon-pie",donut:"flaticon-pie",step:"flaticon-line","area-step":"flaticon-area"};e.switchAxis=function(a,b){e.options.rows[a.index].axis=b.axis,e.options.rows[a.index].show=!0},e.switchType=function(a,b){e.options.rows[a.index].type=b.type,e.options.rows[a.index].show=!0},e.switchShow=function(a,b){e.options.rows[a.index].show=b.show},e.rowEdit=[];for(var g in e.options.rows)if(!e.options.xAxis||e.options.xAxis.key!==e.options.rows[g].key){var h=void 0===e.options.rows[g].show||e.options.rows[g].show===!0;e.rowEdit[g]={row:"sales",index:g,isOpen:!1,toggleOnClick:!0,background:h?e.options.rows[g].color||e.chart.color(e.options.rows[g].key):"gray",color:"white",size:"",button:{content:"",cssClass:d[e.options.rows[g].type]||d.spline,background:h?e.options.rows[g].color||e.chart.color(e.options.rows[g].key):"gray",color:"white",size:"small"},items:[{title:"plot data on right axis",axis:"y2",onclick:e.switchAxis,isActive:"y2"===e.options.rows[g].axis,cssClass:"flaticon-right"},{title:"plot data on left axis",axis:"y",onclick:e.switchAxis,isActive:"y"===e.options.rows[g].axis,cssClass:"flaticon-left"},{empty:!0},{title:"display data as line chart",type:"spline",onclick:e.switchType,isActive:"spline"===e.options.rows[g].type||"line"===e.options.rows[g].type,cssClass:d.spline},{title:"display data as area chart",type:"area-spline",onclick:e.switchType,isActive:"area"===e.options.rows[g].type||"area-spline"===e.options.rows[g].type,cssClass:d["area-spline"]},{title:"display data as bar chart",type:"bar",onclick:e.switchType,isActive:"bar"===e.options.rows[g].type,cssClass:d.bar},{title:"display data as scatter plot",type:"scatter",onclick:e.switchType,isActive:"scatter"===e.options.rows[g].type,cssClass:d.scatter},{empty:!0},{title:"show this data",show:!0,onclick:e.switchShow,isActive:h,cssClass:"flaticon-show"},{title:"hide this data",show:!1,onclick:e.switchShow,isActive:!h,cssClass:"flaticon-hide"}]}}}},e.selections={avoidSelections:!1,addSelected:function(b){this.avoidSelections||(a.isObject(e.options.selection)||(e.options.selection={}),a.isArray(e.options.selection.selected)||(e.options.selection.selected=[]),e.$apply(function(){e.options.selection.selected.push(b)}),e.options.selection.onselected&&e.$apply(function(){e.options.selection.onselected()}))},removeSelected:function(b){!this.avoidSelections&&a.isObject(e.options.selection)&&a.isArray(e.options.selection.selected)&&(e.$apply(e.options.selection.selected=e.options.selection.selected.filter(function(a){return a.id!==b.id||a.index!==b.index})),e.options.selection.onunselected&&e.$apply(function(){e.options.selection.onunselected()}))},performSelections:function(a){this.avoidSelections=!0,a.forEach(function(a){e.chart.select([a.id],[a.index])}),this.avoidSelections=!1},performUnselections:function(a){this.avoidSelections=!0,a.forEach(function(a){e.chart.unselect([a.id],[a.index])}),this.avoidSelections=!1},watchOptions:function(a,b){var c=b.selection&&b.selection.selected?b.selection.selected:[],d=a.selection&&a.selection.selected?a.selection.selected:[],e=d.filter(function(a){var b=!0;return c.forEach(function(c){return c.id===a.id&&c.index===a.index?b=!1:void 0}),b}),f=c.filter(function(a){var b=!0;return d.forEach(function(c){return c.id===a.id&&c.index===a.index?b=!1:void 0}),b}),g=!1;return e.length>0&&(this.performSelections(e),g=!0),f.length>0&&(this.performUnselections(f),g=!0),g}},e.startOptionsWatcher=function(){e.$watch("options",function(b,c){e.disableOptionsWatcher||e.selections.watchOptions(b,c)||(c.type!==b.type&&(e.chart.transform(b.type),["pie","donut"].indexOf(b.type)>=0&&e.options.rows.forEach(function(a){delete a.type})),(a.isObject(b.data)&&!a.isObject(c.data)||!a.equals(b.data,c.data))&&e.startDatasetWatcher(),e.updateChart())},!0)},e.smallWatcher=void 0,e.bigWatcher=void 0,e.startSmallDatasetWatcher=function(){return e.$watchCollection("dataset",function(b,c){a.equals(b,c)||(e.updateChart(),e.startDatasetWatcher())})},e.startBigDatasetWatcher=function(){return e.$watch(function(){return e.dataset.length},function(b,c){a.equals(b,c)||(e.updateChart(),e.startDatasetWatcher())})},e.startDatasetWatcher=function(){e.chooseDatasetWatcher()},e.chooseDatasetWatcher=function(){var b=e.options.data&&e.options.data.watchLimit?e.options.data.watchLimit:100,c=0;a.isArray(e.dataset)&&(c=e.dataset.length),b>c?(e.smallWatcher||(e.smallWatcher=e.startSmallDatasetWatcher()),e.bigWatcher&&(e.bigWatcher(),e.bigWatcher=void 0)):(e.bigWatcher||(e.bigWatcher=e.startBigDatasetWatcher()),e.smallWatcher&&(e.smallWatcher(),e.smallWatcher=void 0))},e.registerDestroyListener=function(){e.$on("$destroy",function(){e.chart.destroy(),f.remove()})},e.addIdentifier(),c.all([c.when(e.dataset).then(function(a){e.dataset=a}),c.when(e.options).then(function(a){e.options=a}),c.when(e.schema).then(function(a){e.schema=a})]).then(function(){e.startOptionsWatcher(),e.startDatasetWatcher(),e.registerDestroyListener()})}}}]);"function"==typeof define&&define.amd?define("angularChart",["../../bower_components/c3/c3","angular"],b):"undefined"!=typeof exports&&"undefined"!=typeof module&&(module.exports=b)}();