chartkick 4.1.2 → 4.1.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +71 -59
- data/lib/chartkick/engine.rb +2 -2
- data/lib/chartkick/version.rb +1 -1
- data/vendor/assets/javascripts/Chart.bundle.js +504 -257
- metadata +3 -3
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Chart.js v3.
|
2
|
+
* Chart.js v3.7.0
|
3
3
|
* https://www.chartjs.org
|
4
4
|
* (c) 2021 Chart.js Contributors
|
5
5
|
* Released under the MIT License
|
@@ -9,9 +9,9 @@
|
|
9
9
|
* (c) 2021 chartjs-adapter-date-fns Contributors
|
10
10
|
* Released under the MIT license
|
11
11
|
*
|
12
|
-
* date-fns v2.
|
12
|
+
* date-fns v2.27.0
|
13
13
|
* https://date-fns.org
|
14
|
-
* (c)
|
14
|
+
* (c) 2021 Sasha Koss and Lesha Koss
|
15
15
|
* Released under the MIT License
|
16
16
|
*/
|
17
17
|
|
@@ -663,6 +663,10 @@
|
|
663
663
|
return true;
|
664
664
|
};
|
665
665
|
|
666
|
+
function _isClickEvent(e) {
|
667
|
+
return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';
|
668
|
+
}
|
669
|
+
|
666
670
|
var PI = Math.PI;
|
667
671
|
var TAU = 2 * PI;
|
668
672
|
var PITAU = TAU + PI;
|
@@ -809,6 +813,11 @@
|
|
809
813
|
return _limitValue(value, -32768, 32767);
|
810
814
|
}
|
811
815
|
|
816
|
+
function _isBetween(value, start, end) {
|
817
|
+
var epsilon = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1e-6;
|
818
|
+
return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;
|
819
|
+
}
|
820
|
+
|
812
821
|
var atEdge = function atEdge(t) {
|
813
822
|
return t === 0 || t === 1;
|
814
823
|
};
|
@@ -1737,6 +1746,7 @@
|
|
1737
1746
|
this.scale = undefined;
|
1738
1747
|
this.scales = {};
|
1739
1748
|
this.showLine = true;
|
1749
|
+
this.drawActiveElementsOnTop = true;
|
1740
1750
|
this.describe(_descriptors);
|
1741
1751
|
}
|
1742
1752
|
|
@@ -2166,7 +2176,7 @@
|
|
2166
2176
|
return size * value;
|
2167
2177
|
}
|
2168
2178
|
|
2169
|
-
var numberOrZero
|
2179
|
+
var numberOrZero = function numberOrZero(v) {
|
2170
2180
|
return +v || 0;
|
2171
2181
|
};
|
2172
2182
|
|
@@ -2188,7 +2198,7 @@
|
|
2188
2198
|
try {
|
2189
2199
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
2190
2200
|
var prop = _step2.value;
|
2191
|
-
ret[prop] = numberOrZero
|
2201
|
+
ret[prop] = numberOrZero(read(prop));
|
2192
2202
|
}
|
2193
2203
|
} catch (err) {
|
2194
2204
|
_iterator2.e(err);
|
@@ -2473,8 +2483,7 @@
|
|
2473
2483
|
},
|
2474
2484
|
set: function set(target, prop, value) {
|
2475
2485
|
var storage = target._storage || (target._storage = getTarget());
|
2476
|
-
storage[prop] = value;
|
2477
|
-
delete target[prop];
|
2486
|
+
target[prop] = storage[prop] = value;
|
2478
2487
|
delete target._keys;
|
2479
2488
|
return true;
|
2480
2489
|
}
|
@@ -2561,7 +2570,7 @@
|
|
2561
2570
|
};
|
2562
2571
|
|
2563
2572
|
var needsSubResolver = function needsSubResolver(prop, value) {
|
2564
|
-
return isObject(value) && prop !== 'adapters';
|
2573
|
+
return isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);
|
2565
2574
|
};
|
2566
2575
|
|
2567
2576
|
function _cached(target, prop, resolve) {
|
@@ -2612,7 +2621,7 @@
|
|
2612
2621
|
|
2613
2622
|
_stack.delete(prop);
|
2614
2623
|
|
2615
|
-
if (
|
2624
|
+
if (needsSubResolver(prop, value)) {
|
2616
2625
|
value = createSubResolver(_proxy._scopes, _proxy, prop, value);
|
2617
2626
|
}
|
2618
2627
|
|
@@ -2663,7 +2672,7 @@
|
|
2663
2672
|
return key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;
|
2664
2673
|
};
|
2665
2674
|
|
2666
|
-
function addScopes(set, parentScopes, key, parentFallback) {
|
2675
|
+
function addScopes(set, parentScopes, key, parentFallback, value) {
|
2667
2676
|
var _iterator4 = _createForOfIteratorHelper(parentScopes),
|
2668
2677
|
_step4;
|
2669
2678
|
|
@@ -2674,7 +2683,7 @@
|
|
2674
2683
|
|
2675
2684
|
if (scope) {
|
2676
2685
|
set.add(scope);
|
2677
|
-
var fallback = resolveFallback(scope._fallback, key,
|
2686
|
+
var fallback = resolveFallback(scope._fallback, key, value);
|
2678
2687
|
|
2679
2688
|
if (defined(fallback) && fallback !== key && fallback !== parentFallback) {
|
2680
2689
|
return fallback;
|
@@ -2698,14 +2707,14 @@
|
|
2698
2707
|
var allScopes = [].concat(_toConsumableArray(parentScopes), _toConsumableArray(rootScopes));
|
2699
2708
|
var set = new Set();
|
2700
2709
|
set.add(value);
|
2701
|
-
var key = addScopesFromKey(set, allScopes, prop, fallback || prop);
|
2710
|
+
var key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);
|
2702
2711
|
|
2703
2712
|
if (key === null) {
|
2704
2713
|
return false;
|
2705
2714
|
}
|
2706
2715
|
|
2707
2716
|
if (defined(fallback) && fallback !== prop) {
|
2708
|
-
key = addScopesFromKey(set, allScopes, fallback, key);
|
2717
|
+
key = addScopesFromKey(set, allScopes, fallback, key, value);
|
2709
2718
|
|
2710
2719
|
if (key === null) {
|
2711
2720
|
return false;
|
@@ -2717,9 +2726,9 @@
|
|
2717
2726
|
});
|
2718
2727
|
}
|
2719
2728
|
|
2720
|
-
function addScopesFromKey(set, allScopes, key, fallback) {
|
2729
|
+
function addScopesFromKey(set, allScopes, key, fallback, item) {
|
2721
2730
|
while (key) {
|
2722
|
-
key = addScopes(set, allScopes, key, fallback);
|
2731
|
+
key = addScopes(set, allScopes, key, fallback, item);
|
2723
2732
|
}
|
2724
2733
|
|
2725
2734
|
return key;
|
@@ -3379,9 +3388,7 @@
|
|
3379
3388
|
}
|
3380
3389
|
|
3381
3390
|
return {
|
3382
|
-
between:
|
3383
|
-
return n >= Math.min(s, e) && n <= Math.max(e, s);
|
3384
|
-
},
|
3391
|
+
between: _isBetween,
|
3385
3392
|
compare: function compare(a, b) {
|
3386
3393
|
return a - b;
|
3387
3394
|
},
|
@@ -4763,6 +4770,7 @@
|
|
4763
4770
|
var scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);
|
4764
4771
|
this.options = config.createResolver(scopes, this.getContext());
|
4765
4772
|
this._parsing = this.options.parsing;
|
4773
|
+
this._cachedDataOpts = {};
|
4766
4774
|
}
|
4767
4775
|
}, {
|
4768
4776
|
key: "parse",
|
@@ -5006,8 +5014,6 @@
|
|
5006
5014
|
key: "_update",
|
5007
5015
|
value: function _update(mode) {
|
5008
5016
|
var meta = this._cachedMeta;
|
5009
|
-
this.configure();
|
5010
|
-
this._cachedDataOpts = {};
|
5011
5017
|
this.update(mode || 'default');
|
5012
5018
|
meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));
|
5013
5019
|
}
|
@@ -5025,6 +5031,7 @@
|
|
5025
5031
|
var active = [];
|
5026
5032
|
var start = this._drawStart || 0;
|
5027
5033
|
var count = this._drawCount || elements.length - start;
|
5034
|
+
var drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;
|
5028
5035
|
var i;
|
5029
5036
|
|
5030
5037
|
if (meta.dataset) {
|
@@ -5038,7 +5045,7 @@
|
|
5038
5045
|
continue;
|
5039
5046
|
}
|
5040
5047
|
|
5041
|
-
if (element.active) {
|
5048
|
+
if (element.active && drawActiveElementsOnTop) {
|
5042
5049
|
active.push(element);
|
5043
5050
|
} else {
|
5044
5051
|
element.draw(ctx, area);
|
@@ -5323,6 +5330,8 @@
|
|
5323
5330
|
|
5324
5331
|
this[method](arg1, arg2);
|
5325
5332
|
}
|
5333
|
+
|
5334
|
+
this.chart._dataChanges.push([this.index].concat(_toConsumableArray(args)));
|
5326
5335
|
}
|
5327
5336
|
}, {
|
5328
5337
|
key: "_onDataPush",
|
@@ -5344,9 +5353,15 @@
|
|
5344
5353
|
}, {
|
5345
5354
|
key: "_onDataSplice",
|
5346
5355
|
value: function _onDataSplice(start, count) {
|
5347
|
-
|
5356
|
+
if (count) {
|
5357
|
+
this._sync(['_removeElements', start, count]);
|
5358
|
+
}
|
5359
|
+
|
5360
|
+
var newCount = arguments.length - 2;
|
5348
5361
|
|
5349
|
-
|
5362
|
+
if (newCount) {
|
5363
|
+
this._sync(['_insertElements', start, newCount]);
|
5364
|
+
}
|
5350
5365
|
}
|
5351
5366
|
}, {
|
5352
5367
|
key: "_onDataUnshift",
|
@@ -6429,11 +6444,6 @@
|
|
6429
6444
|
meta = chart.getDatasetMeta(i);
|
6430
6445
|
arcs = meta.data;
|
6431
6446
|
controller = meta.controller;
|
6432
|
-
|
6433
|
-
if (controller !== this) {
|
6434
|
-
controller.configure();
|
6435
|
-
}
|
6436
|
-
|
6437
6447
|
break;
|
6438
6448
|
}
|
6439
6449
|
}
|
@@ -7258,7 +7268,7 @@
|
|
7258
7268
|
_sorted = metaset._sorted;
|
7259
7269
|
var iScale = controller._cachedMeta.iScale;
|
7260
7270
|
|
7261
|
-
if (iScale && axis === iScale.axis && _sorted && data.length) {
|
7271
|
+
if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {
|
7262
7272
|
var lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;
|
7263
7273
|
|
7264
7274
|
if (!intersect) {
|
@@ -7338,23 +7348,50 @@
|
|
7338
7348
|
return items;
|
7339
7349
|
}
|
7340
7350
|
|
7341
|
-
function
|
7342
|
-
var distanceMetric = getDistanceMetricForAxis(axis);
|
7343
|
-
var minDistance = Number.POSITIVE_INFINITY;
|
7351
|
+
function getNearestRadialItems(chart, position, axis, useFinalPosition) {
|
7344
7352
|
var items = [];
|
7345
7353
|
|
7346
|
-
|
7347
|
-
|
7354
|
+
function evaluationFunc(element, datasetIndex, index) {
|
7355
|
+
var _element$getProps = element.getProps(['startAngle', 'endAngle'], useFinalPosition),
|
7356
|
+
startAngle = _element$getProps.startAngle,
|
7357
|
+
endAngle = _element$getProps.endAngle;
|
7358
|
+
|
7359
|
+
var _getAngleFromPoint = getAngleFromPoint(element, {
|
7360
|
+
x: position.x,
|
7361
|
+
y: position.y
|
7362
|
+
}),
|
7363
|
+
angle = _getAngleFromPoint.angle;
|
7364
|
+
|
7365
|
+
if (_angleBetween(angle, startAngle, endAngle)) {
|
7366
|
+
items.push({
|
7367
|
+
element: element,
|
7368
|
+
datasetIndex: datasetIndex,
|
7369
|
+
index: index
|
7370
|
+
});
|
7371
|
+
}
|
7348
7372
|
}
|
7349
7373
|
|
7350
|
-
|
7351
|
-
|
7374
|
+
optimizedEvaluateItems(chart, axis, position, evaluationFunc);
|
7375
|
+
return items;
|
7376
|
+
}
|
7377
|
+
|
7378
|
+
function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition) {
|
7379
|
+
var items = [];
|
7380
|
+
var distanceMetric = getDistanceMetricForAxis(axis);
|
7381
|
+
var minDistance = Number.POSITIVE_INFINITY;
|
7382
|
+
|
7383
|
+
function evaluationFunc(element, datasetIndex, index) {
|
7384
|
+
var inRange = element.inRange(position.x, position.y, useFinalPosition);
|
7385
|
+
|
7386
|
+
if (intersect && !inRange) {
|
7352
7387
|
return;
|
7353
7388
|
}
|
7354
7389
|
|
7355
7390
|
var center = element.getCenterPoint(useFinalPosition);
|
7356
7391
|
|
7357
|
-
|
7392
|
+
var pointInArea = _isPointInArea(center, chart.chartArea, chart._minPadding);
|
7393
|
+
|
7394
|
+
if (!pointInArea && !inRange) {
|
7358
7395
|
return;
|
7359
7396
|
}
|
7360
7397
|
|
@@ -7374,12 +7411,20 @@
|
|
7374
7411
|
index: index
|
7375
7412
|
});
|
7376
7413
|
}
|
7377
|
-
}
|
7414
|
+
}
|
7378
7415
|
|
7379
7416
|
optimizedEvaluateItems(chart, axis, position, evaluationFunc);
|
7380
7417
|
return items;
|
7381
7418
|
}
|
7382
7419
|
|
7420
|
+
function getNearestItems(chart, position, axis, intersect, useFinalPosition) {
|
7421
|
+
if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {
|
7422
|
+
return [];
|
7423
|
+
}
|
7424
|
+
|
7425
|
+
return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition);
|
7426
|
+
}
|
7427
|
+
|
7383
7428
|
function getAxisItems(chart, e, options, useFinalPosition) {
|
7384
7429
|
var position = getRelativePosition(e, chart);
|
7385
7430
|
var items = [];
|
@@ -7465,12 +7510,16 @@
|
|
7465
7510
|
return getNearestItems(chart, position, axis, options.intersect, useFinalPosition);
|
7466
7511
|
},
|
7467
7512
|
x: function x(chart, e, options, useFinalPosition) {
|
7468
|
-
|
7469
|
-
|
7513
|
+
return getAxisItems(chart, e, {
|
7514
|
+
axis: 'x',
|
7515
|
+
intersect: options.intersect
|
7516
|
+
}, useFinalPosition);
|
7470
7517
|
},
|
7471
7518
|
y: function y(chart, e, options, useFinalPosition) {
|
7472
|
-
|
7473
|
-
|
7519
|
+
return getAxisItems(chart, e, {
|
7520
|
+
axis: 'y',
|
7521
|
+
intersect: options.intersect
|
7522
|
+
}, useFinalPosition);
|
7474
7523
|
}
|
7475
7524
|
}
|
7476
7525
|
};
|
@@ -7888,7 +7937,12 @@
|
|
7888
7937
|
each(boxes.chartArea, function (layout) {
|
7889
7938
|
var box = layout.box;
|
7890
7939
|
Object.assign(box, chart.chartArea);
|
7891
|
-
box.update(chartArea.w, chartArea.h
|
7940
|
+
box.update(chartArea.w, chartArea.h, {
|
7941
|
+
left: 0,
|
7942
|
+
top: 0,
|
7943
|
+
right: 0,
|
7944
|
+
bottom: 0
|
7945
|
+
});
|
7892
7946
|
});
|
7893
7947
|
}
|
7894
7948
|
};
|
@@ -8052,37 +8106,47 @@
|
|
8052
8106
|
};
|
8053
8107
|
}
|
8054
8108
|
|
8109
|
+
function nodeListContains(nodeList, canvas) {
|
8110
|
+
var _iterator7 = _createForOfIteratorHelper(nodeList),
|
8111
|
+
_step7;
|
8112
|
+
|
8113
|
+
try {
|
8114
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
8115
|
+
var node = _step7.value;
|
8116
|
+
|
8117
|
+
if (node === canvas || node.contains(canvas)) {
|
8118
|
+
return true;
|
8119
|
+
}
|
8120
|
+
}
|
8121
|
+
} catch (err) {
|
8122
|
+
_iterator7.e(err);
|
8123
|
+
} finally {
|
8124
|
+
_iterator7.f();
|
8125
|
+
}
|
8126
|
+
}
|
8127
|
+
|
8055
8128
|
function createAttachObserver(chart, type, listener) {
|
8056
8129
|
var canvas = chart.canvas;
|
8057
8130
|
var observer = new MutationObserver(function (entries) {
|
8058
|
-
var
|
8059
|
-
_step7;
|
8060
|
-
|
8061
|
-
try {
|
8062
|
-
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
8063
|
-
var entry = _step7.value;
|
8131
|
+
var trigger = false;
|
8064
8132
|
|
8065
|
-
|
8066
|
-
|
8133
|
+
var _iterator8 = _createForOfIteratorHelper(entries),
|
8134
|
+
_step8;
|
8067
8135
|
|
8068
|
-
|
8069
|
-
|
8070
|
-
|
8071
|
-
|
8072
|
-
|
8073
|
-
return listener();
|
8074
|
-
}
|
8075
|
-
}
|
8076
|
-
} catch (err) {
|
8077
|
-
_iterator8.e(err);
|
8078
|
-
} finally {
|
8079
|
-
_iterator8.f();
|
8080
|
-
}
|
8136
|
+
try {
|
8137
|
+
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
8138
|
+
var entry = _step8.value;
|
8139
|
+
trigger = trigger || nodeListContains(entry.addedNodes, canvas);
|
8140
|
+
trigger = trigger && !nodeListContains(entry.removedNodes, canvas);
|
8081
8141
|
}
|
8082
8142
|
} catch (err) {
|
8083
|
-
|
8143
|
+
_iterator8.e(err);
|
8084
8144
|
} finally {
|
8085
|
-
|
8145
|
+
_iterator8.f();
|
8146
|
+
}
|
8147
|
+
|
8148
|
+
if (trigger) {
|
8149
|
+
listener();
|
8086
8150
|
}
|
8087
8151
|
});
|
8088
8152
|
observer.observe(document, {
|
@@ -8095,35 +8159,26 @@
|
|
8095
8159
|
function createDetachObserver(chart, type, listener) {
|
8096
8160
|
var canvas = chart.canvas;
|
8097
8161
|
var observer = new MutationObserver(function (entries) {
|
8162
|
+
var trigger = false;
|
8163
|
+
|
8098
8164
|
var _iterator9 = _createForOfIteratorHelper(entries),
|
8099
8165
|
_step9;
|
8100
8166
|
|
8101
8167
|
try {
|
8102
8168
|
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
8103
8169
|
var entry = _step9.value;
|
8104
|
-
|
8105
|
-
|
8106
|
-
_step10;
|
8107
|
-
|
8108
|
-
try {
|
8109
|
-
for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
|
8110
|
-
var node = _step10.value;
|
8111
|
-
|
8112
|
-
if (node === canvas || node.contains(canvas)) {
|
8113
|
-
return listener();
|
8114
|
-
}
|
8115
|
-
}
|
8116
|
-
} catch (err) {
|
8117
|
-
_iterator10.e(err);
|
8118
|
-
} finally {
|
8119
|
-
_iterator10.f();
|
8120
|
-
}
|
8170
|
+
trigger = trigger || nodeListContains(entry.removedNodes, canvas);
|
8171
|
+
trigger = trigger && !nodeListContains(entry.addedNodes, canvas);
|
8121
8172
|
}
|
8122
8173
|
} catch (err) {
|
8123
8174
|
_iterator9.e(err);
|
8124
8175
|
} finally {
|
8125
8176
|
_iterator9.f();
|
8126
8177
|
}
|
8178
|
+
|
8179
|
+
if (trigger) {
|
8180
|
+
listener();
|
8181
|
+
}
|
8127
8182
|
});
|
8128
8183
|
observer.observe(document, {
|
8129
8184
|
childList: true,
|
@@ -10560,7 +10615,7 @@
|
|
10560
10615
|
|
10561
10616
|
var result = this._notify(descriptors, chart, hook, args);
|
10562
10617
|
|
10563
|
-
if (hook === '
|
10618
|
+
if (hook === 'afterDestroy') {
|
10564
10619
|
this._notify(descriptors, chart, 'stop');
|
10565
10620
|
|
10566
10621
|
this._notify(this._init, chart, 'uninstall');
|
@@ -10573,12 +10628,12 @@
|
|
10573
10628
|
value: function _notify(descriptors, chart, hook, args) {
|
10574
10629
|
args = args || {};
|
10575
10630
|
|
10576
|
-
var
|
10577
|
-
|
10631
|
+
var _iterator10 = _createForOfIteratorHelper(descriptors),
|
10632
|
+
_step10;
|
10578
10633
|
|
10579
10634
|
try {
|
10580
|
-
for (
|
10581
|
-
var descriptor =
|
10635
|
+
for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
|
10636
|
+
var descriptor = _step10.value;
|
10582
10637
|
var plugin = descriptor.plugin;
|
10583
10638
|
var method = plugin[hook];
|
10584
10639
|
var params = [chart, args, descriptor.options];
|
@@ -10588,9 +10643,9 @@
|
|
10588
10643
|
}
|
10589
10644
|
}
|
10590
10645
|
} catch (err) {
|
10591
|
-
|
10646
|
+
_iterator10.e(err);
|
10592
10647
|
} finally {
|
10593
|
-
|
10648
|
+
_iterator10.f();
|
10594
10649
|
}
|
10595
10650
|
|
10596
10651
|
return true;
|
@@ -11023,18 +11078,18 @@
|
|
11023
11078
|
options = _attachContext(resolver, context, subResolver);
|
11024
11079
|
}
|
11025
11080
|
|
11026
|
-
var
|
11027
|
-
|
11081
|
+
var _iterator11 = _createForOfIteratorHelper(names),
|
11082
|
+
_step11;
|
11028
11083
|
|
11029
11084
|
try {
|
11030
|
-
for (
|
11031
|
-
var prop =
|
11085
|
+
for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
|
11086
|
+
var prop = _step11.value;
|
11032
11087
|
result[prop] = options[prop];
|
11033
11088
|
}
|
11034
11089
|
} catch (err) {
|
11035
|
-
|
11090
|
+
_iterator11.e(err);
|
11036
11091
|
} finally {
|
11037
|
-
|
11092
|
+
_iterator11.f();
|
11038
11093
|
}
|
11039
11094
|
|
11040
11095
|
return result;
|
@@ -11092,12 +11147,12 @@
|
|
11092
11147
|
isScriptable = _descriptors2.isScriptable,
|
11093
11148
|
isIndexable = _descriptors2.isIndexable;
|
11094
11149
|
|
11095
|
-
var
|
11096
|
-
|
11150
|
+
var _iterator12 = _createForOfIteratorHelper(names),
|
11151
|
+
_step12;
|
11097
11152
|
|
11098
11153
|
try {
|
11099
|
-
for (
|
11100
|
-
var prop =
|
11154
|
+
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
|
11155
|
+
var prop = _step12.value;
|
11101
11156
|
var scriptable = isScriptable(prop);
|
11102
11157
|
var indexable = isIndexable(prop);
|
11103
11158
|
var value = (indexable || scriptable) && proxy[prop];
|
@@ -11107,15 +11162,15 @@
|
|
11107
11162
|
}
|
11108
11163
|
}
|
11109
11164
|
} catch (err) {
|
11110
|
-
|
11165
|
+
_iterator12.e(err);
|
11111
11166
|
} finally {
|
11112
|
-
|
11167
|
+
_iterator12.f();
|
11113
11168
|
}
|
11114
11169
|
|
11115
11170
|
return false;
|
11116
11171
|
}
|
11117
11172
|
|
11118
|
-
var version = "3.
|
11173
|
+
var version = "3.7.0";
|
11119
11174
|
var KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];
|
11120
11175
|
|
11121
11176
|
function positionIsHorizontal(position, axis) {
|
@@ -11164,6 +11219,36 @@
|
|
11164
11219
|
}).pop();
|
11165
11220
|
};
|
11166
11221
|
|
11222
|
+
function moveNumericKeys(obj, start, move) {
|
11223
|
+
var keys = Object.keys(obj);
|
11224
|
+
|
11225
|
+
for (var _i2 = 0, _keys = keys; _i2 < _keys.length; _i2++) {
|
11226
|
+
var key = _keys[_i2];
|
11227
|
+
var intKey = +key;
|
11228
|
+
|
11229
|
+
if (intKey >= start) {
|
11230
|
+
var value = obj[key];
|
11231
|
+
delete obj[key];
|
11232
|
+
|
11233
|
+
if (move > 0 || intKey > start) {
|
11234
|
+
obj[intKey + move] = value;
|
11235
|
+
}
|
11236
|
+
}
|
11237
|
+
}
|
11238
|
+
}
|
11239
|
+
|
11240
|
+
function determineLastEvent(e, lastEvent, inChartArea, isClick) {
|
11241
|
+
if (!inChartArea || e.type === 'mouseout') {
|
11242
|
+
return null;
|
11243
|
+
}
|
11244
|
+
|
11245
|
+
if (isClick) {
|
11246
|
+
return lastEvent;
|
11247
|
+
}
|
11248
|
+
|
11249
|
+
return e;
|
11250
|
+
}
|
11251
|
+
|
11167
11252
|
var Chart = /*#__PURE__*/function () {
|
11168
11253
|
function Chart(item, userConfig) {
|
11169
11254
|
var _this11 = this;
|
@@ -11213,6 +11298,7 @@
|
|
11213
11298
|
this._doResize = debounce(function (mode) {
|
11214
11299
|
return _this11.update(mode);
|
11215
11300
|
}, options.resizeDelay || 0);
|
11301
|
+
this._dataChanges = [];
|
11216
11302
|
instances[this.id] = this;
|
11217
11303
|
|
11218
11304
|
if (!context || !canvas) {
|
@@ -11515,24 +11601,16 @@
|
|
11515
11601
|
}, {
|
11516
11602
|
key: "update",
|
11517
11603
|
value: function update(mode) {
|
11518
|
-
var _this15 = this;
|
11519
|
-
|
11520
11604
|
var config = this.config;
|
11521
11605
|
config.update();
|
11522
11606
|
var options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());
|
11523
|
-
each(this.scales, function (scale) {
|
11524
|
-
layouts.removeBox(_this15, scale);
|
11525
|
-
});
|
11526
11607
|
var animsDisabled = this._animationsDisabled = !options.animation;
|
11527
|
-
this.ensureScalesHaveIDs();
|
11528
|
-
this.buildOrUpdateScales();
|
11529
|
-
var existingEvents = new Set(Object.keys(this._listeners));
|
11530
|
-
var newEvents = new Set(options.events);
|
11531
11608
|
|
11532
|
-
|
11533
|
-
|
11534
|
-
|
11535
|
-
|
11609
|
+
this._updateScales();
|
11610
|
+
|
11611
|
+
this._checkEventBindings();
|
11612
|
+
|
11613
|
+
this._updateHiddenIndices();
|
11536
11614
|
|
11537
11615
|
this._plugins.invalidate();
|
11538
11616
|
|
@@ -11574,12 +11652,102 @@
|
|
11574
11652
|
|
11575
11653
|
this._layers.sort(compare2Level('z', '_idx'));
|
11576
11654
|
|
11577
|
-
|
11578
|
-
|
11655
|
+
var _active = this._active,
|
11656
|
+
_lastEvent = this._lastEvent;
|
11657
|
+
|
11658
|
+
if (_lastEvent) {
|
11659
|
+
this._eventHandler(_lastEvent, true);
|
11660
|
+
} else if (_active.length) {
|
11661
|
+
this._updateHoverStyles(_active, _active, true);
|
11579
11662
|
}
|
11580
11663
|
|
11581
11664
|
this.render();
|
11582
11665
|
}
|
11666
|
+
}, {
|
11667
|
+
key: "_updateScales",
|
11668
|
+
value: function _updateScales() {
|
11669
|
+
var _this15 = this;
|
11670
|
+
|
11671
|
+
each(this.scales, function (scale) {
|
11672
|
+
layouts.removeBox(_this15, scale);
|
11673
|
+
});
|
11674
|
+
this.ensureScalesHaveIDs();
|
11675
|
+
this.buildOrUpdateScales();
|
11676
|
+
}
|
11677
|
+
}, {
|
11678
|
+
key: "_checkEventBindings",
|
11679
|
+
value: function _checkEventBindings() {
|
11680
|
+
var options = this.options;
|
11681
|
+
var existingEvents = new Set(Object.keys(this._listeners));
|
11682
|
+
var newEvents = new Set(options.events);
|
11683
|
+
|
11684
|
+
if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {
|
11685
|
+
this.unbindEvents();
|
11686
|
+
this.bindEvents();
|
11687
|
+
}
|
11688
|
+
}
|
11689
|
+
}, {
|
11690
|
+
key: "_updateHiddenIndices",
|
11691
|
+
value: function _updateHiddenIndices() {
|
11692
|
+
var _hiddenIndices = this._hiddenIndices;
|
11693
|
+
var changes = this._getUniformDataChanges() || [];
|
11694
|
+
|
11695
|
+
var _iterator13 = _createForOfIteratorHelper(changes),
|
11696
|
+
_step13;
|
11697
|
+
|
11698
|
+
try {
|
11699
|
+
for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
|
11700
|
+
var _step13$value = _step13.value,
|
11701
|
+
method = _step13$value.method,
|
11702
|
+
start = _step13$value.start,
|
11703
|
+
count = _step13$value.count;
|
11704
|
+
var move = method === '_removeElements' ? -count : count;
|
11705
|
+
moveNumericKeys(_hiddenIndices, start, move);
|
11706
|
+
}
|
11707
|
+
} catch (err) {
|
11708
|
+
_iterator13.e(err);
|
11709
|
+
} finally {
|
11710
|
+
_iterator13.f();
|
11711
|
+
}
|
11712
|
+
}
|
11713
|
+
}, {
|
11714
|
+
key: "_getUniformDataChanges",
|
11715
|
+
value: function _getUniformDataChanges() {
|
11716
|
+
var _dataChanges = this._dataChanges;
|
11717
|
+
|
11718
|
+
if (!_dataChanges || !_dataChanges.length) {
|
11719
|
+
return;
|
11720
|
+
}
|
11721
|
+
|
11722
|
+
this._dataChanges = [];
|
11723
|
+
var datasetCount = this.data.datasets.length;
|
11724
|
+
|
11725
|
+
var makeSet = function makeSet(idx) {
|
11726
|
+
return new Set(_dataChanges.filter(function (c) {
|
11727
|
+
return c[0] === idx;
|
11728
|
+
}).map(function (c, i) {
|
11729
|
+
return i + ',' + c.splice(1).join(',');
|
11730
|
+
}));
|
11731
|
+
};
|
11732
|
+
|
11733
|
+
var changeSet = makeSet(0);
|
11734
|
+
|
11735
|
+
for (var i = 1; i < datasetCount; i++) {
|
11736
|
+
if (!setsEqual(changeSet, makeSet(i))) {
|
11737
|
+
return;
|
11738
|
+
}
|
11739
|
+
}
|
11740
|
+
|
11741
|
+
return Array.from(changeSet).map(function (c) {
|
11742
|
+
return c.split(',');
|
11743
|
+
}).map(function (a) {
|
11744
|
+
return {
|
11745
|
+
method: a[1],
|
11746
|
+
start: +a[2],
|
11747
|
+
count: +a[3]
|
11748
|
+
};
|
11749
|
+
});
|
11750
|
+
}
|
11583
11751
|
}, {
|
11584
11752
|
key: "_updateLayout",
|
11585
11753
|
value: function _updateLayout(minPadding) {
|
@@ -11626,8 +11794,12 @@
|
|
11626
11794
|
}
|
11627
11795
|
|
11628
11796
|
for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {
|
11629
|
-
this.
|
11630
|
-
|
11797
|
+
this.getDatasetMeta(i).controller.configure();
|
11798
|
+
}
|
11799
|
+
|
11800
|
+
for (var _i3 = 0, _ilen = this.data.datasets.length; _i3 < _ilen; ++_i3) {
|
11801
|
+
this._updateDataset(_i3, isFunction(mode) ? mode({
|
11802
|
+
datasetIndex: _i3
|
11631
11803
|
}) : mode);
|
11632
11804
|
}
|
11633
11805
|
|
@@ -11927,6 +12099,7 @@
|
|
11927
12099
|
}, {
|
11928
12100
|
key: "destroy",
|
11929
12101
|
value: function destroy() {
|
12102
|
+
this.notifyPlugins('beforeDestroy');
|
11930
12103
|
var canvas = this.canvas,
|
11931
12104
|
ctx = this.ctx;
|
11932
12105
|
|
@@ -11944,6 +12117,7 @@
|
|
11944
12117
|
|
11945
12118
|
this.notifyPlugins('destroy');
|
11946
12119
|
delete instances[this.id];
|
12120
|
+
this.notifyPlugins('afterDestroy');
|
11947
12121
|
}
|
11948
12122
|
}, {
|
11949
12123
|
key: "toBase64Image",
|
@@ -12114,6 +12288,7 @@
|
|
12114
12288
|
|
12115
12289
|
if (changed) {
|
12116
12290
|
this._active = active;
|
12291
|
+
this._lastEvent = null;
|
12117
12292
|
|
12118
12293
|
this._updateHoverStyles(active, lastActive);
|
12119
12294
|
}
|
@@ -12155,7 +12330,8 @@
|
|
12155
12330
|
var args = {
|
12156
12331
|
event: e,
|
12157
12332
|
replay: replay,
|
12158
|
-
cancelable: true
|
12333
|
+
cancelable: true,
|
12334
|
+
inChartArea: _isPointInArea(e, this.chartArea, this._minPadding)
|
12159
12335
|
};
|
12160
12336
|
|
12161
12337
|
var eventFilter = function eventFilter(plugin) {
|
@@ -12166,7 +12342,7 @@
|
|
12166
12342
|
return;
|
12167
12343
|
}
|
12168
12344
|
|
12169
|
-
var changed = this._handleEvent(e, replay);
|
12345
|
+
var changed = this._handleEvent(e, replay, args.inChartArea);
|
12170
12346
|
|
12171
12347
|
args.cancelable = false;
|
12172
12348
|
this.notifyPlugins('afterEvent', args, eventFilter);
|
@@ -12179,32 +12355,28 @@
|
|
12179
12355
|
}
|
12180
12356
|
}, {
|
12181
12357
|
key: "_handleEvent",
|
12182
|
-
value: function _handleEvent(e, replay) {
|
12358
|
+
value: function _handleEvent(e, replay, inChartArea) {
|
12183
12359
|
var _this$_active = this._active,
|
12184
12360
|
lastActive = _this$_active === void 0 ? [] : _this$_active,
|
12185
12361
|
options = this.options;
|
12186
|
-
var hoverOptions = options.hover;
|
12187
12362
|
var useFinalPosition = replay;
|
12188
|
-
var active = [];
|
12189
|
-
var changed = false;
|
12190
|
-
var lastEvent = null;
|
12191
12363
|
|
12192
|
-
|
12193
|
-
|
12194
|
-
|
12195
|
-
}
|
12364
|
+
var active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);
|
12365
|
+
|
12366
|
+
var isClick = _isClickEvent(e);
|
12196
12367
|
|
12197
|
-
this._lastEvent
|
12368
|
+
var lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);
|
12198
12369
|
|
12199
|
-
if (
|
12370
|
+
if (inChartArea) {
|
12371
|
+
this._lastEvent = null;
|
12200
12372
|
callback(options.onHover, [e, active, this], this);
|
12201
12373
|
|
12202
|
-
if (
|
12374
|
+
if (isClick) {
|
12203
12375
|
callback(options.onClick, [e, active, this], this);
|
12204
12376
|
}
|
12205
12377
|
}
|
12206
12378
|
|
12207
|
-
changed = !_elementsEqual(active, lastActive);
|
12379
|
+
var changed = !_elementsEqual(active, lastActive);
|
12208
12380
|
|
12209
12381
|
if (changed || replay) {
|
12210
12382
|
this._active = active;
|
@@ -12215,6 +12387,20 @@
|
|
12215
12387
|
this._lastEvent = lastEvent;
|
12216
12388
|
return changed;
|
12217
12389
|
}
|
12390
|
+
}, {
|
12391
|
+
key: "_getActiveElements",
|
12392
|
+
value: function _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {
|
12393
|
+
if (e.type === 'mouseout') {
|
12394
|
+
return [];
|
12395
|
+
}
|
12396
|
+
|
12397
|
+
if (!inChartArea) {
|
12398
|
+
return lastActive;
|
12399
|
+
}
|
12400
|
+
|
12401
|
+
var hoverOptions = this.options.hover;
|
12402
|
+
return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);
|
12403
|
+
}
|
12218
12404
|
}]);
|
12219
12405
|
|
12220
12406
|
return Chart;
|
@@ -12452,18 +12638,20 @@
|
|
12452
12638
|
|
12453
12639
|
function drawBorder(ctx, element, offset, spacing, endAngle) {
|
12454
12640
|
var options = element.options;
|
12641
|
+
var borderWidth = options.borderWidth,
|
12642
|
+
borderJoinStyle = options.borderJoinStyle;
|
12455
12643
|
var inner = options.borderAlign === 'inner';
|
12456
12644
|
|
12457
|
-
if (!
|
12645
|
+
if (!borderWidth) {
|
12458
12646
|
return;
|
12459
12647
|
}
|
12460
12648
|
|
12461
12649
|
if (inner) {
|
12462
|
-
ctx.lineWidth =
|
12463
|
-
ctx.lineJoin = 'round';
|
12650
|
+
ctx.lineWidth = borderWidth * 2;
|
12651
|
+
ctx.lineJoin = borderJoinStyle || 'round';
|
12464
12652
|
} else {
|
12465
|
-
ctx.lineWidth =
|
12466
|
-
ctx.lineJoin = 'bevel';
|
12653
|
+
ctx.lineWidth = borderWidth;
|
12654
|
+
ctx.lineJoin = borderJoinStyle || 'bevel';
|
12467
12655
|
}
|
12468
12656
|
|
12469
12657
|
if (element.fullCircles) {
|
@@ -12510,12 +12698,12 @@
|
|
12510
12698
|
value: function inRange(chartX, chartY, useFinalPosition) {
|
12511
12699
|
var point = this.getProps(['x', 'y'], useFinalPosition);
|
12512
12700
|
|
12513
|
-
var
|
12701
|
+
var _getAngleFromPoint2 = getAngleFromPoint(point, {
|
12514
12702
|
x: chartX,
|
12515
12703
|
y: chartY
|
12516
12704
|
}),
|
12517
|
-
angle =
|
12518
|
-
distance =
|
12705
|
+
angle = _getAngleFromPoint2.angle,
|
12706
|
+
distance = _getAngleFromPoint2.distance;
|
12519
12707
|
|
12520
12708
|
var _this$getProps2 = this.getProps(['startAngle', 'endAngle', 'innerRadius', 'outerRadius', 'circumference'], useFinalPosition),
|
12521
12709
|
startAngle = _this$getProps2.startAngle,
|
@@ -12526,9 +12714,12 @@
|
|
12526
12714
|
|
12527
12715
|
var rAdjust = this.options.spacing / 2;
|
12528
12716
|
|
12529
|
-
var
|
12717
|
+
var _circumference = valueOrDefault(circumference, endAngle - startAngle);
|
12718
|
+
|
12719
|
+
var betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);
|
12720
|
+
|
12721
|
+
var withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);
|
12530
12722
|
|
12531
|
-
var withinRadius = distance >= innerRadius + rAdjust && distance <= outerRadius + rAdjust;
|
12532
12723
|
return betweenAngles && withinRadius;
|
12533
12724
|
}
|
12534
12725
|
}, {
|
@@ -12599,6 +12790,7 @@
|
|
12599
12790
|
ArcElement.defaults = {
|
12600
12791
|
borderAlign: 'center',
|
12601
12792
|
borderColor: '#fff',
|
12793
|
+
borderJoinStyle: undefined,
|
12602
12794
|
borderRadius: 0,
|
12603
12795
|
borderWidth: 2,
|
12604
12796
|
offset: 0,
|
@@ -13257,7 +13449,7 @@
|
|
13257
13449
|
var skipY = y === null;
|
13258
13450
|
var skipBoth = skipX && skipY;
|
13259
13451
|
var bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);
|
13260
|
-
return bounds && (skipX || x
|
13452
|
+
return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom));
|
13261
13453
|
}
|
13262
13454
|
|
13263
13455
|
function hasRadius(radius) {
|
@@ -13952,7 +14144,7 @@
|
|
13952
14144
|
var firstValue = linePoints[segment.start][property];
|
13953
14145
|
var lastValue = linePoints[segment.end][property];
|
13954
14146
|
|
13955
|
-
if (pointValue
|
14147
|
+
if (_isBetween(pointValue, firstValue, lastValue)) {
|
13956
14148
|
first = pointValue === firstValue;
|
13957
14149
|
last = pointValue === lastValue;
|
13958
14150
|
break;
|
@@ -14906,13 +15098,13 @@
|
|
14906
15098
|
value: function _getLegendItemAt(x, y) {
|
14907
15099
|
var i, hitBox, lh;
|
14908
15100
|
|
14909
|
-
if (x
|
15101
|
+
if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {
|
14910
15102
|
lh = this.legendHitBoxes;
|
14911
15103
|
|
14912
15104
|
for (i = 0; i < lh.length; ++i) {
|
14913
15105
|
hitBox = lh[i];
|
14914
15106
|
|
14915
|
-
if (x
|
15107
|
+
if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {
|
14916
15108
|
return this.legendItems[i];
|
14917
15109
|
}
|
14918
15110
|
}
|
@@ -15400,7 +15592,7 @@
|
|
15400
15592
|
}
|
15401
15593
|
|
15402
15594
|
function getTooltipSize(tooltip, options) {
|
15403
|
-
var ctx = tooltip.
|
15595
|
+
var ctx = tooltip.chart.ctx;
|
15404
15596
|
var body = tooltip.body,
|
15405
15597
|
footer = tooltip.footer,
|
15406
15598
|
title = tooltip.title;
|
@@ -15513,9 +15705,9 @@
|
|
15513
15705
|
}
|
15514
15706
|
|
15515
15707
|
function determineAlignment(chart, options, size) {
|
15516
|
-
var yAlign = options.yAlign || determineYAlign(chart, size);
|
15708
|
+
var yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);
|
15517
15709
|
return {
|
15518
|
-
xAlign: options.xAlign || determineXAlign(chart, options, size, yAlign),
|
15710
|
+
xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),
|
15519
15711
|
yAlign: yAlign
|
15520
15712
|
};
|
15521
15713
|
}
|
@@ -15572,9 +15764,9 @@
|
|
15572
15764
|
x -= paddingAndSize;
|
15573
15765
|
}
|
15574
15766
|
} else if (xAlign === 'left') {
|
15575
|
-
x -= Math.max(topLeft, bottomLeft) +
|
15767
|
+
x -= Math.max(topLeft, bottomLeft) + caretSize;
|
15576
15768
|
} else if (xAlign === 'right') {
|
15577
|
-
x += Math.max(topRight, bottomRight) +
|
15769
|
+
x += Math.max(topRight, bottomRight) + caretSize;
|
15578
15770
|
}
|
15579
15771
|
|
15580
15772
|
return {
|
@@ -15618,13 +15810,14 @@
|
|
15618
15810
|
_this30 = _super18.call(this);
|
15619
15811
|
_this30.opacity = 0;
|
15620
15812
|
_this30._active = [];
|
15621
|
-
_this30._chart = config._chart;
|
15622
15813
|
_this30._eventPosition = undefined;
|
15623
15814
|
_this30._size = undefined;
|
15624
15815
|
_this30._cachedAnimations = undefined;
|
15625
15816
|
_this30._tooltipItems = [];
|
15626
15817
|
_this30.$animations = undefined;
|
15627
15818
|
_this30.$context = undefined;
|
15819
|
+
_this30.chart = config.chart || config._chart;
|
15820
|
+
_this30._chart = _this30.chart;
|
15628
15821
|
_this30.options = config.options;
|
15629
15822
|
_this30.dataPoints = undefined;
|
15630
15823
|
_this30.title = undefined;
|
@@ -15662,10 +15855,10 @@
|
|
15662
15855
|
return cached;
|
15663
15856
|
}
|
15664
15857
|
|
15665
|
-
var chart = this.
|
15858
|
+
var chart = this.chart;
|
15666
15859
|
var options = this.options.setContext(this.getContext());
|
15667
15860
|
var opts = options.enabled && chart.options.animation && options.animations;
|
15668
|
-
var animations = new Animations(this.
|
15861
|
+
var animations = new Animations(this.chart, opts);
|
15669
15862
|
|
15670
15863
|
if (opts._cacheable) {
|
15671
15864
|
this._cachedAnimations = Object.freeze(animations);
|
@@ -15676,7 +15869,7 @@
|
|
15676
15869
|
}, {
|
15677
15870
|
key: "getContext",
|
15678
15871
|
value: function getContext() {
|
15679
|
-
return this.$context || (this.$context = createTooltipContext(this.
|
15872
|
+
return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));
|
15680
15873
|
}
|
15681
15874
|
}, {
|
15682
15875
|
key: "getTitle",
|
@@ -15741,7 +15934,7 @@
|
|
15741
15934
|
var _this32 = this;
|
15742
15935
|
|
15743
15936
|
var active = this._active;
|
15744
|
-
var data = this.
|
15937
|
+
var data = this.chart.data;
|
15745
15938
|
var labelColors = [];
|
15746
15939
|
var labelPointStyles = [];
|
15747
15940
|
var labelTextColors = [];
|
@@ -15749,7 +15942,7 @@
|
|
15749
15942
|
var i, len;
|
15750
15943
|
|
15751
15944
|
for (i = 0, len = active.length; i < len; ++i) {
|
15752
|
-
tooltipItems.push(createTooltipItem(this.
|
15945
|
+
tooltipItems.push(createTooltipItem(this.chart, active[i]));
|
15753
15946
|
}
|
15754
15947
|
|
15755
15948
|
if (options.filter) {
|
@@ -15800,8 +15993,8 @@
|
|
15800
15993
|
this.footer = this.getFooter(tooltipItems, options);
|
15801
15994
|
var size = this._size = getTooltipSize(this, options);
|
15802
15995
|
var positionAndSize = Object.assign({}, position, size);
|
15803
|
-
var alignment = determineAlignment(this.
|
15804
|
-
var backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.
|
15996
|
+
var alignment = determineAlignment(this.chart, options, positionAndSize);
|
15997
|
+
var backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);
|
15805
15998
|
this.xAlign = alignment.xAlign;
|
15806
15999
|
this.yAlign = alignment.yAlign;
|
15807
16000
|
properties = {
|
@@ -15824,7 +16017,7 @@
|
|
15824
16017
|
|
15825
16018
|
if (changed && options.external) {
|
15826
16019
|
options.external.call(this, {
|
15827
|
-
chart: this.
|
16020
|
+
chart: this.chart,
|
15828
16021
|
tooltip: this,
|
15829
16022
|
replay: replay
|
15830
16023
|
});
|
@@ -16145,7 +16338,7 @@
|
|
16145
16338
|
}, {
|
16146
16339
|
key: "_updateAnimationTarget",
|
16147
16340
|
value: function _updateAnimationTarget(options) {
|
16148
|
-
var chart = this.
|
16341
|
+
var chart = this.chart;
|
16149
16342
|
var anims = this.$animations;
|
16150
16343
|
var animX = anims && anims.x;
|
16151
16344
|
var animY = anims && anims.y;
|
@@ -16226,7 +16419,7 @@
|
|
16226
16419
|
var datasetIndex = _ref9.datasetIndex,
|
16227
16420
|
index = _ref9.index;
|
16228
16421
|
|
16229
|
-
var meta = _this33.
|
16422
|
+
var meta = _this33.chart.getDatasetMeta(datasetIndex);
|
16230
16423
|
|
16231
16424
|
if (!meta) {
|
16232
16425
|
throw new Error('Cannot find a dataset at index ' + datasetIndex);
|
@@ -16245,28 +16438,28 @@
|
|
16245
16438
|
if (changed || positionChanged) {
|
16246
16439
|
this._active = active;
|
16247
16440
|
this._eventPosition = eventPosition;
|
16441
|
+
this._ignoreReplayEvents = true;
|
16248
16442
|
this.update(true);
|
16249
16443
|
}
|
16250
16444
|
}
|
16251
16445
|
}, {
|
16252
16446
|
key: "handleEvent",
|
16253
16447
|
value: function handleEvent(e, replay) {
|
16448
|
+
var inChartArea = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
16449
|
+
|
16450
|
+
if (replay && this._ignoreReplayEvents) {
|
16451
|
+
return false;
|
16452
|
+
}
|
16453
|
+
|
16454
|
+
this._ignoreReplayEvents = false;
|
16254
16455
|
var options = this.options;
|
16255
16456
|
var lastActive = this._active || [];
|
16256
|
-
var changed = false;
|
16257
|
-
var active = [];
|
16258
16457
|
|
16259
|
-
|
16260
|
-
active = this._chart.getElementsAtEventForMode(e, options.mode, options, replay);
|
16261
|
-
|
16262
|
-
if (options.reverse) {
|
16263
|
-
active.reverse();
|
16264
|
-
}
|
16265
|
-
}
|
16458
|
+
var active = this._getActiveElements(e, lastActive, replay, inChartArea);
|
16266
16459
|
|
16267
16460
|
var positionChanged = this._positionChanged(active, e);
|
16268
16461
|
|
16269
|
-
changed = replay || !_elementsEqual(active, lastActive) || positionChanged;
|
16462
|
+
var changed = replay || !_elementsEqual(active, lastActive) || positionChanged;
|
16270
16463
|
|
16271
16464
|
if (changed) {
|
16272
16465
|
this._active = active;
|
@@ -16282,6 +16475,27 @@
|
|
16282
16475
|
|
16283
16476
|
return changed;
|
16284
16477
|
}
|
16478
|
+
}, {
|
16479
|
+
key: "_getActiveElements",
|
16480
|
+
value: function _getActiveElements(e, lastActive, replay, inChartArea) {
|
16481
|
+
var options = this.options;
|
16482
|
+
|
16483
|
+
if (e.type === 'mouseout') {
|
16484
|
+
return [];
|
16485
|
+
}
|
16486
|
+
|
16487
|
+
if (!inChartArea) {
|
16488
|
+
return lastActive;
|
16489
|
+
}
|
16490
|
+
|
16491
|
+
var active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);
|
16492
|
+
|
16493
|
+
if (options.reverse) {
|
16494
|
+
active.reverse();
|
16495
|
+
}
|
16496
|
+
|
16497
|
+
return active;
|
16498
|
+
}
|
16285
16499
|
}, {
|
16286
16500
|
key: "_positionChanged",
|
16287
16501
|
value: function _positionChanged(active, e) {
|
@@ -16304,7 +16518,7 @@
|
|
16304
16518
|
afterInit: function afterInit(chart, _args, options) {
|
16305
16519
|
if (options) {
|
16306
16520
|
chart.tooltip = new Tooltip({
|
16307
|
-
|
16521
|
+
chart: chart,
|
16308
16522
|
options: options
|
16309
16523
|
});
|
16310
16524
|
}
|
@@ -16339,7 +16553,7 @@
|
|
16339
16553
|
if (chart.tooltip) {
|
16340
16554
|
var useFinalPosition = args.replay;
|
16341
16555
|
|
16342
|
-
if (chart.tooltip.handleEvent(args.event, useFinalPosition)) {
|
16556
|
+
if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {
|
16343
16557
|
args.changed = true;
|
16344
16558
|
}
|
16345
16559
|
}
|
@@ -16500,15 +16714,25 @@
|
|
16500
16714
|
Tooltip: plugin_tooltip
|
16501
16715
|
});
|
16502
16716
|
|
16503
|
-
var addIfString = function addIfString(labels, raw, index) {
|
16504
|
-
|
16717
|
+
var addIfString = function addIfString(labels, raw, index, addedLabels) {
|
16718
|
+
if (typeof raw === 'string') {
|
16719
|
+
index = labels.push(raw) - 1;
|
16720
|
+
addedLabels.unshift({
|
16721
|
+
index: index,
|
16722
|
+
label: raw
|
16723
|
+
});
|
16724
|
+
} else if (isNaN(raw)) {
|
16725
|
+
index = null;
|
16726
|
+
}
|
16727
|
+
|
16728
|
+
return index;
|
16505
16729
|
};
|
16506
16730
|
|
16507
|
-
function findOrAddLabel(labels, raw, index) {
|
16731
|
+
function findOrAddLabel(labels, raw, index, addedLabels) {
|
16508
16732
|
var first = labels.indexOf(raw);
|
16509
16733
|
|
16510
16734
|
if (first === -1) {
|
16511
|
-
return addIfString(labels, raw, index);
|
16735
|
+
return addIfString(labels, raw, index, addedLabels);
|
16512
16736
|
}
|
16513
16737
|
|
16514
16738
|
var last = labels.lastIndexOf(raw);
|
@@ -16532,10 +16756,43 @@
|
|
16532
16756
|
_this34 = _super19.call(this, cfg);
|
16533
16757
|
_this34._startValue = undefined;
|
16534
16758
|
_this34._valueRange = 0;
|
16759
|
+
_this34._addedLabels = [];
|
16535
16760
|
return _this34;
|
16536
16761
|
}
|
16537
16762
|
|
16538
16763
|
_createClass(CategoryScale, [{
|
16764
|
+
key: "init",
|
16765
|
+
value: function init(scaleOptions) {
|
16766
|
+
var added = this._addedLabels;
|
16767
|
+
|
16768
|
+
if (added.length) {
|
16769
|
+
var labels = this.getLabels();
|
16770
|
+
|
16771
|
+
var _iterator22 = _createForOfIteratorHelper(added),
|
16772
|
+
_step22;
|
16773
|
+
|
16774
|
+
try {
|
16775
|
+
for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {
|
16776
|
+
var _step22$value = _step22.value,
|
16777
|
+
index = _step22$value.index,
|
16778
|
+
label = _step22$value.label;
|
16779
|
+
|
16780
|
+
if (labels[index] === label) {
|
16781
|
+
labels.splice(index, 1);
|
16782
|
+
}
|
16783
|
+
}
|
16784
|
+
} catch (err) {
|
16785
|
+
_iterator22.e(err);
|
16786
|
+
} finally {
|
16787
|
+
_iterator22.f();
|
16788
|
+
}
|
16789
|
+
|
16790
|
+
this._addedLabels = [];
|
16791
|
+
}
|
16792
|
+
|
16793
|
+
_get(_getPrototypeOf(CategoryScale.prototype), "init", this).call(this, scaleOptions);
|
16794
|
+
}
|
16795
|
+
}, {
|
16539
16796
|
key: "parse",
|
16540
16797
|
value: function parse(raw, index) {
|
16541
16798
|
if (isNullOrUndef(raw)) {
|
@@ -16543,7 +16800,7 @@
|
|
16543
16800
|
}
|
16544
16801
|
|
16545
16802
|
var labels = this.getLabels();
|
16546
|
-
index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw));
|
16803
|
+
index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);
|
16547
16804
|
return validIndex(index, labels.length - 1);
|
16548
16805
|
}
|
16549
16806
|
}, {
|
@@ -16949,7 +17206,7 @@
|
|
16949
17206
|
}, {
|
16950
17207
|
key: "getLabelForValue",
|
16951
17208
|
value: function getLabelForValue(value) {
|
16952
|
-
return formatNumber(value, this.chart.options.locale);
|
17209
|
+
return formatNumber(value, this.chart.options.locale, this.options.ticks.format);
|
16953
17210
|
}
|
16954
17211
|
}]);
|
16955
17212
|
|
@@ -17171,7 +17428,7 @@
|
|
17171
17428
|
}, {
|
17172
17429
|
key: "getLabelForValue",
|
17173
17430
|
value: function getLabelForValue(value) {
|
17174
|
-
return value === undefined ? '0' : formatNumber(value, this.chart.options.locale);
|
17431
|
+
return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);
|
17175
17432
|
}
|
17176
17433
|
}, {
|
17177
17434
|
key: "configure",
|
@@ -17256,66 +17513,73 @@
|
|
17256
17513
|
}
|
17257
17514
|
|
17258
17515
|
function fitWithPointLabels(scale) {
|
17259
|
-
var
|
17260
|
-
l:
|
17261
|
-
r: scale.
|
17262
|
-
t:
|
17263
|
-
b: scale.
|
17516
|
+
var orig = {
|
17517
|
+
l: scale.left + scale._padding.left,
|
17518
|
+
r: scale.right - scale._padding.right,
|
17519
|
+
t: scale.top + scale._padding.top,
|
17520
|
+
b: scale.bottom - scale._padding.bottom
|
17264
17521
|
};
|
17265
|
-
var
|
17522
|
+
var limits = Object.assign({}, orig);
|
17266
17523
|
var labelSizes = [];
|
17267
17524
|
var padding = [];
|
17268
|
-
var valueCount = scale.
|
17525
|
+
var valueCount = scale._pointLabels.length;
|
17526
|
+
var pointLabelOpts = scale.options.pointLabels;
|
17527
|
+
var additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;
|
17269
17528
|
|
17270
17529
|
for (var i = 0; i < valueCount; i++) {
|
17271
|
-
var opts =
|
17530
|
+
var opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));
|
17272
17531
|
padding[i] = opts.padding;
|
17273
|
-
var pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i]);
|
17532
|
+
var pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);
|
17274
17533
|
var plFont = toFont(opts.font);
|
17275
17534
|
var textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);
|
17276
17535
|
labelSizes[i] = textSize;
|
17277
|
-
|
17278
|
-
var
|
17536
|
+
|
17537
|
+
var angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);
|
17538
|
+
|
17539
|
+
var angle = Math.round(toDegrees(angleRadians));
|
17279
17540
|
var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);
|
17280
17541
|
var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);
|
17542
|
+
updateLimits(limits, orig, angleRadians, hLimits, vLimits);
|
17543
|
+
}
|
17281
17544
|
|
17282
|
-
|
17283
|
-
|
17284
|
-
|
17285
|
-
}
|
17286
|
-
|
17287
|
-
if (hLimits.end > furthestLimits.r) {
|
17288
|
-
furthestLimits.r = hLimits.end;
|
17289
|
-
furthestAngles.r = angleRadians;
|
17290
|
-
}
|
17545
|
+
scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);
|
17546
|
+
scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);
|
17547
|
+
}
|
17291
17548
|
|
17292
|
-
|
17293
|
-
|
17294
|
-
|
17295
|
-
|
17549
|
+
function updateLimits(limits, orig, angle, hLimits, vLimits) {
|
17550
|
+
var sin = Math.abs(Math.sin(angle));
|
17551
|
+
var cos = Math.abs(Math.cos(angle));
|
17552
|
+
var x = 0;
|
17553
|
+
var y = 0;
|
17296
17554
|
|
17297
|
-
|
17298
|
-
|
17299
|
-
|
17300
|
-
|
17555
|
+
if (hLimits.start < orig.l) {
|
17556
|
+
x = (orig.l - hLimits.start) / sin;
|
17557
|
+
limits.l = Math.min(limits.l, orig.l - x);
|
17558
|
+
} else if (hLimits.end > orig.r) {
|
17559
|
+
x = (hLimits.end - orig.r) / sin;
|
17560
|
+
limits.r = Math.max(limits.r, orig.r + x);
|
17301
17561
|
}
|
17302
17562
|
|
17303
|
-
|
17304
|
-
|
17305
|
-
|
17563
|
+
if (vLimits.start < orig.t) {
|
17564
|
+
y = (orig.t - vLimits.start) / cos;
|
17565
|
+
limits.t = Math.min(limits.t, orig.t - y);
|
17566
|
+
} else if (vLimits.end > orig.b) {
|
17567
|
+
y = (vLimits.end - orig.b) / cos;
|
17568
|
+
limits.b = Math.max(limits.b, orig.b + y);
|
17569
|
+
}
|
17306
17570
|
}
|
17307
17571
|
|
17308
17572
|
function buildPointLabelItems(scale, labelSizes, padding) {
|
17309
17573
|
var items = [];
|
17310
|
-
var valueCount = scale.
|
17574
|
+
var valueCount = scale._pointLabels.length;
|
17311
17575
|
var opts = scale.options;
|
17312
|
-
var
|
17313
|
-
var outerDistance = scale.
|
17576
|
+
var extra = getTickBackdropHeight(opts) / 2;
|
17577
|
+
var outerDistance = scale.drawingArea;
|
17578
|
+
var additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;
|
17314
17579
|
|
17315
17580
|
for (var i = 0; i < valueCount; i++) {
|
17316
|
-
var
|
17317
|
-
var
|
17318
|
-
var angle = toDegrees(scale.getIndexAngle(i));
|
17581
|
+
var pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);
|
17582
|
+
var angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));
|
17319
17583
|
var size = labelSizes[i];
|
17320
17584
|
var y = yForAngle(pointLabelPosition.y, size.h, angle);
|
17321
17585
|
var textAlign = getTextAlignForAngle(angle);
|
@@ -17433,10 +17697,6 @@
|
|
17433
17697
|
ctx.restore();
|
17434
17698
|
}
|
17435
17699
|
|
17436
|
-
function numberOrZero(param) {
|
17437
|
-
return isNumber(param) ? param : 0;
|
17438
|
-
}
|
17439
|
-
|
17440
17700
|
function createPointLabelContext(parent, index, label) {
|
17441
17701
|
return createContext(parent, {
|
17442
17702
|
label: label,
|
@@ -17467,12 +17727,12 @@
|
|
17467
17727
|
_createClass(RadialLinearScale, [{
|
17468
17728
|
key: "setDimensions",
|
17469
17729
|
value: function setDimensions() {
|
17470
|
-
this.
|
17471
|
-
this.
|
17472
|
-
this.
|
17473
|
-
this.xCenter = Math.floor(this.
|
17474
|
-
this.yCenter = Math.floor(
|
17475
|
-
this.drawingArea = Math.min(
|
17730
|
+
var padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);
|
17731
|
+
var w = this.width = this.maxWidth - padding.width;
|
17732
|
+
var h = this.height = this.maxHeight - padding.height;
|
17733
|
+
this.xCenter = Math.floor(this.left + w / 2 + padding.left);
|
17734
|
+
this.yCenter = Math.floor(this.top + h / 2 + padding.top);
|
17735
|
+
this.drawingArea = Math.floor(Math.min(w, h) / 2);
|
17476
17736
|
}
|
17477
17737
|
}, {
|
17478
17738
|
key: "determineDataLimits",
|
@@ -17499,6 +17759,8 @@
|
|
17499
17759
|
this._pointLabels = this.getLabels().map(function (value, index) {
|
17500
17760
|
var label = callback(_this38.options.pointLabels.callback, [value, index], _this38);
|
17501
17761
|
return label || label === 0 ? label : '';
|
17762
|
+
}).filter(function (v, i) {
|
17763
|
+
return _this38.chart.getDataVisibility(i);
|
17502
17764
|
});
|
17503
17765
|
}
|
17504
17766
|
}, {
|
@@ -17512,34 +17774,17 @@
|
|
17512
17774
|
this.setCenterPoint(0, 0, 0, 0);
|
17513
17775
|
}
|
17514
17776
|
}
|
17515
|
-
}, {
|
17516
|
-
key: "_setReductions",
|
17517
|
-
value: function _setReductions(largestPossibleRadius, furthestLimits, furthestAngles) {
|
17518
|
-
var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);
|
17519
|
-
var radiusReductionRight = Math.max(furthestLimits.r - this.width, 0) / Math.sin(furthestAngles.r);
|
17520
|
-
var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);
|
17521
|
-
var radiusReductionBottom = -Math.max(furthestLimits.b - (this.height - this.paddingTop), 0) / Math.cos(furthestAngles.b);
|
17522
|
-
radiusReductionLeft = numberOrZero(radiusReductionLeft);
|
17523
|
-
radiusReductionRight = numberOrZero(radiusReductionRight);
|
17524
|
-
radiusReductionTop = numberOrZero(radiusReductionTop);
|
17525
|
-
radiusReductionBottom = numberOrZero(radiusReductionBottom);
|
17526
|
-
this.drawingArea = Math.max(largestPossibleRadius / 2, Math.min(Math.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), Math.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2)));
|
17527
|
-
this.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);
|
17528
|
-
}
|
17529
17777
|
}, {
|
17530
17778
|
key: "setCenterPoint",
|
17531
17779
|
value: function setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {
|
17532
|
-
|
17533
|
-
|
17534
|
-
|
17535
|
-
var maxBottom = this.height - this.paddingTop - bottomMovement - this.drawingArea;
|
17536
|
-
this.xCenter = Math.floor((maxLeft + maxRight) / 2 + this.left);
|
17537
|
-
this.yCenter = Math.floor((maxTop + maxBottom) / 2 + this.top + this.paddingTop);
|
17780
|
+
this.xCenter += Math.floor((leftMovement - rightMovement) / 2);
|
17781
|
+
this.yCenter += Math.floor((topMovement - bottomMovement) / 2);
|
17782
|
+
this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));
|
17538
17783
|
}
|
17539
17784
|
}, {
|
17540
17785
|
key: "getIndexAngle",
|
17541
17786
|
value: function getIndexAngle(index) {
|
17542
|
-
var angleMultiplier = TAU / this.
|
17787
|
+
var angleMultiplier = TAU / (this._pointLabels.length || 1);
|
17543
17788
|
var startAngle = this.options.startAngle || 0;
|
17544
17789
|
return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));
|
17545
17790
|
}
|
@@ -17581,7 +17826,8 @@
|
|
17581
17826
|
}, {
|
17582
17827
|
key: "getPointPosition",
|
17583
17828
|
value: function getPointPosition(index, distanceFromCenter) {
|
17584
|
-
var
|
17829
|
+
var additionalAngle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
17830
|
+
var angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;
|
17585
17831
|
return {
|
17586
17832
|
x: Math.cos(angle) * distanceFromCenter + this.xCenter,
|
17587
17833
|
y: Math.sin(angle) * distanceFromCenter + this.yCenter,
|
@@ -17624,7 +17870,7 @@
|
|
17624
17870
|
var ctx = this.ctx;
|
17625
17871
|
ctx.save();
|
17626
17872
|
ctx.beginPath();
|
17627
|
-
pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this.
|
17873
|
+
pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);
|
17628
17874
|
ctx.closePath();
|
17629
17875
|
ctx.fillStyle = backgroundColor;
|
17630
17876
|
ctx.fill();
|
@@ -17640,7 +17886,7 @@
|
|
17640
17886
|
var opts = this.options;
|
17641
17887
|
var angleLines = opts.angleLines,
|
17642
17888
|
grid = opts.grid;
|
17643
|
-
var labelCount = this.
|
17889
|
+
var labelCount = this._pointLabels.length;
|
17644
17890
|
var i, offset, position;
|
17645
17891
|
|
17646
17892
|
if (opts.pointLabels.display) {
|
@@ -17660,7 +17906,7 @@
|
|
17660
17906
|
if (angleLines.display) {
|
17661
17907
|
ctx.save();
|
17662
17908
|
|
17663
|
-
for (i =
|
17909
|
+
for (i = labelCount - 1; i >= 0; i--) {
|
17664
17910
|
var optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));
|
17665
17911
|
var color = optsAtIndex.color,
|
17666
17912
|
lineWidth = optsAtIndex.lineWidth;
|
@@ -17767,7 +18013,8 @@
|
|
17767
18013
|
callback: function callback(label) {
|
17768
18014
|
return label;
|
17769
18015
|
},
|
17770
|
-
padding: 5
|
18016
|
+
padding: 5,
|
18017
|
+
centerPointLabels: false
|
17771
18018
|
}
|
17772
18019
|
};
|
17773
18020
|
RadialLinearScale.defaultRoutes = {
|