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,9 +223,19 @@
223 description = inputs[2].description; 223 description = inputs[2].description;
224 selection = inputs[2].selection; 224 selection = inputs[2].selection;
225 temp = [inputs[0], inputs[1]]; 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 this.inputs = this._copy(temp); 240 this.inputs = this._copy(temp);
231 241
@@ -234,21 +244,23 @@ @@ -234,21 +244,23 @@
234 244
235 fireReady : function() { 245 fireReady : function() {
236 if(this._isReady()) 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 _isReady : function() { 252 _isReady : function() {
241 var fire = true; 253 var fire = true;
242 for (var i = 0; i < this.selectedFields.length; i++) { 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 return false; 256 return false;
245 - if(this.inputs[i].selection == "*") 257 + if(this.inputs[i].selection == "+")
246 fire = false; 258 fire = false;
247 } 259 }
248 260
249 if(!fire) { 261 if(!fire) {
250 for (var i = 0; i < this.selectedFields.length; i++) { 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 fire = true; 264 fire = true;
253 break; 265 break;
254 } 266 }
@@ -430,9 +442,15 @@ @@ -430,9 +442,15 @@
430 if(key.indexOf("Column") > -1) { 442 if(key.indexOf("Column") > -1) {
431 return ln["Column" + "_" +ln["localization"]] + key.slice(-2); 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 if(key.indexOf("BalloonContent") > -1) { 448 if(key.indexOf("BalloonContent") > -1) {
434 return ln["BalloonContent" + "_" +ln["localization"]] + key.slice(-2); 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 return ln[key + "_" +ln["localization"]]; 455 return ln[key + "_" +ln["localization"]];
438 }, 456 },
controllets/select-visualization-controllet/select-datalet-inputs_series.html
@@ -221,7 +221,9 @@ @@ -221,7 +221,9 @@
221 221
222 fireReady : function() { 222 fireReady : function() {
223 if(this.selectedFields[0] != "" && this.selectedFields[1] != "") 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 _reset : function() { 229 _reset : function() {
@@ -310,7 +312,7 @@ @@ -310,7 +312,7 @@
310 this._setAggregators(); 312 this._setAggregators();
311 }, 313 },
312 314
313 - _setAggregatorsFields : function(e){ 315 + _setAggregatorsFields : function(){
314 this.async(function() { 316 this.async(function() {
315 var c_menu = $("#calculate_0").find("paper-menu")[0]; 317 var c_menu = $("#calculate_0").find("paper-menu")[0];
316 var selected = c_menu.selected > 0 ? c_menu.selected : 0; 318 var selected = c_menu.selected > 0 ? c_menu.selected : 0;
controllets/select-visualization-controllet/select-datalet-options.html
@@ -126,7 +126,7 @@ @@ -126,7 +126,7 @@
126 <div class="input_header"><span id="baseInfo"></span></div> 126 <div class="input_header"><span id="baseInfo"></span></div>
127 127
128 <div class="inputs"> 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 </div> 130 </div>
131 131
132 <div class="inputs"> 132 <div class="inputs">
controllets/select-visualization-controllet/select-visualization-controllet.html
@@ -312,7 +312,12 @@ @@ -312,7 +312,12 @@
312 inputs.fireReady(); 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 var inputs = this._getInputs(); 321 var inputs = this._getInputs();
317 322
318 this.selectedFields = inputs.getSelectedFields(); 323 this.selectedFields = inputs.getSelectedFields();
datalets/bubblechart-datalet/bubblechart-datalet.html
@@ -30,7 +30,7 @@ @@ -30,7 +30,7 @@
30 --> 30 -->
31 31
32 <link rel="import" href="../highcharts-datalet/highcharts-datalet.html"> 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 `bubblechart` is a bubbles chart datalet based on highcharts project <http://www.highcharts.com/> 36 `bubblechart` is a bubbles chart datalet based on highcharts project <http://www.highcharts.com/>
@@ -57,7 +57,7 @@ Examples: @@ -57,7 +57,7 @@ Examples:
57 @group datalets 57 @group datalets
58 --> 58 -->
59 59
60 -<dom-module name="bubblechart-datalet"> 60 +<dom-module id="bubblechart-datalet">
61 <template> 61 <template>
62 <highcharts-datalet id="charts" data-url="{{dataUrl}}" fields="{{fields}}" data="{{data}}" title="{{title}}" description="{{description}}"></highcharts-datalet> 62 <highcharts-datalet id="charts" data-url="{{dataUrl}}" fields="{{fields}}" data="{{data}}" title="{{title}}" description="{{description}}"></highcharts-datalet>
63 </template> 63 </template>
@@ -69,128 +69,91 @@ Examples: @@ -69,128 +69,91 @@ Examples:
69 * @method presentData 69 * @method presentData
70 */ 70 */
71 presentData: function() { 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 chart: { 115 chart: {
143 type: 'bubble', 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 xAxis: { 126 xAxis: {
151 - categories: this.properties.categories.value,  
152 title: { 127 title: {
153 text: this._component.xAxisLabel 128 text: this._component.xAxisLabel
154 } 129 }
155 }, 130 },
156 yAxis: { 131 yAxis: {
157 - categories: this.properties.categories.value,  
158 title: { 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 plotOptions: { 139 plotOptions: {
181 series: { 140 series: {
182 dataLabels: { 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 credits: { 147 credits: {
190 enabled: false 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,50 +162,18 @@ Examples:
199 BubblechartDatalet = Polymer({ 162 BubblechartDatalet = Polymer({
200 is: 'bubblechart-datalet', 163 is: 'bubblechart-datalet',
201 properties: { 164 properties: {
202 - /**  
203 - * It's the label for X axis  
204 - *  
205 - * @attribute xAxisLabel  
206 - * @type String  
207 - * @default ''  
208 - */  
209 xAxisLabel: { 165 xAxisLabel: {
210 type: String, 166 type: String,
211 value: "" 167 value: ""
212 }, 168 },
213 - /**  
214 - * It's the label for Y axis  
215 - *  
216 - * @attribute yAxisLabel  
217 - * @type String  
218 - * @default ''  
219 - */  
220 yAxisLabel: { 169 yAxisLabel: {
221 type: String, 170 type: String,
222 value: "" 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 behavior : { 177 behavior : {
247 type : Object, 178 type : Object,
248 value : {} 179 value : {}
@@ -256,7 +187,7 @@ Examples: @@ -256,7 +187,7 @@ Examples:
256 */ 187 */
257 ready: function(){ 188 ready: function(){
258 this.behavior = $.extend(true, {}, HighchartsComponentBehavior, BubblechartBehavior); 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 </script> 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,6 +18,22 @@
18 18
19 /* Layout helpers 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 .ui-helper-hidden { 37 .ui-helper-hidden {
22 display: none; 38 display: none;
23 } 39 }
datalets/highcharts-datalet/highcharts-datalet.html
@@ -62,6 +62,7 @@ Example : @@ -62,6 +62,7 @@ Example :
62 62
63 <script src="static/js/highcharts.js"></script> 63 <script src="static/js/highcharts.js"></script>
64 <script src="static/js/exporting.js"></script> 64 <script src="static/js/exporting.js"></script>
  65 + <script src="static/js/highcharts-more.js"></script>
65 <script src="static/themes/themes.js"></script> 66 <script src="static/themes/themes.js"></script>
66 67
67 <script> 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 \ No newline at end of file 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,8 +53,7 @@ Example:
53 <highcharts-datalet id="charts" data-url="{{dataUrl}}" fields="{{fields}}" data="{{data}}" title="{{title}}" description="{{description}}"></highcharts-datalet> 53 <highcharts-datalet id="charts" data-url="{{dataUrl}}" fields="{{fields}}" data="{{data}}" title="{{title}}" description="{{description}}"></highcharts-datalet>
54 </template> 54 </template>
55 <script> 55 <script>
56 -  
57 - var scatterchartBehavior = { 56 + var ScatterchartBehavior = {
58 57
59 /** 58 /**
60 * Bluid Highchart object 59 * Bluid Highchart object
@@ -62,29 +61,47 @@ Example: @@ -62,29 +61,47 @@ Example:
62 * @method presentData 61 * @method presentData
63 */ 62 */
64 presentData: function(){ 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 options = { 106 options = {
90 chart: { 107 chart: {
@@ -104,6 +121,9 @@ Example: @@ -104,6 +121,9 @@ Example:
104 text: this._component.yAxisLabel, 121 text: this._component.yAxisLabel,
105 } 122 }
106 }, 123 },
  124 + legend: {
  125 + enabled: this._component.legend,
  126 + },
107 credits: { 127 credits: {
108 enabled: false 128 enabled: false
109 }, 129 },
@@ -118,7 +138,7 @@ Example: @@ -118,7 +138,7 @@ Example:
118 }; 138 };
119 139
120 140
121 - scatterchartDatalet = Polymer({ 141 + ScatterchartDatalet = Polymer({
122 is: 'scatterchart-datalet', 142 is: 'scatterchart-datalet',
123 properties: { 143 properties: {
124 xAxisLabel: { 144 xAxisLabel: {
@@ -150,7 +170,7 @@ Example: @@ -150,7 +170,7 @@ Example:
150 * @method ready 170 * @method ready
151 */ 171 */
152 ready: function(){ 172 ready: function(){
153 - this.behavior = $.extend(true, {}, HighchartsComponentBehavior, scatterchartBehavior); 173 + this.behavior = $.extend(true, {}, HighchartsComponentBehavior, ScatterchartBehavior);
154 this.async(function(){this.behavior.init(this)},0); 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,12 +81,14 @@ function build(root, place_holder) {
81 function layout(d) { 81 function layout(d) {
82 if (d._children) { 82 if (d._children) {
83 treemap.nodes({_children: d._children}); 83 treemap.nodes({_children: d._children});
  84 + var i = 0;
84 d._children.forEach(function(c) { 85 d._children.forEach(function(c) {
85 c.x = d.x + c.x * d.dx; 86 c.x = d.x + c.x * d.dx;
86 c.y = d.y + c.y * d.dy; 87 c.y = d.y + c.y * d.dy;
87 c.dx *= d.dx; 88 c.dx *= d.dx;
88 c.dy *= d.dy; 89 c.dy *= d.dy;
89 c.parent = d; 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 layout(c); 92 layout(c);
91 }); 93 });
92 } 94 }
@@ -174,7 +176,8 @@ function build(root, place_holder) { @@ -174,7 +176,8 @@ function build(root, place_holder) {
174 rect.attr("x", function(d) { return x(d.x); }) 176 rect.attr("x", function(d) { return x(d.x); })
175 .attr("y", function(d) { return y(d.y); }) 177 .attr("y", function(d) { return y(d.y); })
176 .attr("width", function(d) { return x(d.x + d.dx) - x(d.x); }) 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 function name(d) { 183 function name(d) {
datalets/treemap-datalet/treemap-datalet.html
@@ -53,15 +53,16 @@ Example: @@ -53,15 +53,16 @@ Example:
53 <template> 53 <template>
54 <style is="custom-style"> 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 :host ::content #treemap_placeholder { 60 :host ::content #treemap_placeholder {
61 width: 100%; 61 width: 100%;
62 height: 70%; 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 :host ::content text { 68 :host ::content text {
@@ -77,8 +78,7 @@ Example: @@ -77,8 +78,7 @@ Example:
77 stroke: #fff; 78 stroke: #fff;
78 } 79 }
79 80
80 - :host ::content rect.parent,  
81 - .grandparent rect { 81 + :host ::content rect.parent {
82 stroke-width: 2px; 82 stroke-width: 2px;
83 } 83 }
84 84
@@ -90,14 +90,19 @@ Example: @@ -90,14 +90,19 @@ Example:
90 fill: #ee9700; 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 cursor: pointer; 99 cursor: pointer;
96 } 100 }
97 101
98 :host ::content .children rect.parent { 102 :host ::content .children rect.parent {
99 fill: #bbb; 103 fill: #bbb;
100 - fill-opacity: .5; 104 + -fill-opacity: .5;
  105 + fill-opacity: 1;
101 } 106 }
102 107
103 :host ::content .children:hover rect.child { 108 :host ::content .children:hover rect.child {
@@ -119,12 +124,11 @@ Example: @@ -119,12 +124,11 @@ Example:
119 children : [] 124 children : []
120 }, 125 },
121 126
122 - transformData: function(e) 127 + transformData: function()
123 { 128 {
124 var treemapData = []; 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 for (i = 0; i < this.data.length; i++) { 132 for (i = 0; i < this.data.length; i++) {
129 var propName = this.data[i].name; 133 var propName = this.data[i].name;
130 134
@@ -135,9 +139,9 @@ Example: @@ -135,9 +139,9 @@ Example:
135 jQuery.extend(treemapData[j], currObj); 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 this.map.children = []; 146 this.map.children = [];
143 147
@@ -145,8 +149,6 @@ Example: @@ -145,8 +149,6 @@ Example:
145 this.checkAggragationField(treemapData[i], this.data.length , this.data.length - 1); 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 findChild: function(child, category){ 154 findChild: function(child, category){
@@ -178,7 +180,7 @@ Example: @@ -178,7 +180,7 @@ Example:
178 }, 180 },
179 181
180 presentData: function(){ 182 presentData: function(){
181 - //console.log(TreemapBehavior.map.name); 183 + this.map.name = this._component.title;
182 build(this.map, this._component.$.treemap_placeholder); 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,15 +75,18 @@ ln[&quot;LAST_en&quot;] = &quot;LAST of&quot;;
75 75
76 ln["XAxis_en"] = "X AXIS"; 76 ln["XAxis_en"] = "X AXIS";
77 ln["YAxis_en"] = "Y AXIS"; 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 ln["Column_en"] = "COLUMN"; 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 ln["Latitude_en"] = "LATITUDE"; 84 ln["Latitude_en"] = "LATITUDE";
84 ln["Longitude_en"] = "LONGITUDE"; 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 //options 91 //options
89 ln["title_en"] = "Title" 92 ln["title_en"] = "Title"