@vaadin/charts 23.1.0-alpha1 → 23.1.0-alpha4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -5
- package/src/vaadin-chart-series.js +17 -17
- package/src/vaadin-chart.d.ts +2 -2
- package/src/vaadin-chart.js +119 -72
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaadin/charts",
|
|
3
|
-
"version": "23.1.0-
|
|
3
|
+
"version": "23.1.0-alpha4",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -34,15 +34,15 @@
|
|
|
34
34
|
],
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@polymer/polymer": "^3.0.0",
|
|
37
|
-
"@vaadin/component-base": "23.1.0-
|
|
37
|
+
"@vaadin/component-base": "23.1.0-alpha4",
|
|
38
38
|
"@vaadin/vaadin-license-checker": "^2.1.0",
|
|
39
|
-
"@vaadin/vaadin-themable-mixin": "23.1.0-
|
|
39
|
+
"@vaadin/vaadin-themable-mixin": "23.1.0-alpha4",
|
|
40
40
|
"highcharts": "9.2.2"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@esm-bundle/chai": "^4.3.4",
|
|
44
44
|
"@vaadin/testing-helpers": "^0.3.2",
|
|
45
|
-
"sinon": "^
|
|
45
|
+
"sinon": "^13.0.2"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "aacdb7fe09811894751f0378ff7fb66071892c71"
|
|
48
48
|
}
|
|
@@ -123,7 +123,7 @@ class ChartSeries extends PolymerElement {
|
|
|
123
123
|
*/
|
|
124
124
|
values: {
|
|
125
125
|
type: Array,
|
|
126
|
-
value: () => []
|
|
126
|
+
value: () => [],
|
|
127
127
|
},
|
|
128
128
|
|
|
129
129
|
/**
|
|
@@ -135,7 +135,7 @@ class ChartSeries extends PolymerElement {
|
|
|
135
135
|
*/
|
|
136
136
|
valueMin: {
|
|
137
137
|
type: Number,
|
|
138
|
-
reflectToAttribute: true
|
|
138
|
+
reflectToAttribute: true,
|
|
139
139
|
},
|
|
140
140
|
|
|
141
141
|
/**
|
|
@@ -145,7 +145,7 @@ class ChartSeries extends PolymerElement {
|
|
|
145
145
|
*/
|
|
146
146
|
valueMax: {
|
|
147
147
|
type: Number,
|
|
148
|
-
reflectToAttribute: true
|
|
148
|
+
reflectToAttribute: true,
|
|
149
149
|
},
|
|
150
150
|
|
|
151
151
|
/**
|
|
@@ -155,7 +155,7 @@ class ChartSeries extends PolymerElement {
|
|
|
155
155
|
*/
|
|
156
156
|
type: {
|
|
157
157
|
type: String,
|
|
158
|
-
reflectToAttribute: true
|
|
158
|
+
reflectToAttribute: true,
|
|
159
159
|
},
|
|
160
160
|
|
|
161
161
|
/**
|
|
@@ -164,7 +164,7 @@ class ChartSeries extends PolymerElement {
|
|
|
164
164
|
*/
|
|
165
165
|
title: {
|
|
166
166
|
type: String,
|
|
167
|
-
reflectToAttribute: true
|
|
167
|
+
reflectToAttribute: true,
|
|
168
168
|
},
|
|
169
169
|
|
|
170
170
|
/**
|
|
@@ -177,7 +177,7 @@ class ChartSeries extends PolymerElement {
|
|
|
177
177
|
*/
|
|
178
178
|
markers: {
|
|
179
179
|
type: String,
|
|
180
|
-
reflectToAttribute: true
|
|
180
|
+
reflectToAttribute: true,
|
|
181
181
|
},
|
|
182
182
|
|
|
183
183
|
/**
|
|
@@ -187,7 +187,7 @@ class ChartSeries extends PolymerElement {
|
|
|
187
187
|
*/
|
|
188
188
|
unit: {
|
|
189
189
|
type: String,
|
|
190
|
-
reflectToAttribute: true
|
|
190
|
+
reflectToAttribute: true,
|
|
191
191
|
},
|
|
192
192
|
|
|
193
193
|
/**
|
|
@@ -198,7 +198,7 @@ class ChartSeries extends PolymerElement {
|
|
|
198
198
|
*/
|
|
199
199
|
stack: {
|
|
200
200
|
type: String,
|
|
201
|
-
reflectToAttribute: true
|
|
201
|
+
reflectToAttribute: true,
|
|
202
202
|
},
|
|
203
203
|
|
|
204
204
|
/**
|
|
@@ -210,7 +210,7 @@ class ChartSeries extends PolymerElement {
|
|
|
210
210
|
*/
|
|
211
211
|
neckPosition: {
|
|
212
212
|
type: String,
|
|
213
|
-
reflectToAttribute: true
|
|
213
|
+
reflectToAttribute: true,
|
|
214
214
|
},
|
|
215
215
|
|
|
216
216
|
/**
|
|
@@ -222,7 +222,7 @@ class ChartSeries extends PolymerElement {
|
|
|
222
222
|
*/
|
|
223
223
|
neckWidth: {
|
|
224
224
|
type: String,
|
|
225
|
-
reflectToAttribute: true
|
|
225
|
+
reflectToAttribute: true,
|
|
226
226
|
},
|
|
227
227
|
|
|
228
228
|
/**
|
|
@@ -231,7 +231,7 @@ class ChartSeries extends PolymerElement {
|
|
|
231
231
|
* @readonly
|
|
232
232
|
*/
|
|
233
233
|
options: {
|
|
234
|
-
type: Object
|
|
234
|
+
type: Object,
|
|
235
235
|
},
|
|
236
236
|
|
|
237
237
|
/**
|
|
@@ -240,7 +240,7 @@ class ChartSeries extends PolymerElement {
|
|
|
240
240
|
*/
|
|
241
241
|
additionalOptions: {
|
|
242
242
|
type: Object,
|
|
243
|
-
reflectToAttribute: true
|
|
243
|
+
reflectToAttribute: true,
|
|
244
244
|
},
|
|
245
245
|
|
|
246
246
|
/**
|
|
@@ -248,8 +248,8 @@ class ChartSeries extends PolymerElement {
|
|
|
248
248
|
* @protected
|
|
249
249
|
*/
|
|
250
250
|
_series: {
|
|
251
|
-
type: Object
|
|
252
|
-
}
|
|
251
|
+
type: Object,
|
|
252
|
+
},
|
|
253
253
|
};
|
|
254
254
|
}
|
|
255
255
|
|
|
@@ -265,7 +265,7 @@ class ChartSeries extends PolymerElement {
|
|
|
265
265
|
'__unitObserver(unit, valueMin, valueMax, _series)',
|
|
266
266
|
'__valueMinObserver(valueMin, _series)',
|
|
267
267
|
'__valueMaxObserver(valueMax, _series)',
|
|
268
|
-
'__valuesObserver(values.splices, _series)'
|
|
268
|
+
'__valuesObserver(values.splices, _series)',
|
|
269
269
|
];
|
|
270
270
|
}
|
|
271
271
|
|
|
@@ -409,7 +409,7 @@ class ChartSeries extends PolymerElement {
|
|
|
409
409
|
}
|
|
410
410
|
|
|
411
411
|
series.update({
|
|
412
|
-
marker: this.__markersConfiguration
|
|
412
|
+
marker: this.__markersConfiguration,
|
|
413
413
|
});
|
|
414
414
|
}
|
|
415
415
|
|
|
@@ -434,7 +434,7 @@ class ChartSeries extends PolymerElement {
|
|
|
434
434
|
|
|
435
435
|
/** @private */
|
|
436
436
|
__showWarn(propertyName, acceptedValues) {
|
|
437
|
-
console.warn(
|
|
437
|
+
console.warn(`<vaadin-chart-series> Acceptable values for "${propertyName}" are ${acceptedValues}`);
|
|
438
438
|
}
|
|
439
439
|
}
|
|
440
440
|
|
package/src/vaadin-chart.d.ts
CHANGED
|
@@ -582,13 +582,13 @@ declare class Chart extends ResizeMixin(ThemableMixin(ElementMixin(HTMLElement))
|
|
|
582
582
|
addEventListener<K extends keyof ChartEventMap>(
|
|
583
583
|
type: K,
|
|
584
584
|
listener: (this: Chart, ev: ChartEventMap[K]) => void,
|
|
585
|
-
options?: boolean | AddEventListenerOptions
|
|
585
|
+
options?: boolean | AddEventListenerOptions,
|
|
586
586
|
): void;
|
|
587
587
|
|
|
588
588
|
removeEventListener<K extends keyof ChartEventMap>(
|
|
589
589
|
type: K,
|
|
590
590
|
listener: (this: Chart, ev: ChartEventMap[K]) => void,
|
|
591
|
-
options?: boolean | EventListenerOptions
|
|
591
|
+
options?: boolean | EventListenerOptions,
|
|
592
592
|
): void;
|
|
593
593
|
}
|
|
594
594
|
|
package/src/vaadin-chart.js
CHANGED
|
@@ -52,7 +52,7 @@ export function deepMerge(target, source) {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
['exportChart', 'exportChartLocal', 'getSVG'].forEach((methodName) => {
|
|
55
|
-
/* eslint-disable no-invalid-this */
|
|
55
|
+
/* eslint-disable no-invalid-this, prefer-arrow-callback */
|
|
56
56
|
Highcharts.wrap(Highcharts.Chart.prototype, methodName, function (proceed, ...args) {
|
|
57
57
|
Highcharts.fireEvent(this, 'beforeExport');
|
|
58
58
|
const result = proceed.apply(this, args);
|
|
@@ -62,6 +62,10 @@ export function deepMerge(target, source) {
|
|
|
62
62
|
/* eslint-enable no-invalid-this */
|
|
63
63
|
});
|
|
64
64
|
|
|
65
|
+
// Init Highcharts global language defaults
|
|
66
|
+
// No data message should be empty by default
|
|
67
|
+
Highcharts.setOptions({ lang: { noData: '' } });
|
|
68
|
+
|
|
65
69
|
/**
|
|
66
70
|
* `<vaadin-chart>` is a Web Component for creating high quality charts.
|
|
67
71
|
*
|
|
@@ -305,7 +309,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
305
309
|
*/
|
|
306
310
|
categories: {
|
|
307
311
|
type: Object,
|
|
308
|
-
reflectToAttribute: true
|
|
312
|
+
reflectToAttribute: true,
|
|
309
313
|
},
|
|
310
314
|
|
|
311
315
|
/**
|
|
@@ -314,7 +318,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
314
318
|
*/
|
|
315
319
|
categoryMax: {
|
|
316
320
|
type: Number,
|
|
317
|
-
reflectToAttribute: true
|
|
321
|
+
reflectToAttribute: true,
|
|
318
322
|
},
|
|
319
323
|
|
|
320
324
|
/**
|
|
@@ -323,7 +327,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
323
327
|
*/
|
|
324
328
|
categoryMin: {
|
|
325
329
|
type: Number,
|
|
326
|
-
reflectToAttribute: true
|
|
330
|
+
reflectToAttribute: true,
|
|
327
331
|
},
|
|
328
332
|
|
|
329
333
|
/**
|
|
@@ -339,7 +343,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
339
343
|
*/
|
|
340
344
|
categoryPosition: {
|
|
341
345
|
type: String,
|
|
342
|
-
reflectToAttribute: true
|
|
346
|
+
reflectToAttribute: true,
|
|
343
347
|
},
|
|
344
348
|
|
|
345
349
|
/**
|
|
@@ -349,7 +353,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
349
353
|
*/
|
|
350
354
|
noLegend: {
|
|
351
355
|
type: Boolean,
|
|
352
|
-
reflectToAttribute: true
|
|
356
|
+
reflectToAttribute: true,
|
|
353
357
|
},
|
|
354
358
|
|
|
355
359
|
/**
|
|
@@ -362,7 +366,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
362
366
|
*/
|
|
363
367
|
stacking: {
|
|
364
368
|
type: String,
|
|
365
|
-
reflectToAttribute: true
|
|
369
|
+
reflectToAttribute: true,
|
|
366
370
|
},
|
|
367
371
|
|
|
368
372
|
/**
|
|
@@ -370,7 +374,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
370
374
|
*/
|
|
371
375
|
timeline: {
|
|
372
376
|
type: Boolean,
|
|
373
|
-
reflectToAttribute: true
|
|
377
|
+
reflectToAttribute: true,
|
|
374
378
|
},
|
|
375
379
|
|
|
376
380
|
/**
|
|
@@ -379,7 +383,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
379
383
|
*/
|
|
380
384
|
title: {
|
|
381
385
|
type: String,
|
|
382
|
-
reflectToAttribute: true
|
|
386
|
+
reflectToAttribute: true,
|
|
383
387
|
},
|
|
384
388
|
|
|
385
389
|
/**
|
|
@@ -387,7 +391,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
387
391
|
*/
|
|
388
392
|
tooltip: {
|
|
389
393
|
type: Boolean,
|
|
390
|
-
reflectToAttribute: true
|
|
394
|
+
reflectToAttribute: true,
|
|
391
395
|
},
|
|
392
396
|
|
|
393
397
|
/**
|
|
@@ -396,7 +400,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
396
400
|
*/
|
|
397
401
|
type: {
|
|
398
402
|
type: String,
|
|
399
|
-
reflectToAttribute: true
|
|
403
|
+
reflectToAttribute: true,
|
|
400
404
|
},
|
|
401
405
|
|
|
402
406
|
/**
|
|
@@ -405,7 +409,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
405
409
|
*/
|
|
406
410
|
subtitle: {
|
|
407
411
|
type: String,
|
|
408
|
-
reflectToAttribute: true
|
|
412
|
+
reflectToAttribute: true,
|
|
409
413
|
},
|
|
410
414
|
|
|
411
415
|
/**
|
|
@@ -418,7 +422,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
418
422
|
*/
|
|
419
423
|
chart3d: {
|
|
420
424
|
type: Boolean,
|
|
421
|
-
reflectToAttribute: true
|
|
425
|
+
reflectToAttribute: true,
|
|
422
426
|
},
|
|
423
427
|
|
|
424
428
|
/**
|
|
@@ -428,8 +432,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
428
432
|
*/
|
|
429
433
|
emptyText: {
|
|
430
434
|
type: String,
|
|
431
|
-
|
|
432
|
-
reflectToAttribute: true
|
|
435
|
+
reflectToAttribute: true,
|
|
433
436
|
},
|
|
434
437
|
|
|
435
438
|
/**
|
|
@@ -438,7 +441,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
438
441
|
*/
|
|
439
442
|
additionalOptions: {
|
|
440
443
|
type: Object,
|
|
441
|
-
reflectToAttribute: true
|
|
444
|
+
reflectToAttribute: true,
|
|
442
445
|
},
|
|
443
446
|
|
|
444
447
|
/**
|
|
@@ -447,8 +450,8 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
447
450
|
*/
|
|
448
451
|
polar: {
|
|
449
452
|
type: Boolean,
|
|
450
|
-
reflectToAttribute: true
|
|
451
|
-
}
|
|
453
|
+
reflectToAttribute: true,
|
|
454
|
+
},
|
|
452
455
|
};
|
|
453
456
|
}
|
|
454
457
|
|
|
@@ -467,7 +470,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
467
470
|
'__updateSubtitle(subtitle, configuration)',
|
|
468
471
|
'__updateTitle(title, configuration)',
|
|
469
472
|
'__updateType(type, configuration)',
|
|
470
|
-
'__updateAdditionalOptions(additionalOptions.*)'
|
|
473
|
+
'__updateAdditionalOptions(additionalOptions.*)',
|
|
471
474
|
];
|
|
472
475
|
}
|
|
473
476
|
|
|
@@ -490,29 +493,29 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
490
493
|
|
|
491
494
|
this._baseConfig = {
|
|
492
495
|
chart: {
|
|
493
|
-
styledMode: true
|
|
496
|
+
styledMode: true,
|
|
494
497
|
},
|
|
495
498
|
credits: {
|
|
496
|
-
enabled: false
|
|
499
|
+
enabled: false,
|
|
497
500
|
},
|
|
498
501
|
exporting: {
|
|
499
|
-
enabled: false
|
|
502
|
+
enabled: false,
|
|
500
503
|
},
|
|
501
504
|
title: {
|
|
502
|
-
text: null
|
|
505
|
+
text: null,
|
|
503
506
|
},
|
|
504
507
|
series: [],
|
|
505
508
|
xAxis: {},
|
|
506
509
|
yAxis: {
|
|
507
|
-
axisGenerated: true
|
|
508
|
-
}
|
|
510
|
+
axisGenerated: true,
|
|
511
|
+
},
|
|
509
512
|
};
|
|
510
513
|
|
|
511
514
|
this._baseChart3d = {
|
|
512
515
|
enabled: true,
|
|
513
516
|
alpha: 15,
|
|
514
517
|
beta: 15,
|
|
515
|
-
depth: 50
|
|
518
|
+
depth: 50,
|
|
516
519
|
};
|
|
517
520
|
}
|
|
518
521
|
|
|
@@ -532,9 +535,17 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
532
535
|
this._jsonConfigurationBuffer = null;
|
|
533
536
|
this.__initChart(options);
|
|
534
537
|
this.__addChildObserver();
|
|
538
|
+
this.__checkTurboMode();
|
|
535
539
|
});
|
|
536
540
|
}
|
|
537
541
|
|
|
542
|
+
/** @protected */
|
|
543
|
+
ready() {
|
|
544
|
+
super.ready();
|
|
545
|
+
|
|
546
|
+
this.addEventListener('chart-redraw', this.__onRedraw.bind(this));
|
|
547
|
+
}
|
|
548
|
+
|
|
538
549
|
/**
|
|
539
550
|
* @return {!Options}
|
|
540
551
|
*/
|
|
@@ -554,7 +565,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
554
565
|
|
|
555
566
|
if (this.title) {
|
|
556
567
|
options.title = {
|
|
557
|
-
text: this.title
|
|
568
|
+
text: this.title,
|
|
558
569
|
};
|
|
559
570
|
}
|
|
560
571
|
|
|
@@ -568,7 +579,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
568
579
|
|
|
569
580
|
if (this.subtitle) {
|
|
570
581
|
options.subtitle = {
|
|
571
|
-
text: this.subtitle
|
|
582
|
+
text: this.subtitle,
|
|
572
583
|
};
|
|
573
584
|
}
|
|
574
585
|
|
|
@@ -604,7 +615,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
604
615
|
|
|
605
616
|
if (this.noLegend) {
|
|
606
617
|
options.legend = {
|
|
607
|
-
enabled: false
|
|
618
|
+
enabled: false,
|
|
608
619
|
};
|
|
609
620
|
}
|
|
610
621
|
|
|
@@ -741,7 +752,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
741
752
|
* @param {Object} detail.originalEvent object with details about the event sent
|
|
742
753
|
* @param {Object} chart Chart object where the event was sent from
|
|
743
754
|
*/
|
|
744
|
-
selection: 'chart-selection'
|
|
755
|
+
selection: 'chart-selection',
|
|
745
756
|
};
|
|
746
757
|
}
|
|
747
758
|
|
|
@@ -813,7 +824,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
813
824
|
* @param {Object} detail.originalEvent object with details about the event sent
|
|
814
825
|
* @param {Object} series Series object where the event was sent from
|
|
815
826
|
*/
|
|
816
|
-
show: 'series-show'
|
|
827
|
+
show: 'series-show',
|
|
817
828
|
};
|
|
818
829
|
}
|
|
819
830
|
|
|
@@ -885,7 +896,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
885
896
|
* @param {Object} detail.originalEvent object with details about the event sent
|
|
886
897
|
* @param {Object} point Point object where the event was sent from
|
|
887
898
|
*/
|
|
888
|
-
update: 'point-update'
|
|
899
|
+
update: 'point-update',
|
|
889
900
|
};
|
|
890
901
|
}
|
|
891
902
|
|
|
@@ -898,7 +909,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
898
909
|
* @param {Object} detail.originalEvent object with details about the event sent
|
|
899
910
|
* @param {Object} axis Point object where the event was sent from
|
|
900
911
|
*/
|
|
901
|
-
afterSetExtremes: 'xaxes-extremes-set'
|
|
912
|
+
afterSetExtremes: 'xaxes-extremes-set',
|
|
902
913
|
};
|
|
903
914
|
}
|
|
904
915
|
|
|
@@ -911,7 +922,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
911
922
|
* @param {Object} detail.originalEvent object with details about the event sent
|
|
912
923
|
* @param {Object} axis Point object where the event was sent from
|
|
913
924
|
*/
|
|
914
|
-
afterSetExtremes: 'yaxes-extremes-set'
|
|
925
|
+
afterSetExtremes: 'yaxes-extremes-set',
|
|
915
926
|
};
|
|
916
927
|
}
|
|
917
928
|
|
|
@@ -1032,13 +1043,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
1032
1043
|
// Best effort to make chart display custom empty-text messages when series are removed.
|
|
1033
1044
|
// This is needed because Highcharts currently doesn't react. A condition not catered for is
|
|
1034
1045
|
// when all points are removed from all series without removing any series.
|
|
1035
|
-
|
|
1036
|
-
this.configuration.series.length === 0 ||
|
|
1037
|
-
this.configuration.series.map((e) => e.data.length === 0).reduce((e1, e2) => e1 && e2, true);
|
|
1038
|
-
if (isEmpty) {
|
|
1039
|
-
this.configuration.hideNoData();
|
|
1040
|
-
this.configuration.showNoData(this.emptyText);
|
|
1041
|
-
}
|
|
1046
|
+
this.__updateNoDataElement(this.configuration);
|
|
1042
1047
|
}
|
|
1043
1048
|
|
|
1044
1049
|
/** @private */
|
|
@@ -1061,7 +1066,9 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
1061
1066
|
/** @protected */
|
|
1062
1067
|
disconnectedCallback() {
|
|
1063
1068
|
super.disconnectedCallback();
|
|
1064
|
-
|
|
1069
|
+
if (this._childObserver) {
|
|
1070
|
+
this._childObserver.disconnect();
|
|
1071
|
+
}
|
|
1065
1072
|
}
|
|
1066
1073
|
|
|
1067
1074
|
/**
|
|
@@ -1226,10 +1233,10 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
1226
1233
|
if (attr.indexOf('_fn_') === 0 && (typeof targetProperty === 'string' || targetProperty instanceof String)) {
|
|
1227
1234
|
try {
|
|
1228
1235
|
// eslint-disable-next-line no-eval
|
|
1229
|
-
jsonConfiguration[attr.substr(4)] = eval(
|
|
1236
|
+
jsonConfiguration[attr.substr(4)] = eval(`(${targetProperty})`);
|
|
1230
1237
|
} catch (e) {
|
|
1231
1238
|
// eslint-disable-next-line no-eval
|
|
1232
|
-
jsonConfiguration[attr.substr(4)] = eval(
|
|
1239
|
+
jsonConfiguration[attr.substr(4)] = eval(`(function(){${targetProperty}})`);
|
|
1233
1240
|
}
|
|
1234
1241
|
delete jsonConfiguration[attr];
|
|
1235
1242
|
} else if (targetProperty instanceof Object) {
|
|
@@ -1295,8 +1302,8 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
1295
1302
|
composed: true,
|
|
1296
1303
|
detail: {
|
|
1297
1304
|
originalEvent: event,
|
|
1298
|
-
[eventType]: event.target
|
|
1299
|
-
}
|
|
1305
|
+
[eventType]: event.target,
|
|
1306
|
+
},
|
|
1300
1307
|
};
|
|
1301
1308
|
|
|
1302
1309
|
if (event.type === 'afterSetExtremes') {
|
|
@@ -1346,12 +1353,11 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
1346
1353
|
|
|
1347
1354
|
// Zoom out a bit to avoid clipping the chart's edge on paper
|
|
1348
1355
|
effectiveCss =
|
|
1349
|
-
effectiveCss +
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
'}';
|
|
1356
|
+
`${effectiveCss}body {` +
|
|
1357
|
+
` -moz-transform: scale(0.9, 0.9);` + // Mozilla
|
|
1358
|
+
` zoom: 0.9;` + // Others
|
|
1359
|
+
` zoom: 90%;` + // Webkit
|
|
1360
|
+
`}`;
|
|
1355
1361
|
|
|
1356
1362
|
this.tempBodyStyle = document.createElement('style');
|
|
1357
1363
|
this.tempBodyStyle.textContent = effectiveCss;
|
|
@@ -1509,14 +1515,14 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
1509
1515
|
|
|
1510
1516
|
config.update({
|
|
1511
1517
|
chart: {
|
|
1512
|
-
inverted: this.__shouldInvert()
|
|
1513
|
-
}
|
|
1518
|
+
inverted: this.__shouldInvert(),
|
|
1519
|
+
},
|
|
1514
1520
|
});
|
|
1515
1521
|
|
|
1516
1522
|
config.xAxis.forEach((e) =>
|
|
1517
1523
|
e.update({
|
|
1518
|
-
opposite: this.__shouldFlipOpposite()
|
|
1519
|
-
})
|
|
1524
|
+
opposite: this.__shouldFlipOpposite(),
|
|
1525
|
+
}),
|
|
1520
1526
|
);
|
|
1521
1527
|
}
|
|
1522
1528
|
|
|
@@ -1561,7 +1567,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
1561
1567
|
|
|
1562
1568
|
if (type && type.length > 0) {
|
|
1563
1569
|
config.update({
|
|
1564
|
-
chart: { type }
|
|
1570
|
+
chart: { type },
|
|
1565
1571
|
});
|
|
1566
1572
|
}
|
|
1567
1573
|
}
|
|
@@ -1610,8 +1616,8 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
1610
1616
|
|
|
1611
1617
|
config.update({
|
|
1612
1618
|
plotOptions: {
|
|
1613
|
-
series: { stacking }
|
|
1614
|
-
}
|
|
1619
|
+
series: { stacking },
|
|
1620
|
+
},
|
|
1615
1621
|
});
|
|
1616
1622
|
}
|
|
1617
1623
|
|
|
@@ -1627,17 +1633,17 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
1627
1633
|
options3d: {
|
|
1628
1634
|
...this._baseChart3d,
|
|
1629
1635
|
...(this.additionalOptions && this.additionalOptions.chart && this.additionalOptions.chart.options3d),
|
|
1630
|
-
enabled: true
|
|
1631
|
-
}
|
|
1632
|
-
}
|
|
1636
|
+
enabled: true,
|
|
1637
|
+
},
|
|
1638
|
+
},
|
|
1633
1639
|
});
|
|
1634
1640
|
} else {
|
|
1635
1641
|
config.update({
|
|
1636
1642
|
chart: {
|
|
1637
1643
|
options3d: {
|
|
1638
|
-
enabled: false
|
|
1639
|
-
}
|
|
1640
|
-
}
|
|
1644
|
+
enabled: false,
|
|
1645
|
+
},
|
|
1646
|
+
},
|
|
1641
1647
|
});
|
|
1642
1648
|
}
|
|
1643
1649
|
}
|
|
@@ -1649,7 +1655,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
1649
1655
|
}
|
|
1650
1656
|
|
|
1651
1657
|
config.update({
|
|
1652
|
-
chart: { polar }
|
|
1658
|
+
chart: { polar },
|
|
1653
1659
|
});
|
|
1654
1660
|
}
|
|
1655
1661
|
|
|
@@ -1661,11 +1667,24 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
1661
1667
|
|
|
1662
1668
|
config.update({
|
|
1663
1669
|
lang: {
|
|
1664
|
-
noData: emptyText
|
|
1665
|
-
}
|
|
1670
|
+
noData: emptyText,
|
|
1671
|
+
},
|
|
1666
1672
|
});
|
|
1667
|
-
|
|
1668
|
-
|
|
1673
|
+
this.__updateNoDataElement(config);
|
|
1674
|
+
}
|
|
1675
|
+
|
|
1676
|
+
/**
|
|
1677
|
+
* Force the no data text element to become visible if the chart has no data.
|
|
1678
|
+
* This is necessary in cases where Highcharts does not update the element
|
|
1679
|
+
* automatically, for example when setting the language config
|
|
1680
|
+
* @private
|
|
1681
|
+
*/
|
|
1682
|
+
__updateNoDataElement(config) {
|
|
1683
|
+
const isEmpty = config.series.every((e) => e.data.length === 0);
|
|
1684
|
+
if (isEmpty) {
|
|
1685
|
+
config.hideNoData();
|
|
1686
|
+
config.showNoData(this.emptyText);
|
|
1687
|
+
}
|
|
1669
1688
|
}
|
|
1670
1689
|
|
|
1671
1690
|
/** @private */
|
|
@@ -1748,7 +1767,7 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
1748
1767
|
__updateStyles() {
|
|
1749
1768
|
// Chrome returns default value if property is not set
|
|
1750
1769
|
// check if flex is defined for chart, and different than default value
|
|
1751
|
-
const isFlex = getComputedStyle(this).flex
|
|
1770
|
+
const isFlex = getComputedStyle(this).flex !== '0 1 auto';
|
|
1752
1771
|
|
|
1753
1772
|
// If chart element is a flexible item the chartContainer should be flex too
|
|
1754
1773
|
if (isFlex) {
|
|
@@ -1769,7 +1788,35 @@ class Chart extends ResizeMixin(ElementMixin(ThemableMixin(PolymerElement))) {
|
|
|
1769
1788
|
|
|
1770
1789
|
/** @private */
|
|
1771
1790
|
__showWarn(propertyName, acceptedValues) {
|
|
1772
|
-
console.warn(
|
|
1791
|
+
console.warn(`<vaadin-chart> Acceptable values for "${propertyName}" are ${acceptedValues}`);
|
|
1792
|
+
}
|
|
1793
|
+
|
|
1794
|
+
/** @private */
|
|
1795
|
+
__onRedraw() {
|
|
1796
|
+
this.__checkTurboMode();
|
|
1797
|
+
}
|
|
1798
|
+
|
|
1799
|
+
/** @private */
|
|
1800
|
+
__checkTurboMode() {
|
|
1801
|
+
const isDevelopmentMode = !!window.Vaadin.developmentMode;
|
|
1802
|
+
|
|
1803
|
+
if (!this.configuration || !isDevelopmentMode || this.__turboModeWarningAlreadyLogged) {
|
|
1804
|
+
return;
|
|
1805
|
+
}
|
|
1806
|
+
|
|
1807
|
+
const exceedsTurboThreshold = this.configuration.series.some((series) => {
|
|
1808
|
+
const threshold = (series.options && series.options.turboThreshold) || 0;
|
|
1809
|
+
const dataLength = series.data.length;
|
|
1810
|
+
|
|
1811
|
+
return threshold > 0 && dataLength > threshold;
|
|
1812
|
+
});
|
|
1813
|
+
|
|
1814
|
+
if (exceedsTurboThreshold) {
|
|
1815
|
+
this.__turboModeWarningAlreadyLogged = true;
|
|
1816
|
+
console.warn(
|
|
1817
|
+
'<vaadin-chart> Turbo mode has been enabled for one or more series, because the number of data items exceeds the configured threshold. Turbo mode improves the performance of charts with lots of data, but is not compatible with every type of series. Please consult the documentation on compatibility, or how to disable turbo mode.',
|
|
1818
|
+
);
|
|
1819
|
+
}
|
|
1773
1820
|
}
|
|
1774
1821
|
}
|
|
1775
1822
|
|