Commit 9819a40325b9a716c2248acf941ecfb2a536ca09
1 parent
10349394
bubble scatter treemap + bug fix
Showing
14 changed files
with
245 additions
and
188 deletions
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
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
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["LAST_en"] = "LAST of"; | @@ -75,15 +75,18 @@ ln["LAST_en"] = "LAST of"; | ||
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" |