Commit 9819a40325b9a716c2248acf941ecfb2a536ca09

Authored by Renato De Donato
1 parent 10349394

bubble scatter treemap + bug fix

controllets/select-visualization-controllet/select-datalet-inputs.html
... ... @@ -223,9 +223,19 @@
223 223 description = inputs[2].description;
224 224 selection = inputs[2].selection;
225 225 temp = [inputs[0], inputs[1]];
226   - for (var i = 3; i < this.fields.length; i++)
227   - temp.push({name: name + " " + (i-2), description: description, selection: selection});
  226 + temp.push({name: name + " 1", description: description, selection: selection});
  227 + for (var i = 4; i < this.fields.length; i++)
  228 + temp.push({name: name + " " +(i-2), description: description, selection: selection});
228 229 }
  230 +// else if (inputs.length > 4 && inputs[4].selection == "+") {//bubble --> multiple bubble content
  231 +// name = inputs[4].name;
  232 +// description = inputs[4].description;
  233 +// selection = inputs[4].selection;
  234 +// temp = [inputs[0], inputs[1], inputs[2], inputs[3]];
  235 +// temp.push({name: name + " 1", description: description, selection: selection});
  236 +// for (var i = 6; i < this.fields.length; i++)
  237 +// temp.push({name: name + " " + (i-4), description: description, selection: selection});
  238 +// }
