chartkick 4.1.2 → 4.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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 = {
|