229 239  
230 240 this.inputs = this._copy(temp);
231 241  
... ... @@ -234,21 +244,23 @@
234 244  
235 245 fireReady : function() {
236 246 if(this._isReady())
237   - this.fire('select_visualization_inputs_ready');
  247 + this.fire('select_visualization_inputs_ready', {isReady: true});
  248 + else
  249 + this.fire('select_visualization_inputs_ready', {isReady: false});
238 250 },
239 251  
240 252 _isReady : function() {
241 253 var fire = true;
242 254 for (var i = 0; i < this.selectedFields.length; i++) {
243   - if (!this.selectedFields[i] && this.inputs[i].selection != "*")
  255 + if (!this.selectedFields[i] && this.inputs[i].selection != "+" && this.inputs[i].selection != "*" && this.inputs[i].selection != "?")
244 256 return false;
245   - if(this.inputs[i].selection == "*")
  257 + if(this.inputs[i].selection == "+")
246 258 fire = false;
247 259 }
248 260  
249 261 if(!fire) {
250 262 for (var i = 0; i < this.selectedFields.length; i++) {
251   - if (this.selectedFields[i] && this.inputs[i].selection == "*") {
  263 + if (this.selectedFields[i] && this.inputs[i].selection == "+") {
252 264 fire = true;
253 265 break;
254 266 }
... ... @@ -430,9 +442,15 @@
430 442 if(key.indexOf("Column") > -1) {
431 443 return ln["Column" + "_" +ln["localization"]] + key.slice(-2);
432 444 }
  445 + if(key.indexOf("Level") > -1) {
  446 + return ln["Level" + "_" +ln["localization"]] + key.slice(-2);
  447 + }
433 448 if(key.indexOf("BalloonContent") > -1) {
434 449 return ln["BalloonContent" + "_" +ln["localization"]] + key.slice(-2);
435 450 }
  451 +// if(key.indexOf("BubbleContent") > -1) {
  452 +// return ln["BubbleContent" + "_" +ln["localization"]] + key.slice(-2);
  453 +// }
436 454  
437 455 return ln[key + "_" +ln["localization"]];
438 456 },
... ...
controllets/select-visualization-controllet/select-datalet-inputs_series.html
... ... @@ -221,7 +221,9 @@
221 221  
222 222 fireReady : function() {
223 223 if(this.selectedFields[0] != "" && this.selectedFields[1] != "")
224   - this.fire('select_visualization_inputs_ready');
  224 + this.fire('select_visualization_inputs_ready', {isReady: true});
  225 + else
  226 + this.fire('select_visualization_inputs_ready', {isReady: false});
225 227 },
226 228  
227 229 _reset : function() {
... ... @@ -310,7 +312,7 @@
310 312 this._setAggregators();
311 313 },
312 314  
313   - _setAggregatorsFields : function(e){
  315 + _setAggregatorsFields : function(){
314 316 this.async(function() {
315 317 var c_menu = $("#calculate_0").find("paper-menu")[0];
316 318 var selected = c_menu.selected > 0 ? c_menu.selected : 0;
... ...
controllets/select-visualization-controllet/select-datalet-options.html
... ... @@ -126,7 +126,7 @@
126 126 <div class="input_header"><span id="baseInfo"></span></div>
127 127  
128 128 <div class="inputs">
129   - <paper-input id="base_title" maxlength="32" class="base_input" on-change="_updateParams"></paper-input>
  129 + <paper-input id="base_title" maxlength="32" class="base_input" on-change="_updateParams" value=""></paper-input>
130 130 </div>
131 131  
132 132 <div class="inputs">
... ...
controllets/select-visualization-controllet/select-visualization-controllet.html
... ... @@ -312,7 +312,12 @@
312 312 inputs.fireReady();
313 313 },
314 314  
315   - _loadDatalet : function(){
  315 + _loadDatalet : function(e){
  316 + if(!e.detail.isReady) {
  317 + this.$.datalet_selection_datalet_placeholder.innerHTML = "";
  318 + return;
  319 + }
  320 +
316 321 var inputs = this._getInputs();
317 322  
318 323 this.selectedFields = inputs.getSelectedFields();
... ...
datalets/bubblechart-datalet/bubblechart-datalet.html
... ... @@ -30,7 +30,7 @@
30 30 -->
31 31  
32 32 <link rel="import" href="../highcharts-datalet/highcharts-datalet.html">
33   -<script src="http://code.highcharts.com/highcharts-more.js"></script>
  33 +<!--<script src="http://code.highcharts.com/highcharts-more.js"></script>-->
34 34  
35 35 <!--
36 36 `bubblechart` is a bubbles chart datalet based on highcharts project <http://www.highcharts.com/>
... ... @@ -57,7 +57,7 @@ Examples:
57 57 @group datalets
58 58 -->
59 59  
60   -<dom-module name="bubblechart-datalet">
  60 +<dom-module id="bubblechart-datalet">
61 61 <template>
62 62 <highcharts-datalet id="charts" data-url="{{dataUrl}}" fields="{{fields}}" data="{{data}}" title="{{title}}" description="{{description}}"></highcharts-datalet>
63 63 </template>
... ... @@ -69,128 +69,91 @@ Examples:
69 69 * @method presentData
70 70 */
71 71 presentData: function() {
72   - var categoryName = [];
73   - var color = {};
74   - var bubblechartSeriesData = {};
75   - var bcserie = [];
  72 + if(this.data.length == 5) {// multiseries
  73 + var x = this.data[4]["data"];
76 74  
77   - BubblechartArr = [];
78   - var dataTmp = [];
79   -
80   - //Example 1: No Series name is specified in the query
81   - if(this.data.length == 3){
82   - for (var i = 0; i < this.data[0].data.length; i++) {
83   - BubblechartArr = [this.data[0].data[i], parseFloat(this.data[1].data[i]), parseFloat(this.data[2].data[i])];
84   - dataTmp.push(BubblechartArr)
85   - }
86   - color = {
87   - fillColor: {
88   - radialGradient: {cx: 0.4, cy: 0.3, r: 0.7},
89   - stops: [
90   - [0, 'rgba(255,255,255,0.5)']
91   - ]
92   - }
93   - }
94   - //add data to the series
95   - bubblechartSeriesData = {
96   - name: "Series",
97   - data: dataTmp,
98   - marker: color
99   - }
100   - bcserie.push(bubblechartSeriesData);
101   - }
102   - //Example 2: A multi-series bubbles chart
103   - else{
104   - var categoryNameDuplicateValue = [];
105   - for (i = 0; i < this.data[0].data.length; i++) {
106   - categoryNameDuplicateValue.push(this.data[3].data[i]);
107   - }
108   - categoryName = categoryNameDuplicateValue.filter(function (itm, i, categoryNameDuplicateValue) {
109   - return i == categoryNameDuplicateValue.indexOf(itm);
  75 + var categories = x.filter(function (item, pos) {
  76 + return x.indexOf(item) == pos;
110 77 });
111   - for (var index = 0; index < categoryName.length; index++) {
112   - for (var i = 0; i < this.data[0].data.length; i++) {
113   - if (this.data[3].data[i] == categoryName[index]) {
114   - BubblechartArr = [this.data[0].data[i], this.data[1].data[i], parseFloat(this.data[2].data[i])];
115   - dataTmp.push(BubblechartArr);
116   - //A different color for each series
117   -/* blocco usato per 3d
118   - color = {
119   - fillColor: {
120   - radialGradient: {cx: 0.4, cy: 0.3, r: 0.7},
121   - stops: [
122   - [0, 'rgba(255,255,255,0.5)'],
123   - [1, Highcharts.Color(Highcharts.getOptions().colors[index]).setOpacity(0.5).get('rgba')]
124   - ]
125   - }
126   - }
127   -*/
  78 +
  79 + var bubbleSeries = [];
  80 + var series = [];
  81 + var point = [];
  82 +
  83 + for (var i = 0; i < categories.length; i++) {
  84 + for (var j = 0; j < x.length; j++) {
  85 + if (this.data[4].data[j] == categories[i]) {
  86 + point = {x: this.data[0].data[j], y: this.data[1].data[j], z: this.data[2].data[j], content: this.data[3].data[j]};
  87 + series.push(point);
128 88 }
129 89 }
130   - //add data to the series
131   - bubblechartSeriesData = {
132   - name: "Series: " + categoryName[index],
133   - data: dataTmp,
134   - marker: color
135   - }
136 90  
137   - bcserie.push(bubblechartSeriesData);
138   - dataTmp = [];
  91 + bubbleSeries.push({name: categories[i], data: series});
  92 + series = [];
  93 + }
  94 +
  95 + this.properties.series = bubbleSeries;
  96 + this._component.legend = true;
  97 + }
  98 + else {// == 4
  99 + var bubbleSeries = [];
  100 + var series = [];
  101 + var point = [];
  102 +
  103 + for (var j = 0; j < this.data[0]["data"].length; j++) {
  104 + point = {x: this.data[0].data[j], y: this.data[1].data[j], z: this.data[2].data[j], content: this.data[3].data[j]};
  105 + series.push(point);
139 106 }
  107 +
  108 + bubbleSeries.push({data: series});
  109 +
  110 + this.properties.series = bubbleSeries;
  111 + this._component.legend = false;
140 112 }
141   - $(this._component.$.charts.$.container).highcharts({
  113 +
  114 + options = {
142 115 chart: {
143 116 type: 'bubble',
144   - plotBorderWidth: 1,
145   - zoomType: 'xy'
  117 + zoomType: 'xy',
  118 + plotBorderWidth: 1
146 119 },
147   - legend: {
148   - enabled: true
  120 + title: {
  121 + text: this._component.title
  122 + },
  123 + subtitle: {
  124 + text: this._component.description
149 125 },
150 126 xAxis: {
151   - categories: this.properties.categories.value,
152 127 title: {
153 128 text: this._component.xAxisLabel
154 129 }
155 130 },
156 131 yAxis: {
157   - categories: this.properties.categories.value,
158 132 title: {
159   - text: this._component.yAxisLabel
  133 + text: this._component.yAxisLabel,
160 134 }
161 135 },
162   - title: {
163   - text: this._component.Title
164   - },
165   - subtitle: {
166   - text: this._component.SubTitle
167   - },
168   - //A custom tooltip
169   - tooltip: {
170   - shared: true,
171   - useHTML: true,
172   - headerFormat:
173   - '<table ><tr><td style="color: {series.color}">{series.name}</td></tr>' +
174   - '<tr><td <b> {point.key}</b> , <b>{point.y}</b></tr>',
175   - pointFormat:
176   - '<td style="text-align: right"><b>{point.z}</b></td></tr>',
177   - footerFormat: '</table>',
178   - followPointer: true
  136 + legend: {
  137 + enabled: this._component.legend,
179 138 },
180 139 plotOptions: {
181 140 series: {
182 141 dataLabels: {
183   - enabled: false, //enable for label for each bubble
184   - format: '{point.z}'
  142 + enabled: true,
  143 + format: '{point.content}'
185 144 }
186 145 }
187 146 },
188   - //hide link HighChart
189 147 credits: {
190 148 enabled: false
191 149 },
192   - series: bcserie
193   - });
  150 + series: this.properties.series
  151 + };
  152 +
  153 + if(this._component.theme != "themeBase" && this._component.theme != "")
  154 + jQuery.extend(true, options, Highcharts[this._component.theme]);
  155 +
  156 + $(this._component.$.charts.$.container).highcharts(options);
194 157 }
195 158 };
196 159 /**
... ... @@ -199,50 +162,18 @@ Examples:
199 162 BubblechartDatalet = Polymer({
200 163 is: 'bubblechart-datalet',
201 164 properties: {
202   - /**
203   - * It's the label for X axis
204   - *
205   - * @attribute xAxisLabel
206   - * @type String
207   - * @default ''
208   - */
209 165 xAxisLabel: {
210 166 type: String,
211 167 value: ""
212 168 },
213   - /**
214   - * It's the label for Y axis
215   - *
216   - * @attribute yAxisLabel
217   - * @type String
218   - * @default ''
219   - */
220 169 yAxisLabel: {
221 170 type: String,
222 171 value: ""
223 172 },
224   - /**
225   - * It's the title of the chart
226   - *
227   - * @attribute title
228   - * @type Strig
229   - * @default ''
230   - */
231   - Title: {
232   - type: String,
233   - value: ""
234   - },
235   - SubTitle: {
236   - type: String,
237   - value: ""
  173 + theme : {
  174 + type : String,
  175 + value : ""
238 176 },
239   - /**
240   - * It's the component behavior
241   - *
242   - * @attribute behavior
243   - * @type Object
244   - * @default {}
245   - */
246 177 behavior : {
247 178 type : Object,
248 179 value : {}
... ... @@ -256,7 +187,7 @@ Examples:
256 187 */
257 188 ready: function(){
258 189 this.behavior = $.extend(true, {}, HighchartsComponentBehavior, BubblechartBehavior);
259   - this.async(function(){this.behavior.init(this)},1);
  190 + this.async(function(){this.behavior.init(this)},0);
260 191 }
261 192 });
262 193 </script>
... ...
datalets/bubblechart-datalet/bubblechart-datalet.png

790 Bytes | W: | H:

3.28 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
datalets/datatable-datalet/js/DataTables/datatables.css
... ... @@ -18,6 +18,22 @@
18 18  
19 19 /* Layout helpers
20 20 ----------------------------------*/
  21 +/*spod theme conflict*/
  22 +datatable-datalet input[type=search] {
  23 + border: 2px inset;
  24 + /*height: 15px;*/
  25 + /*width: 175px;*/
  26 + height: auto;
  27 + width: auto;
  28 +}
  29 +
  30 +datatable-datalet input[type=search]:focus:not([readonly]) {
  31 + border: 2px inset;
  32 + box-shadow: none;
  33 +}
  34 +/*input[type=search]:disabled, input[type=search][readonly="readonly"] {}*/
  35 +/*spod theme conflict*/
  36 +
21 37 .ui-helper-hidden {
22 38 display: none;
23 39 }
... ...
datalets/highcharts-datalet/highcharts-datalet.html
... ... @@ -62,6 +62,7 @@ Example :
62 62  
63 63 <script src="static/js/highcharts.js"></script>
64 64 <script src="static/js/exporting.js"></script>
  65 + <script src="static/js/highcharts-more.js"></script>
65 66 <script src="static/themes/themes.js"></script>
66 67  
67 68 <script>
... ...
datalets/highcharts-datalet/static/js/highcharts-more.js 0 → 100644
  1 +/*
  2 + Highcharts JS v4.2.3 (2016-02-08)
  3 +
  4 + (c) 2009-2016 Torstein Honsi
  5 +
  6 + License: www.highcharts.com/license
  7 + */
  8 +(function(m){typeof module==="object"&&module.exports?module.exports=m:m(Highcharts)})(function(m){function J(a,b,c){this.init(a,b,c)}var O=m.arrayMin,P=m.arrayMax,s=m.each,F=m.extend,t=m.merge,Q=m.map,q=m.pick,A=m.pInt,o=m.getOptions().plotOptions,k=m.seriesTypes,u=m.extendClass,K=m.splat,v=m.wrap,L=m.Axis,y=m.Tick,G=m.Point,R=m.Pointer,S=m.CenteredSeriesMixin,B=m.TrackerMixin,w=m.Series,x=Math,E=x.round,C=x.floor,M=x.max,T=m.Color,r=function(){};F(J.prototype,{init:function(a,b,c){var d=this,g=
  9 + d.defaultOptions;d.chart=b;d.options=a=t(g,b.angular?{background:{}}:void 0,a);(a=a.background)&&s([].concat(K(a)).reverse(),function(a){var g=a.backgroundColor,b=c.userOptions,a=t(d.defaultBackgroundOptions,a);if(g)a.backgroundColor=g;a.color=a.backgroundColor;c.options.plotBands.unshift(a);b.plotBands=b.plotBands||[];b.plotBands!==c.options.plotBands&&b.plotBands.unshift(a)})},defaultOptions:{center:["50%","50%"],size:"85%",startAngle:0},defaultBackgroundOptions:{shape:"circle",borderWidth:1,borderColor:"silver",
  10 + backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,"#FFF"],[1,"#DDD"]]},from:-Number.MAX_VALUE,innerRadius:0,to:Number.MAX_VALUE,outerRadius:"105%"}});var z=L.prototype,y=y.prototype,U={getOffset:r,redraw:function(){this.isDirty=!1},render:function(){this.isDirty=!1},setScale:r,setCategories:r,setTitle:r},N={isRadial:!0,defaultRadialGaugeOptions:{labels:{align:"center",x:0,y:null},minorGridLineWidth:0,minorTickInterval:"auto",minorTickLength:10,minorTickPosition:"inside",minorTickWidth:1,
  11 + tickLength:10,tickPosition:"inside",tickWidth:2,title:{rotation:0},zIndex:2},defaultRadialXOptions:{gridLineWidth:1,labels:{align:null,distance:15,x:0,y:null},maxPadding:0,minPadding:0,showLastLabel:!1,tickLength:0},defaultRadialYOptions:{gridLineInterpolation:"circle",labels:{align:"right",x:-3,y:-2},showLastLabel:!1,title:{x:4,text:null,rotation:90}},setOptions:function(a){a=this.options=t(this.defaultOptions,this.defaultRadialOptions,a);if(!a.plotBands)a.plotBands=[]},getOffset:function(){z.getOffset.call(this);
  12 + this.chart.axisOffset[this.side]=0;this.center=this.pane.center=S.getCenter.call(this.pane)},getLinePath:function(a,b){var c=this.center,b=q(b,c[2]/2-this.offset);return this.chart.renderer.symbols.arc(this.left+c[0],this.top+c[1],b,b,{start:this.startAngleRad,end:this.endAngleRad,open:!0,innerR:0})},setAxisTranslation:function(){z.setAxisTranslation.call(this);if(this.center)this.transA=this.isCircular?(this.endAngleRad-this.startAngleRad)/(this.max-this.min||1):this.center[2]/2/(this.max-this.min||
  13 +1),this.minPixelPadding=this.isXAxis?this.transA*this.minPointOffset:0},beforeSetTickPositions:function(){this.autoConnect&&(this.max+=this.categories&&1||this.pointRange||this.closestPointRange||0)},setAxisSize:function(){z.setAxisSize.call(this);if(this.isRadial){this.center=this.pane.center=m.CenteredSeriesMixin.getCenter.call(this.pane);if(this.isCircular)this.sector=this.endAngleRad-this.startAngleRad;this.len=this.width=this.height=this.center[2]*q(this.sector,1)/2}},getPosition:function(a,
  14 + b){return this.postTranslate(this.isCircular?this.translate(a):0,q(this.isCircular?b:this.translate(a),this.center[2]/2)-this.offset)},postTranslate:function(a,b){var c=this.chart,d=this.center,a=this.startAngleRad+a;return{x:c.plotLeft+d[0]+Math.cos(a)*b,y:c.plotTop+d[1]+Math.sin(a)*b}},getPlotBandPath:function(a,b,c){var d=this.center,g=this.startAngleRad,e=d[2]/2,j=[q(c.outerRadius,"100%"),c.innerRadius,q(c.thickness,10)],l=/%$/,i,f=this.isCircular;this.options.gridLineInterpolation==="polygon"?
  15 + d=this.getPlotLinePath(a).concat(this.getPlotLinePath(b,!0)):(a=Math.max(a,this.min),b=Math.min(b,this.max),f||(j[0]=this.translate(a),j[1]=this.translate(b)),j=Q(j,function(a){l.test(a)&&(a=A(a,10)*e/100);return a}),c.shape==="circle"||!f?(a=-Math.PI/2,b=Math.PI*1.5,i=!0):(a=g+this.translate(a),b=g+this.translate(b)),d=this.chart.renderer.symbols.arc(this.left+d[0],this.top+d[1],j[0],j[0],{start:Math.min(a,b),end:Math.max(a,b),innerR:q(j[1],j[0]-j[2]),open:i}));return d},getPlotLinePath:function(a,
  16 + b){var c=this,d=c.center,g=c.chart,e=c.getPosition(a),j,l,i;c.isCircular?i=["M",d[0]+g.plotLeft,d[1]+g.plotTop,"L",e.x,e.y]:c.options.gridLineInterpolation==="circle"?(a=c.translate(a))&&(i=c.getLinePath(0,a)):(s(g.xAxis,function(a){a.pane===c.pane&&(j=a)}),i=[],a=c.translate(a),d=j.tickPositions,j.autoConnect&&(d=d.concat([d[0]])),b&&(d=[].concat(d).reverse()),s(d,function(e,b){l=j.getPosition(e,a);i.push(b?"L":"M",l.x,l.y)}));return i},getTitlePosition:function(){var a=this.center,b=this.chart,
  17 + c=this.options.title;return{x:b.plotLeft+a[0]+(c.x||0),y:b.plotTop+a[1]-{high:0.5,middle:0.25,low:0}[c.align]*a[2]+(c.y||0)}}};v(z,"init",function(a,b,c){var h;var d=b.angular,g=b.polar,e=c.isX,j=d&&e,l,i;i=b.options;var f=c.pane||0;if(d){if(F(this,j?U:N),l=!e)this.defaultRadialOptions=this.defaultRadialGaugeOptions}else if(g)F(this,N),this.defaultRadialOptions=(l=e)?this.defaultRadialXOptions:t(this.defaultYAxisOptions,this.defaultRadialYOptions);a.call(this,b,c);if(!j&&(d||g)){a=this.options;if(!b.panes)b.panes=
  18 + [];this.pane=(h=b.panes[f]=b.panes[f]||new J(K(i.pane)[f],b,this),f=h);f=f.options;b.inverted=!1;i.chart.zoomType=null;this.startAngleRad=b=(f.startAngle-90)*Math.PI/180;this.endAngleRad=i=(q(f.endAngle,f.startAngle+360)-90)*Math.PI/180;this.offset=a.offset||0;if((this.isCircular=l)&&c.max===void 0&&i-b===2*Math.PI)this.autoConnect=!0}});v(z,"autoLabelAlign",function(a){if(!this.isRadial)return a.apply(this,[].slice.call(arguments,1))});v(y,"getPosition",function(a,b,c,d,g){var e=this.axis;return e.getPosition?
  19 + e.getPosition(c):a.call(this,b,c,d,g)});v(y,"getLabelPosition",function(a,b,c,d,g,e,j,l,i){var f=this.axis,h=e.y,n=20,k=e.align,m=(f.translate(this.pos)+f.startAngleRad+Math.PI/2)/Math.PI*180%360;f.isRadial?(a=f.getPosition(this.pos,f.center[2]/2+q(e.distance,-25)),e.rotation==="auto"?d.attr({rotation:m}):h===null&&(h=f.chart.renderer.fontMetrics(d.styles.fontSize).b-d.getBBox().height/2),k===null&&(f.isCircular?(this.label.getBBox().width>f.len*f.tickInterval/(f.max-f.min)&&(n=0),k=m>n&&m<180-n?
  20 + "left":m>180+n&&m<360-n?"right":"center"):k="center",d.attr({align:k})),a.x+=e.x,a.y+=h):a=a.call(this,b,c,d,g,e,j,l,i);return a});v(y,"getMarkPath",function(a,b,c,d,g,e,j){var l=this.axis;l.isRadial?(a=l.getPosition(this.pos,l.center[2]/2+d),b=["M",b,c,"L",a.x,a.y]):b=a.call(this,b,c,d,g,e,j);return b});o.arearange=t(o.area,{lineWidth:1,marker:null,threshold:null,tooltip:{pointFormat:'<span style="color:{series.color}">\u25cf</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'},
  21 + trackByArea:!0,dataLabels:{align:null,verticalAlign:null,xLow:0,xHigh:0,yLow:0,yHigh:0},states:{hover:{halo:!1}}});k.arearange=u(k.area,{type:"arearange",pointArrayMap:["low","high"],dataLabelCollections:["dataLabel","dataLabelUpper"],toYData:function(a){return[a.low,a.high]},pointValKey:"low",deferTranslatePolar:!0,highToXY:function(a){var b=this.chart,c=this.xAxis.postTranslate(a.rectPlotX,this.yAxis.len-a.plotHigh);a.plotHighX=c.x-b.plotLeft;a.plotHigh=c.y-b.plotTop},translate:function(){var a=
  22 + this,b=a.yAxis;k.area.prototype.translate.apply(a);s(a.points,function(a){var d=a.low,g=a.high,e=a.plotY;g===null||d===null?a.isNull=!0:(a.plotLow=e,a.plotHigh=b.translate(g,0,1,0,1))});this.chart.polar&&s(this.points,function(b){a.highToXY(b)})},getGraphPath:function(){var a=this.points,b=[],c=[],d=a.length,g=w.prototype.getGraphPath,e,j,l;l=this.options;for(var i=l.step,d=a.length;d--;)e=a[d],!e.isNull&&(!a[d+1]||a[d+1].isNull)&&c.push({plotX:e.plotX,plotY:e.plotLow}),j={plotX:e.plotX,plotY:e.plotHigh,
  23 + isNull:e.isNull},c.push(j),b.push(j),!e.isNull&&(!a[d-1]||a[d-1].isNull)&&c.push({plotX:e.plotX,plotY:e.plotLow});a=g.call(this,a);if(i)i===!0&&(i="left"),l.step={left:"right",center:"center",right:"left"}[i];b=g.call(this,b);c=g.call(this,c);l.step=i;l=[].concat(a,b);!this.chart.polar&&c[0]==="M"&&(c[0]="L");this.areaPath=this.areaPath.concat(a,c);return l},drawDataLabels:function(){var a=this.data,b=a.length,c,d=[],g=w.prototype,e=this.options.dataLabels,j=e.align,l=e.verticalAlign,i=e.inside,f,
  24 + h,n=this.chart.inverted;if(e.enabled||this._hasPointLabels){for(c=b;c--;)if(f=a[c]){h=i?f.plotHigh<f.plotLow:f.plotHigh>f.plotLow;f.y=f.high;f._plotY=f.plotY;f.plotY=f.plotHigh;d[c]=f.dataLabel;f.dataLabel=f.dataLabelUpper;f.below=h;if(n){if(!j)e.align=h?"right":"left"}else if(!l)e.verticalAlign=h?"top":"bottom";e.x=e.xHigh;e.y=e.yHigh}g.drawDataLabels&&g.drawDataLabels.apply(this,arguments);for(c=b;c--;)if(f=a[c]){h=i?f.plotHigh<f.plotLow:f.plotHigh>f.plotLow;f.dataLabelUpper=f.dataLabel;f.dataLabel=
  25 + d[c];f.y=f.low;f.plotY=f._plotY;f.below=!h;if(n){if(!j)e.align=h?"left":"right"}else if(!l)e.verticalAlign=h?"bottom":"top";e.x=e.xLow;e.y=e.yLow}g.drawDataLabels&&g.drawDataLabels.apply(this,arguments)}e.align=j;e.verticalAlign=l},alignDataLabel:function(){k.column.prototype.alignDataLabel.apply(this,arguments)},setStackedPoints:r,getSymbol:r,drawPoints:r});o.areasplinerange=t(o.arearange);k.areasplinerange=u(k.arearange,{type:"areasplinerange",getPointSpline:k.spline.prototype.getPointSpline});
  26 + (function(){var a=k.column.prototype;o.columnrange=t(o.column,o.arearange,{lineWidth:1,pointRange:null});k.columnrange=u(k.arearange,{type:"columnrange",translate:function(){var b=this,c=b.yAxis,d=b.xAxis,g=b.chart,e;a.translate.apply(b);s(b.points,function(a){var l=a.shapeArgs,i=b.options.minPointLength,f,h;a.plotHigh=e=c.translate(a.high,0,1,0,1);a.plotLow=a.plotY;h=e;f=a.plotY-e;Math.abs(f)<i?(i-=f,f+=i,h-=i/2):f<0&&(f*=-1,h-=f);l.height=f;l.y=h;a.tooltipPos=g.inverted?[c.len+c.pos-g.plotLeft-
  27 + h-f/2,d.len+d.pos-g.plotTop-l.x-l.width/2,f]:[d.left-g.plotLeft+l.x+l.width/2,c.pos-g.plotTop+h+f/2,f]})},directTouch:!0,trackerGroups:["group","dataLabelsGroup"],drawGraph:r,crispCol:a.crispCol,pointAttrToOptions:a.pointAttrToOptions,drawPoints:a.drawPoints,drawTracker:a.drawTracker,animate:a.animate,getColumnMetrics:a.getColumnMetrics})})();o.gauge=t(o.line,{dataLabels:{enabled:!0,defer:!1,y:15,borderWidth:1,borderColor:"silver",borderRadius:3,crop:!1,verticalAlign:"top",zIndex:2},dial:{},pivot:{},
  28 + tooltip:{headerFormat:""},showInLegend:!1});B={type:"gauge",pointClass:u(G,{setState:function(a){this.state=a}}),angular:!0,drawGraph:r,fixedBox:!0,forceDL:!0,trackerGroups:["group","dataLabelsGroup"],translate:function(){var a=this.yAxis,b=this.options,c=a.center;this.generatePoints();s(this.points,function(d){var g=t(b.dial,d.dial),e=A(q(g.radius,80))*c[2]/200,j=A(q(g.baseLength,70))*e/100,l=A(q(g.rearLength,10))*e/100,i=g.baseWidth||3,f=g.topWidth||1,h=b.overshoot,n=a.startAngleRad+a.translate(d.y,
  29 + null,null,null,!0);h&&typeof h==="number"?(h=h/180*Math.PI,n=Math.max(a.startAngleRad-h,Math.min(a.endAngleRad+h,n))):b.wrap===!1&&(n=Math.max(a.startAngleRad,Math.min(a.endAngleRad,n)));n=n*180/Math.PI;d.shapeType="path";d.shapeArgs={d:g.path||["M",-l,-i/2,"L",j,-i/2,e,-f/2,e,f/2,j,i/2,-l,i/2,"z"],translateX:c[0],translateY:c[1],rotation:n};d.plotX=c[0];d.plotY=c[1]})},drawPoints:function(){var a=this,b=a.yAxis.center,c=a.pivot,d=a.options,g=d.pivot,e=a.chart.renderer;s(a.points,function(b){var g=
  30 + b.graphic,c=b.shapeArgs,f=c.d,h=t(d.dial,b.dial);g?(g.animate(c),c.d=f):b.graphic=e[b.shapeType](c).attr({stroke:h.borderColor||"none","stroke-width":h.borderWidth||0,fill:h.backgroundColor||"black",rotation:c.rotation,zIndex:1}).add(a.group)});c?c.animate({translateX:b[0],translateY:b[1]}):a.pivot=e.circle(0,0,q(g.radius,5)).attr({"stroke-width":g.borderWidth||0,stroke:g.borderColor||"silver",fill:g.backgroundColor||"black",zIndex:2}).translate(b[0],b[1]).add(a.group)},animate:function(a){var b=
  31 + this;if(!a)s(b.points,function(a){var d=a.graphic;d&&(d.attr({rotation:b.yAxis.startAngleRad*180/Math.PI}),d.animate({rotation:a.shapeArgs.rotation},b.options.animation))}),b.animate=null},render:function(){this.group=this.plotGroup("group","series",this.visible?"visible":"hidden",this.options.zIndex,this.chart.seriesGroup);w.prototype.render.call(this);this.group.clip(this.chart.clipRect)},setData:function(a,b){w.prototype.setData.call(this,a,!1);this.processData();this.generatePoints();q(b,!0)&&
  32 + this.chart.redraw()},drawTracker:B&&B.drawTrackerPoint};k.gauge=u(k.line,B);o.boxplot=t(o.column,{fillColor:"#FFFFFF",lineWidth:1,medianWidth:2,states:{hover:{brightness:-0.3}},threshold:null,tooltip:{pointFormat:'<span style="color:{point.color}">\u25cf</span> <b> {series.name}</b><br/>Maximum: {point.high}<br/>Upper quartile: {point.q3}<br/>Median: {point.median}<br/>Lower quartile: {point.q1}<br/>Minimum: {point.low}<br/>'},whiskerLength:"50%",whiskerWidth:2});k.boxplot=u(k.column,{type:"boxplot",
  33 + pointArrayMap:["low","q1","median","q3","high"],toYData:function(a){return[a.low,a.q1,a.median,a.q3,a.high]},pointValKey:"high",pointAttrToOptions:{fill:"fillColor",stroke:"color","stroke-width":"lineWidth"},drawDataLabels:r,translate:function(){var a=this.yAxis,b=this.pointArrayMap;k.column.prototype.translate.apply(this);s(this.points,function(c){s(b,function(b){c[b]!==null&&(c[b+"Plot"]=a.translate(c[b],0,1,0,1))})})},drawPoints:function(){var a=this,b=a.options,c=a.chart.renderer,d,g,e,j,l,i,
  34 + f,h,n,k,m,H,I,o,t,r,v,u,w,x,B,A,y=a.doQuartiles!==!1,z,D=a.options.whiskerLength;s(a.points,function(p){n=p.graphic;B=p.shapeArgs;m={};o={};r={};A=p.color||a.color;if(p.plotY!==void 0)if(d=p.pointAttr[p.selected?"selected":""],v=B.width,u=C(B.x),w=u+v,x=E(v/2),g=C(y?p.q1Plot:p.lowPlot),e=C(y?p.q3Plot:p.lowPlot),j=C(p.highPlot),l=C(p.lowPlot),m.stroke=p.stemColor||b.stemColor||A,m["stroke-width"]=q(p.stemWidth,b.stemWidth,b.lineWidth),m.dashstyle=p.stemDashStyle||b.stemDashStyle,o.stroke=p.whiskerColor||
  35 + b.whiskerColor||A,o["stroke-width"]=q(p.whiskerWidth,b.whiskerWidth,b.lineWidth),r.stroke=p.medianColor||b.medianColor||A,r["stroke-width"]=q(p.medianWidth,b.medianWidth,b.lineWidth),f=m["stroke-width"]%2/2,h=u+x+f,k=["M",h,e,"L",h,j,"M",h,g,"L",h,l],y&&(f=d["stroke-width"]%2/2,h=C(h)+f,g=C(g)+f,e=C(e)+f,u+=f,w+=f,H=["M",u,e,"L",u,g,"L",w,g,"L",w,e,"L",u,e,"z"]),D&&(f=o["stroke-width"]%2/2,j+=f,l+=f,z=/%$/.test(D)?x*parseFloat(D)/100:D/2,I=["M",h-z,j,"L",h+z,j,"M",h-z,l,"L",h+z,l]),f=r["stroke-width"]%
  36 + 2/2,i=E(p.medianPlot)+f,t=["M",u,i,"L",w,i],n)p.stem.animate({d:k}),D&&p.whiskers.animate({d:I}),y&&p.box.animate({d:H}),p.medianShape.animate({d:t});else{p.graphic=n=c.g().add(a.group);p.stem=c.path(k).attr(m).add(n);if(D)p.whiskers=c.path(I).attr(o).add(n);if(y)p.box=c.path(H).attr(d).add(n);p.medianShape=c.path(t).attr(r).add(n)}})},setStackedPoints:r});o.errorbar=t(o.boxplot,{color:"#000000",grouping:!1,linkedTo:":previous",tooltip:{pointFormat:'<span style="color:{point.color}">\u25cf</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'},
  37 + whiskerWidth:null});k.errorbar=u(k.boxplot,{type:"errorbar",pointArrayMap:["low","high"],toYData:function(a){return[a.low,a.high]},pointValKey:"high",doQuartiles:!1,drawDataLabels:k.arearange?k.arearange.prototype.drawDataLabels:r,getColumnMetrics:function(){return this.linkedParent&&this.linkedParent.columnMetrics||k.column.prototype.getColumnMetrics.call(this)}});o.waterfall=t(o.column,{lineWidth:1,lineColor:"#333",dashStyle:"dot",borderColor:"#333",dataLabels:{inside:!0},states:{hover:{lineWidthPlus:0}}});
  38 + k.waterfall=u(k.column,{type:"waterfall",upColorProp:"fill",pointValKey:"y",translate:function(){var a=this.options,b=this.yAxis,c,d,g,e,j,l,i,f,h,n=q(a.minPointLength,5),m=a.threshold,o=a.stacking;k.column.prototype.translate.apply(this);this.minPointLengthOffset=0;i=f=m;d=this.points;for(c=0,a=d.length;c<a;c++){g=d[c];l=this.processedYData[c];e=g.shapeArgs;h=(j=o&&b.stacks[(this.negStacks&&l<m?"-":"")+this.stackKey])?j[g.x].points[this.index+","+c]:[0,l];if(g.isSum)g.y=l;else if(g.isIntermediateSum)g.y=
  39 + l-f;j=M(i,i+g.y)+h[0];e.y=b.translate(j,0,1);if(g.isSum)e.y=b.translate(h[1],0,1),e.height=Math.min(b.translate(h[0],0,1),b.len)-e.y+this.minPointLengthOffset;else if(g.isIntermediateSum)e.y=b.translate(h[1],0,1),e.height=Math.min(b.translate(f,0,1),b.len)-e.y+this.minPointLengthOffset,f=h[1];else{if(i!==0)e.height=l>0?b.translate(i,0,1)-e.y:b.translate(i,0,1)-b.translate(i-l,0,1);i+=l}e.height<0&&(e.y+=e.height,e.height*=-1);g.plotY=e.y=E(e.y)-this.borderWidth%2/2;e.height=M(E(e.height),0.001);g.yBottom=
  40 + e.y+e.height;if(e.height<=n)e.height=n,this.minPointLengthOffset+=n;e.y-=this.minPointLengthOffset;e=g.plotY+(g.negative?e.height:0)-this.minPointLengthOffset;this.chart.inverted?g.tooltipPos[0]=b.len-e:g.tooltipPos[1]=e}},processData:function(a){var b=this.yData,c=this.options.data,d,g=b.length,e,j,l,i,f,h;j=e=l=i=this.options.threshold||0;for(h=0;h<g;h++)f=b[h],d=c&&c[h]?c[h]:{},f==="sum"||d.isSum?b[h]=j:f==="intermediateSum"||d.isIntermediateSum?b[h]=e:(j+=f,e+=f),l=Math.min(j,l),i=Math.max(j,
  41 + i);w.prototype.processData.call(this,a);this.dataMin=l;this.dataMax=i},toYData:function(a){return a.isSum?a.x===0?null:"sum":a.isIntermediateSum?a.x===0?null:"intermediateSum":a.y},getAttribs:function(){k.column.prototype.getAttribs.apply(this,arguments);var a=this,b=a.options,c=b.states,d=b.upColor||a.color,b=m.Color(d).brighten(0.1).get(),g=t(a.pointAttr),e=a.upColorProp;g[""][e]=d;g.hover[e]=c.hover.upColor||b;g.select[e]=c.select.upColor||d;s(a.points,function(e){if(!e.options.color)e.y>0?(e.pointAttr=
  42 + g,e.color=d):e.pointAttr=a.pointAttr})},getGraphPath:function(){var a=this.data,b=a.length,c=E(this.options.lineWidth+this.borderWidth)%2/2,d=[],g,e,j;for(j=1;j<b;j++)e=a[j].shapeArgs,g=a[j-1].shapeArgs,e=["M",g.x+g.width,g.y+c,"L",e.x,g.y+c],a[j-1].y<0&&(e[2]+=g.height,e[5]+=g.height),d=d.concat(e);return d},getExtremes:r,drawGraph:w.prototype.drawGraph});o.polygon=t(o.scatter,{marker:{enabled:!1}});k.polygon=u(k.scatter,{type:"polygon",fillGraph:!0,getSegmentPath:function(a){return w.prototype.getSegmentPath.call(this,
  43 + a).concat("z")},drawGraph:w.prototype.drawGraph,drawLegendSymbol:m.LegendSymbolMixin.drawRectangle});o.bubble=t(o.scatter,{dataLabels:{formatter:function(){return this.point.z},inside:!0,verticalAlign:"middle"},marker:{lineColor:null,lineWidth:1},minSize:8,maxSize:"20%",softThreshold:!1,states:{hover:{halo:{size:5}}},tooltip:{pointFormat:"({point.x}, {point.y}), Size: {point.z}"},turboThreshold:0,zThreshold:0,zoneAxis:"z"});B=u(G,{haloPath:function(){return G.prototype.haloPath.call(this,this.shapeArgs.r+
  44 + this.series.options.states.hover.halo.size)},ttBelow:!1});k.bubble=u(k.scatter,{type:"bubble",pointClass:B,pointArrayMap:["y","z"],parallelArrays:["x","y","z"],trackerGroups:["group","dataLabelsGroup"],bubblePadding:!0,zoneAxis:"z",pointAttrToOptions:{stroke:"lineColor","stroke-width":"lineWidth",fill:"fillColor"},applyOpacity:function(a){var b=this.options.marker,c=q(b.fillOpacity,0.5),a=a||b.fillColor||this.color;c!==1&&(a=T(a).setOpacity(c).get("rgba"));return a},convertAttribs:function(){var a=
  45 + w.prototype.convertAttribs.apply(this,arguments);a.fill=this.applyOpacity(a.fill);return a},getRadii:function(a,b,c,d){var g,e,j,l=this.zData,i=[],f=this.options,h=f.sizeBy!=="width",n=f.zThreshold,k=b-a;for(e=0,g=l.length;e<g;e++)j=l[e],f.sizeByAbsoluteValue&&j!==null&&(j=Math.abs(j-n),b=Math.max(b-n,Math.abs(a-n)),a=0),j===null?j=null:j<a?j=c/2-1:(j=k>0?(j-a)/k:0.5,h&&j>=0&&(j=Math.sqrt(j)),j=x.ceil(c+j*(d-c))/2),i.push(j);this.radii=i},animate:function(a){var b=this.options.animation;if(!a)s(this.points,
  46 + function(a){var d=a.graphic,a=a.shapeArgs;d&&a&&(d.attr("r",1),d.animate({r:a.r},b))}),this.animate=null},translate:function(){var a,b=this.data,c,d,g=this.radii;k.scatter.prototype.translate.call(this);for(a=b.length;a--;)c=b[a],d=g?g[a]:0,typeof d==="number"&&d>=this.minPxSize/2?(c.shapeType="circle",c.shapeArgs={x:c.plotX,y:c.plotY,r:d},c.dlBox={x:c.plotX-d,y:c.plotY-d,width:2*d,height:2*d}):c.shapeArgs=c.plotY=c.dlBox=void 0},drawLegendSymbol:function(a,b){var c=this.chart.renderer,d=c.fontMetrics(a.itemStyle.fontSize).f/
  47 + 2;b.legendSymbol=c.circle(d,a.baseline-d,d).attr({zIndex:3}).add(b.legendGroup);b.legendSymbol.isMarker=!0},drawPoints:k.column.prototype.drawPoints,alignDataLabel:k.column.prototype.alignDataLabel,buildKDTree:r,applyZones:r});L.prototype.beforePadding=function(){var a=this,b=this.len,c=this.chart,d=0,g=b,e=this.isXAxis,j=e?"xData":"yData",l=this.min,i={},f=x.min(c.plotWidth,c.plotHeight),h=Number.MAX_VALUE,n=-Number.MAX_VALUE,k=this.max-l,m=b/k,o=[];s(this.series,function(b){var g=b.options;if(b.bubblePadding&&
  48 + (b.visible||!c.options.chart.ignoreHiddenSeries))if(a.allowZoomOutside=!0,o.push(b),e)s(["minSize","maxSize"],function(a){var b=g[a],e=/%$/.test(b),b=A(b);i[a]=e?f*b/100:b}),b.minPxSize=i.minSize,b.maxPxSize=i.maxSize,b=b.zData,b.length&&(h=q(g.zMin,x.min(h,x.max(O(b),g.displayNegative===!1?g.zThreshold:-Number.MAX_VALUE))),n=q(g.zMax,x.max(n,P(b))))});s(o,function(a){var b=a[j],c=b.length,f;e&&a.getRadii(h,n,a.minPxSize,a.maxPxSize);if(k>0)for(;c--;)typeof b[c]==="number"&&(f=a.radii[c],d=Math.min((b[c]-
  49 + l)*m-f,d),g=Math.max((b[c]-l)*m+f,g))});o.length&&k>0&&!this.isLog&&(g-=b,m*=(b+d-g)/b,s([["min","userMin",d],["max","userMax",g]],function(b){q(a.options[b[0]],a[b[1]])===void 0&&(a[b[0]]+=b[2]/m)}))};(function(){function a(a,b){var c=this.chart,d=this.options.animation,i=this.group,f=this.markerGroup,h=this.xAxis.center,n=c.plotLeft,k=c.plotTop;if(c.polar){if(c.renderer.isSVG)d===!0&&(d={}),b?(c={translateX:h[0]+n,translateY:h[1]+k,scaleX:0.001,scaleY:0.001},i.attr(c),f&&f.attr(c)):(c={translateX:n,
  50 + translateY:k,scaleX:1,scaleY:1},i.animate(c,d),f&&f.animate(c,d),this.animate=null)}else a.call(this,b)}var b=w.prototype,c=R.prototype,d;b.searchPointByAngle=function(a){var b=this.chart,c=this.xAxis.pane.center;return this.searchKDTree({clientX:180+Math.atan2(a.chartX-c[0]-b.plotLeft,a.chartY-c[1]-b.plotTop)*(-180/Math.PI)})};v(b,"buildKDTree",function(a){if(this.chart.polar)this.kdByAngle?this.searchPoint=this.searchPointByAngle:this.kdDimensions=2;a.apply(this)});b.toXY=function(a){var b,c=this.chart,
  51 + d=a.plotX;b=a.plotY;a.rectPlotX=d;a.rectPlotY=b;b=this.xAxis.postTranslate(a.plotX,this.yAxis.len-b);a.plotX=a.polarPlotX=b.x-c.plotLeft;a.plotY=a.polarPlotY=b.y-c.plotTop;this.kdByAngle?(c=(d/Math.PI*180+this.xAxis.pane.options.startAngle)%360,c<0&&(c+=360),a.clientX=c):a.clientX=a.plotX};k.spline&&v(k.spline.prototype,"getPointSpline",function(a,b,c,d){var i,f,h,n,k,m,o;if(this.chart.polar){i=c.plotX;f=c.plotY;a=b[d-1];h=b[d+1];this.connectEnds&&(a||(a=b[b.length-2]),h||(h=b[1]));if(a&&h)n=a.plotX,
  52 + k=a.plotY,b=h.plotX,m=h.plotY,n=(1.5*i+n)/2.5,k=(1.5*f+k)/2.5,h=(1.5*i+b)/2.5,o=(1.5*f+m)/2.5,b=Math.sqrt(Math.pow(n-i,2)+Math.pow(k-f,2)),m=Math.sqrt(Math.pow(h-i,2)+Math.pow(o-f,2)),n=Math.atan2(k-f,n-i),k=Math.atan2(o-f,h-i),o=Math.PI/2+(n+k)/2,Math.abs(n-o)>Math.PI/2&&(o-=Math.PI),n=i+Math.cos(o)*b,k=f+Math.sin(o)*b,h=i+Math.cos(Math.PI+o)*m,o=f+Math.sin(Math.PI+o)*m,c.rightContX=h,c.rightContY=o;d?(c=["C",a.rightContX||a.plotX,a.rightContY||a.plotY,n||i,k||f,i,f],a.rightContX=a.rightContY=null):
  53 + c=["M",i,f]}else c=a.call(this,b,c,d);return c});v(b,"translate",function(a){var b=this.chart;a.call(this);if(b.polar&&(this.kdByAngle=b.tooltip&&b.tooltip.shared,!this.preventPostTranslate)){a=this.points;for(b=a.length;b--;)this.toXY(a[b])}});v(b,"getGraphPath",function(a,b){var c=this;if(this.chart.polar){b=b||this.points;if(this.options.connectEnds!==!1&&b[0].y!==null)this.connectEnds=!0,b.splice(b.length,0,b[0]);s(b,function(a){a.polarPlotY===void 0&&c.toXY(a)})}return a.apply(this,[].slice.call(arguments,
  54 + 1))});v(b,"animate",a);if(k.column)d=k.column.prototype,v(d,"animate",a),v(d,"translate",function(a){var b=this.xAxis,c=this.yAxis.len,d=b.center,i=b.startAngleRad,f=this.chart.renderer,h,k;this.preventPostTranslate=!0;a.call(this);if(b.isRadial){b=this.points;for(k=b.length;k--;)h=b[k],a=h.barX+i,h.shapeType="path",h.shapeArgs={d:f.symbols.arc(d[0],d[1],c-h.plotY,null,{start:a,end:a+h.pointWidth,innerR:c-q(h.yBottom,c)})},this.toXY(h),h.tooltipPos=[h.plotX,h.plotY],h.ttBelow=h.plotY>d[1]}}),v(d,
  55 + "alignDataLabel",function(a,c,d,l,i,f){if(this.chart.polar){a=c.rectPlotX/Math.PI*180;if(l.align===null)l.align=a>20&&a<160?"left":a>200&&a<340?"right":"center";if(l.verticalAlign===null)l.verticalAlign=a<45||a>315?"bottom":a>135&&a<225?"top":"middle";b.alignDataLabel.call(this,c,d,l,i,f)}else a.call(this,c,d,l,i,f)});v(c,"getCoordinates",function(a,b){var c=this.chart,d={xAxis:[],yAxis:[]};c.polar?s(c.axes,function(a){var f=a.isXAxis,g=a.center,k=b.chartX-g[0]-c.plotLeft,g=b.chartY-g[1]-c.plotTop;
  56 + d[f?"xAxis":"yAxis"].push({axis:a,value:a.translate(f?Math.PI-Math.atan2(k,g):Math.sqrt(Math.pow(k,2)+Math.pow(g,2)),!0)})}):d=a.call(this,b);return d})})()});
0 57 \ No newline at end of file
... ...
datalets/piechart-datalet/piechart-datalet.png

747 Bytes | W: | H:

4.47 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
datalets/scatterchart-datalet/scatterchart-datalet.html
... ... @@ -53,8 +53,7 @@ Example:
53 53 <highcharts-datalet id="charts" data-url="{{dataUrl}}" fields="{{fields}}" data="{{data}}" title="{{title}}" description="{{description}}"></highcharts-datalet>
54 54 </template>
55 55 <script>
56   -
57   - var scatterchartBehavior = {
  56 + var ScatterchartBehavior = {
58 57  
59 58 /**
60 59 * Bluid Highchart object
... ... @@ -62,29 +61,47 @@ Example:
62 61 * @method presentData
63 62 */
64 63 presentData: function(){
65   - var x = this.data[0]["data"];
66   -
67   - var categories = x.filter(function(item, pos) {
68   - return x.indexOf(item) == pos;
69   - });
70   -
71   - var scatterSeries = [];
72   - var series = [];
73   - var point = [];
74   -
75   - for (var i = 0; i < categories.length; i++) {
76   - for (var j = 0; j < x.length; j++) {
77   - if (this.data[0].data[j] == categories[i]) {
78   - point = [this.data[1].data[j], this.data[2].data[j]];
79   - series.push(point);
  64 + if(this.data.length == 3) {// multiseries
  65 + var x = this.data[2]["data"];
  66 +
  67 + var categories = x.filter(function (item, pos) {
  68 + return x.indexOf(item) == pos;
  69 + });
  70 +
  71 + var scatterSeries = [];
  72 + var series = [];
  73 + var point = [];
  74 +
  75 + for (var i = 0; i < categories.length; i++) {
  76 + for (var j = 0; j < x.length; j++) {
  77 + if (this.data[2].data[j] == categories[i]) {
  78 + point = [this.data[0].data[j], this.data[1].data[j]];
  79 + series.push(point);
  80 + }
80 81 }
  82 +
  83 + scatterSeries.push({name: categories[i], data: series});
  84 + series = [];
81 85 }
82 86  
83   - scatterSeries.push({name: categories[i], data: series});
84   - series = [];
  87 + this.properties.series = scatterSeries;
  88 + this._component.legend = true;
85 89 }
  90 + else {// == 2
  91 + var scatterSeries = [];
  92 + var series = [];
  93 + var point = [];
  94 +
  95 + for (var j = 0; j < this.data[0]["data"].length; j++) {
  96 + point = [this.data[0].data[j], this.data[1].data[j]];;
  97 + series.push(point);
  98 + }
  99 +
  100 + scatterSeries.push({data: series});
86 101  
87   - this.properties.series = scatterSeries;
  102 + this.properties.series = scatterSeries;
  103 + this._component.legend = false;
  104 + }
88 105  
89 106 options = {
90 107 chart: {
... ... @@ -104,6 +121,9 @@ Example:
104 121 text: this._component.yAxisLabel,
105 122 }
106 123 },
  124 + legend: {
  125 + enabled: this._component.legend,
  126 + },
107 127 credits: {
108 128 enabled: false
109 129 },
... ... @@ -118,7 +138,7 @@ Example:
118 138 };
119 139  
120 140  
121   - scatterchartDatalet = Polymer({
  141 + ScatterchartDatalet = Polymer({
122 142 is: 'scatterchart-datalet',
123 143 properties: {
124 144 xAxisLabel: {
... ... @@ -150,7 +170,7 @@ Example:
150 170 * @method ready
151 171 */
152 172 ready: function(){
153   - this.behavior = $.extend(true, {}, HighchartsComponentBehavior, scatterchartBehavior);
  173 + this.behavior = $.extend(true, {}, HighchartsComponentBehavior, ScatterchartBehavior);
154 174 this.async(function(){this.behavior.init(this)},0);
155 175 }
156 176 });
... ...
datalets/treemap-datalet/js/buildtreemap.js
... ... @@ -81,12 +81,14 @@ function build(root, place_holder) {
81 81 function layout(d) {
82 82 if (d._children) {
83 83 treemap.nodes({_children: d._children});
  84 + var i = 0;
84 85 d._children.forEach(function(c) {
85 86 c.x = d.x + c.x * d.dx;
86 87 c.y = d.y + c.y * d.dy;
87 88 c.dx *= d.dx;
88 89 c.dy *= d.dy;
89 90 c.parent = d;
  91 + c.color = d3.scale.ordinal().domain(d3.range(d._children.length)).range(["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"])(i++)
90 92 layout(c);
91 93 });
92 94 }
... ... @@ -174,7 +176,8 @@ function build(root, place_holder) {
174 176 rect.attr("x", function(d) { return x(d.x); })
175 177 .attr("y", function(d) { return y(d.y); })
176 178 .attr("width", function(d) { return x(d.x + d.dx) - x(d.x); })
177   - .attr("height", function(d) { return y(d.y + d.dy) - y(d.y); });
  179 + .attr("height", function(d) { return y(d.y + d.dy) - y(d.y); })
  180 + .style("fill", function(d) { return d.color; });
178 181 }
179 182  
180 183 function name(d) {
... ...
datalets/treemap-datalet/treemap-datalet.html
... ... @@ -53,15 +53,16 @@ Example:
53 53 <template>
54 54 <style is="custom-style">
55 55  
56   - :host ::content h6 {
57   - color: red;
58   - }
  56 + /*:host ::content h6 {*/
  57 + /*color: red;*/
  58 + /*}*/
59 59  
60 60 :host ::content #treemap_placeholder {
61 61 width: 100%;
62 62 height: 70%;
63   - min-height: 500px;
64   - background: #ddd;
  63 + /*min-height: 500px;*/
  64 + background: #bbb;
  65 + /*position: relative;*/
65 66 }
66 67  
67 68 :host ::content text {
... ... @@ -77,8 +78,7 @@ Example:
77 78 stroke: #fff;
78 79 }
79 80  
80   - :host ::content rect.parent,
81   - .grandparent rect {
  81 + :host ::content rect.parent {
82 82 stroke-width: 2px;
83 83 }
84 84  
... ... @@ -90,14 +90,19 @@ Example:
90 90 fill: #ee9700;
91 91 }
92 92  
93   - :host ::content .children rect.parent,
94   - .grandparent rect {
  93 + :host ::content .children rect.parent {
  94 + cursor: pointer;
  95 + }
  96 +
  97 + :host ::content .grandparent rect {
  98 + stroke-width: 2px;
95 99 cursor: pointer;
96 100 }
97 101  
98 102 :host ::content .children rect.parent {
99 103 fill: #bbb;
100   - fill-opacity: .5;
  104 + -fill-opacity: .5;
  105 + fill-opacity: 1;
101 106 }
102 107  
103 108 :host ::content .children:hover rect.child {
... ... @@ -119,12 +124,11 @@ Example:
119 124 children : []
120 125 },
121 126  
122   - transformData: function(e)
  127 + transformData: function()
123 128 {
124 129 var treemapData = [];
125   - TreemapBehavior.map.name = this._component.title;
126 130  
127   - if(this.data.length > 1) {
  131 +// if(this.data.length > 1) {
128 132 for (i = 0; i < this.data.length; i++) {
129 133 var propName = this.data[i].name;
130 134  
... ... @@ -135,9 +139,9 @@ Example:
135 139 jQuery.extend(treemapData[j], currObj);
136 140 }
137 141 }
138   - }else{
139   - treemapData = this.data[0].data;
140   - }
  142 +// }else{
  143 +// treemapData = this.data[0].data;
  144 +// }
141 145  
142 146 this.map.children = [];
143 147  
... ... @@ -145,8 +149,6 @@ Example:
145 149 this.checkAggragationField(treemapData[i], this.data.length , this.data.length - 1);
146 150 }
147 151  
148   - //var json = JSON.stringify(this.map);
149   -
150 152 },
151 153  
152 154 findChild: function(child, category){
... ... @@ -178,7 +180,7 @@ Example:
178 180 },
179 181  
180 182 presentData: function(){
181   - //console.log(TreemapBehavior.map.name);
  183 + this.map.name = this._component.title;
182 184 build(this.map, this._component.$.treemap_placeholder);
183 185 }
184 186 };
... ...
locales/controllet_ln.js
... ... @@ -75,15 +75,18 @@ ln[&quot;LAST_en&quot;] = &quot;LAST of&quot;;
75 75  
76 76 ln["XAxis_en"] = "X AXIS";
77 77 ln["YAxis_en"] = "Y AXIS";
78   -ln["numericXAxis_en"] = "X AXIS (numeric)";
79   -ln["numericYAxis_en"] = "Y AXIS (numeric)";
  78 +ln["NumericXAxis_en"] = "X AXIS [num]";
  79 +ln["NumericYAxis_en"] = "Y AXIS [num]";
80 80 ln["Column_en"] = "COLUMN";
81   -ln["SliceLabels_en"] = "LABELS";
82   -ln["SliceSizes_en"] = "SIZES (numeric)";
  81 +ln["Level_en"] = "LEVEL";
  82 +ln["SliceLabels_en"] = "LABEL";
  83 +ln["SliceSizes_en"] = "SIZE [num]";
83 84 ln["Latitude_en"] = "LATITUDE";
84 85 ln["Longitude_en"] = "LONGITUDE";
85   -ln["BalloonContent_en"] = "BALLOON CONTENT";
86   -ln["Categories_en"] = "CATEGORIES";
  86 +ln["BalloonContent_en"] = "BALLOON CONTENT";// [opt]
  87 +ln["BubbleContent_en"] = "BUBBLE CONTENT";
  88 +ln["BubbleSize_en"] = "BUBBLE SIZE [num]";
  89 +ln["Categories_en"] = "CATEGORY [opt]";
87 90  
88 91 //options
89 92 ln["title_en"] = "Title"
... ...