chartkick 5.1.3 → 5.1.5
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 +8 -0
- data/lib/chartkick/version.rb +1 -1
- data/vendor/assets/javascripts/Chart.bundle.js +119 -57
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0872574220622fecbfb25770afdfdf1f244df0ba36d768c8e1d49e220120a7a3'
|
4
|
+
data.tar.gz: 639bdb33a206445211c2496e14624090fef6a7e0e32dd0466d2a308f88dc8d0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a6d14dd85b91be1d82843ce6e241be6035bfe8b9f9d75e53ae59e4b9f83db09878c391d4bf3afaa8efca5b5ef397fa9bed27796d1c0963766cf14ac70e5d799
|
7
|
+
data.tar.gz: 37f5e87298510df837427db88997c99f86082887f10105ed12bf0f61fb7b30ff96ac65bace73df35048764888483edf40f3de05d5c7e249ae62afffefd79c4dd
|
data/CHANGELOG.md
CHANGED
data/lib/chartkick/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/*!
|
2
|
-
* Chart.js v4.4.
|
2
|
+
* Chart.js v4.4.9
|
3
3
|
* https://www.chartjs.org
|
4
|
-
* (c)
|
4
|
+
* (c) 2025 Chart.js Contributors
|
5
5
|
* Released under the MIT License
|
6
6
|
*
|
7
7
|
* @kurkle/color v0.3.2
|
@@ -1300,8 +1300,14 @@
|
|
1300
1300
|
}).pop();
|
1301
1301
|
return result;
|
1302
1302
|
}
|
1303
|
+
/**
|
1304
|
+
* Verifies that attempting to coerce n to string or number won't throw a TypeError.
|
1305
|
+
*/
|
1306
|
+
function isNonPrimitive(n) {
|
1307
|
+
return _typeof$1(n) === 'symbol' || _typeof$1(n) === 'object' && n !== null && !(Symbol.toPrimitive in n || 'toString' in n || 'valueOf' in n);
|
1308
|
+
}
|
1303
1309
|
function isNumber(n) {
|
1304
|
-
return !isNaN(parseFloat(n)) && isFinite(n);
|
1310
|
+
return !isNonPrimitive(n) && !isNaN(parseFloat(n)) && isFinite(n);
|
1305
1311
|
}
|
1306
1312
|
function almostWhole(x, epsilon) {
|
1307
1313
|
var rounded = Math.round(x);
|
@@ -1631,7 +1637,9 @@
|
|
1631
1637
|
var count = pointCount;
|
1632
1638
|
if (meta._sorted) {
|
1633
1639
|
var iScale = meta.iScale,
|
1640
|
+
vScale = meta.vScale,
|
1634
1641
|
_parsed = meta._parsed;
|
1642
|
+
var spanGaps = meta.dataset ? meta.dataset.options ? meta.dataset.options.spanGaps : null : null;
|
1635
1643
|
var axis = iScale.axis;
|
1636
1644
|
var _iScale$getUserBounds = iScale.getUserBounds(),
|
1637
1645
|
min = _iScale$getUserBounds.min,
|
@@ -1639,18 +1647,32 @@
|
|
1639
1647
|
minDefined = _iScale$getUserBounds.minDefined,
|
1640
1648
|
maxDefined = _iScale$getUserBounds.maxDefined;
|
1641
1649
|
if (minDefined) {
|
1642
|
-
start =
|
1650
|
+
start = Math.min(
|
1643
1651
|
// @ts-expect-error Need to type _parsed
|
1644
1652
|
_lookupByKey(_parsed, axis, min).lo,
|
1645
1653
|
// @ts-expect-error Need to fix types on _lookupByKey
|
1646
|
-
animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo)
|
1654
|
+
animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo);
|
1655
|
+
if (spanGaps) {
|
1656
|
+
var distanceToDefinedLo = _parsed.slice(0, start + 1).reverse().findIndex(function (point) {
|
1657
|
+
return !isNullOrUndef(point[vScale.axis]);
|
1658
|
+
});
|
1659
|
+
start -= Math.max(0, distanceToDefinedLo);
|
1660
|
+
}
|
1661
|
+
start = _limitValue(start, 0, pointCount - 1);
|
1647
1662
|
}
|
1648
1663
|
if (maxDefined) {
|
1649
|
-
|
1664
|
+
var end = Math.max(
|
1650
1665
|
// @ts-expect-error Need to type _parsed
|
1651
1666
|
_lookupByKey(_parsed, iScale.axis, max, true).hi + 1,
|
1652
1667
|
// @ts-expect-error Need to fix types on _lookupByKey
|
1653
|
-
animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1)
|
1668
|
+
animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1);
|
1669
|
+
if (spanGaps) {
|
1670
|
+
var distanceToDefinedHi = _parsed.slice(end - 1).findIndex(function (point) {
|
1671
|
+
return !isNullOrUndef(point[vScale.axis]);
|
1672
|
+
});
|
1673
|
+
end += Math.max(0, distanceToDefinedHi);
|
1674
|
+
}
|
1675
|
+
count = _limitValue(end, start, pointCount) - start;
|
1654
1676
|
} else {
|
1655
1677
|
count = pointCount - start;
|
1656
1678
|
}
|
@@ -3360,14 +3382,8 @@
|
|
3360
3382
|
}
|
3361
3383
|
|
3362
3384
|
/**
|
3363
|
-
*
|
3364
|
-
|
3365
|
-
* https://github.com/microsoft/TypeScript/issues/46011
|
3366
|
-
* @typedef { import('../core/core.controller.js').default } dom.Chart
|
3367
|
-
* @typedef { import('../../types').ChartEvent } ChartEvent
|
3368
|
-
*/ /**
|
3369
|
-
* @private
|
3370
|
-
*/
|
3385
|
+
* @private
|
3386
|
+
*/
|
3371
3387
|
function _isDomSupported() {
|
3372
3388
|
return typeof window !== 'undefined' && typeof document !== 'undefined';
|
3373
3389
|
}
|
@@ -4031,6 +4047,35 @@
|
|
4031
4047
|
};
|
4032
4048
|
return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);
|
4033
4049
|
}
|
4050
|
+
function getSizeForArea(scale, chartArea, field) {
|
4051
|
+
return scale.options.clip ? scale[field] : chartArea[field];
|
4052
|
+
}
|
4053
|
+
function getDatasetArea(meta, chartArea) {
|
4054
|
+
var xScale = meta.xScale,
|
4055
|
+
yScale = meta.yScale;
|
4056
|
+
if (xScale && yScale) {
|
4057
|
+
return {
|
4058
|
+
left: getSizeForArea(xScale, chartArea, 'left'),
|
4059
|
+
right: getSizeForArea(xScale, chartArea, 'right'),
|
4060
|
+
top: getSizeForArea(yScale, chartArea, 'top'),
|
4061
|
+
bottom: getSizeForArea(yScale, chartArea, 'bottom')
|
4062
|
+
};
|
4063
|
+
}
|
4064
|
+
return chartArea;
|
4065
|
+
}
|
4066
|
+
function getDatasetClipArea(chart, meta) {
|
4067
|
+
var clip = meta._clip;
|
4068
|
+
if (clip.disabled) {
|
4069
|
+
return false;
|
4070
|
+
}
|
4071
|
+
var area = getDatasetArea(meta, chart.chartArea);
|
4072
|
+
return {
|
4073
|
+
left: clip.left === false ? 0 : area.left - (clip.left === true ? 0 : clip.left),
|
4074
|
+
right: clip.right === false ? chart.width : area.right + (clip.right === true ? 0 : clip.right),
|
4075
|
+
top: clip.top === false ? 0 : area.top - (clip.top === true ? 0 : clip.top),
|
4076
|
+
bottom: clip.bottom === false ? chart.height : area.bottom + (clip.bottom === true ? 0 : clip.bottom)
|
4077
|
+
};
|
4078
|
+
}
|
4034
4079
|
|
4035
4080
|
var Animator = /*#__PURE__*/function () {
|
4036
4081
|
function Animator() {
|
@@ -7081,10 +7126,24 @@
|
|
7081
7126
|
data = metaset.data,
|
7082
7127
|
_sorted = metaset._sorted;
|
7083
7128
|
var iScale = controller._cachedMeta.iScale;
|
7129
|
+
var spanGaps = metaset.dataset ? metaset.dataset.options ? metaset.dataset.options.spanGaps : null : null;
|
7084
7130
|
if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {
|
7085
7131
|
var lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;
|
7086
7132
|
if (!intersect) {
|
7087
|
-
|
7133
|
+
var result = lookupMethod(data, axis, value);
|
7134
|
+
if (spanGaps) {
|
7135
|
+
var vScale = controller._cachedMeta.vScale;
|
7136
|
+
var _parsed = metaset._parsed;
|
7137
|
+
var distanceToDefinedLo = _parsed.slice(0, result.lo + 1).reverse().findIndex(function (point) {
|
7138
|
+
return !isNullOrUndef(point[vScale.axis]);
|
7139
|
+
});
|
7140
|
+
result.lo -= Math.max(0, distanceToDefinedLo);
|
7141
|
+
var distanceToDefinedHi = _parsed.slice(result.hi).findIndex(function (point) {
|
7142
|
+
return !isNullOrUndef(point[vScale.axis]);
|
7143
|
+
});
|
7144
|
+
result.hi += Math.max(0, distanceToDefinedHi);
|
7145
|
+
}
|
7146
|
+
return result;
|
7088
7147
|
} else if (controller._sharedOptions) {
|
7089
7148
|
var el = data[0];
|
7090
7149
|
var range = typeof el.getRange === 'function' && el.getRange(axis);
|
@@ -10402,7 +10461,7 @@
|
|
10402
10461
|
}
|
10403
10462
|
return false;
|
10404
10463
|
}
|
10405
|
-
var version = "4.4.
|
10464
|
+
var version = "4.4.9";
|
10406
10465
|
var KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];
|
10407
10466
|
function positionIsHorizontal(position, axis) {
|
10408
10467
|
return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';
|
@@ -10464,22 +10523,6 @@
|
|
10464
10523
|
}
|
10465
10524
|
return e;
|
10466
10525
|
}
|
10467
|
-
function getSizeForArea(scale, chartArea, field) {
|
10468
|
-
return scale.options.clip ? scale[field] : chartArea[field];
|
10469
|
-
}
|
10470
|
-
function getDatasetArea(meta, chartArea) {
|
10471
|
-
var xScale = meta.xScale,
|
10472
|
-
yScale = meta.yScale;
|
10473
|
-
if (xScale && yScale) {
|
10474
|
-
return {
|
10475
|
-
left: getSizeForArea(xScale, chartArea, 'left'),
|
10476
|
-
right: getSizeForArea(xScale, chartArea, 'right'),
|
10477
|
-
top: getSizeForArea(yScale, chartArea, 'top'),
|
10478
|
-
bottom: getSizeForArea(yScale, chartArea, 'bottom')
|
10479
|
-
};
|
10480
|
-
}
|
10481
|
-
return chartArea;
|
10482
|
-
}
|
10483
10526
|
var Chart = /*#__PURE__*/function () {
|
10484
10527
|
function Chart(item, userConfig) {
|
10485
10528
|
var _this12 = this;
|
@@ -11069,27 +11112,20 @@
|
|
11069
11112
|
key: "_drawDataset",
|
11070
11113
|
value: function _drawDataset(meta) {
|
11071
11114
|
var ctx = this.ctx;
|
11072
|
-
var clip = meta._clip;
|
11073
|
-
var useClip = !clip.disabled;
|
11074
|
-
var area = getDatasetArea(meta, this.chartArea);
|
11075
11115
|
var args = {
|
11076
11116
|
meta: meta,
|
11077
11117
|
index: meta.index,
|
11078
11118
|
cancelable: true
|
11079
11119
|
};
|
11120
|
+
var clip = getDatasetClipArea(this, meta);
|
11080
11121
|
if (this.notifyPlugins('beforeDatasetDraw', args) === false) {
|
11081
11122
|
return;
|
11082
11123
|
}
|
11083
|
-
if (
|
11084
|
-
clipArea(ctx,
|
11085
|
-
left: clip.left === false ? 0 : area.left - clip.left,
|
11086
|
-
right: clip.right === false ? this.width : area.right + clip.right,
|
11087
|
-
top: clip.top === false ? 0 : area.top - clip.top,
|
11088
|
-
bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom
|
11089
|
-
});
|
11124
|
+
if (clip) {
|
11125
|
+
clipArea(ctx, clip);
|
11090
11126
|
}
|
11091
11127
|
meta.controller.draw();
|
11092
|
-
if (
|
11128
|
+
if (clip) {
|
11093
11129
|
unclipArea(ctx);
|
11094
11130
|
}
|
11095
11131
|
args.cancelable = false;
|
@@ -13211,7 +13247,9 @@
|
|
13211
13247
|
}
|
13212
13248
|
function _drawfill(ctx, source, area) {
|
13213
13249
|
var target = _getTarget(source);
|
13214
|
-
var
|
13250
|
+
var chart = source.chart,
|
13251
|
+
index = source.index,
|
13252
|
+
line = source.line,
|
13215
13253
|
scale = source.scale,
|
13216
13254
|
axis = source.axis;
|
13217
13255
|
var lineOpts = line.options;
|
@@ -13222,6 +13260,8 @@
|
|
13222
13260
|
above = _ref9$above === void 0 ? color : _ref9$above,
|
13223
13261
|
_ref9$below = _ref9.below,
|
13224
13262
|
below = _ref9$below === void 0 ? color : _ref9$below;
|
13263
|
+
var meta = chart.getDatasetMeta(index);
|
13264
|
+
var clip = getDatasetClipArea(chart, meta);
|
13225
13265
|
if (target && line.points.length) {
|
13226
13266
|
clipArea(ctx, area);
|
13227
13267
|
doFill(ctx, {
|
@@ -13231,7 +13271,8 @@
|
|
13231
13271
|
below: below,
|
13232
13272
|
area: area,
|
13233
13273
|
scale: scale,
|
13234
|
-
axis: axis
|
13274
|
+
axis: axis,
|
13275
|
+
clip: clip
|
13235
13276
|
});
|
13236
13277
|
unclipArea(ctx);
|
13237
13278
|
}
|
@@ -13242,7 +13283,8 @@
|
|
13242
13283
|
above = cfg.above,
|
13243
13284
|
below = cfg.below,
|
13244
13285
|
area = cfg.area,
|
13245
|
-
scale = cfg.scale
|
13286
|
+
scale = cfg.scale,
|
13287
|
+
clip = cfg.clip;
|
13246
13288
|
var property = line._loop ? 'angle' : cfg.axis;
|
13247
13289
|
ctx.save();
|
13248
13290
|
if (property === 'x' && below !== above) {
|
@@ -13252,7 +13294,8 @@
|
|
13252
13294
|
target: target,
|
13253
13295
|
color: above,
|
13254
13296
|
scale: scale,
|
13255
|
-
property: property
|
13297
|
+
property: property,
|
13298
|
+
clip: clip
|
13256
13299
|
});
|
13257
13300
|
ctx.restore();
|
13258
13301
|
ctx.save();
|
@@ -13263,7 +13306,8 @@
|
|
13263
13306
|
target: target,
|
13264
13307
|
color: below,
|
13265
13308
|
scale: scale,
|
13266
|
-
property: property
|
13309
|
+
property: property,
|
13310
|
+
clip: clip
|
13267
13311
|
});
|
13268
13312
|
ctx.restore();
|
13269
13313
|
}
|
@@ -13312,7 +13356,8 @@
|
|
13312
13356
|
target = cfg.target,
|
13313
13357
|
property = cfg.property,
|
13314
13358
|
color = cfg.color,
|
13315
|
-
scale = cfg.scale
|
13359
|
+
scale = cfg.scale,
|
13360
|
+
clip = cfg.clip;
|
13316
13361
|
var segments = _segments(line, target, property);
|
13317
13362
|
var _iterator22 = _createForOfIteratorHelper$1(segments),
|
13318
13363
|
_step22;
|
@@ -13330,7 +13375,7 @@
|
|
13330
13375
|
var notShape = target !== true;
|
13331
13376
|
ctx.save();
|
13332
13377
|
ctx.fillStyle = backgroundColor;
|
13333
|
-
clipBounds(ctx, scale, notShape && _getBounds(property, start, end));
|
13378
|
+
clipBounds(ctx, scale, clip, notShape && _getBounds(property, start, end));
|
13334
13379
|
ctx.beginPath();
|
13335
13380
|
var lineLoop = !!line.pathSegment(ctx, src);
|
13336
13381
|
var loop = void 0;
|
@@ -13359,17 +13404,33 @@
|
|
13359
13404
|
_iterator22.f();
|
13360
13405
|
}
|
13361
13406
|
}
|
13362
|
-
function clipBounds(ctx, scale, bounds) {
|
13363
|
-
var
|
13364
|
-
top = _scale$chart$chartAre.top,
|
13365
|
-
bottom = _scale$chart$chartAre.bottom;
|
13407
|
+
function clipBounds(ctx, scale, clip, bounds) {
|
13408
|
+
var chartArea = scale.chart.chartArea;
|
13366
13409
|
var _ref10 = bounds || {},
|
13367
13410
|
property = _ref10.property,
|
13368
13411
|
start = _ref10.start,
|
13369
13412
|
end = _ref10.end;
|
13370
|
-
if (property === 'x') {
|
13413
|
+
if (property === 'x' || property === 'y') {
|
13414
|
+
var left, top, right, bottom;
|
13415
|
+
if (property === 'x') {
|
13416
|
+
left = start;
|
13417
|
+
top = chartArea.top;
|
13418
|
+
right = end;
|
13419
|
+
bottom = chartArea.bottom;
|
13420
|
+
} else {
|
13421
|
+
left = chartArea.left;
|
13422
|
+
top = start;
|
13423
|
+
right = chartArea.right;
|
13424
|
+
bottom = end;
|
13425
|
+
}
|
13371
13426
|
ctx.beginPath();
|
13372
|
-
|
13427
|
+
if (clip) {
|
13428
|
+
left = Math.max(left, clip.left);
|
13429
|
+
right = Math.min(right, clip.right);
|
13430
|
+
top = Math.max(top, clip.top);
|
13431
|
+
bottom = Math.min(bottom, clip.bottom);
|
13432
|
+
}
|
13433
|
+
ctx.rect(left, top, right - left, bottom - top);
|
13373
13434
|
ctx.clip();
|
13374
13435
|
}
|
13375
13436
|
}
|
@@ -17314,6 +17375,7 @@
|
|
17314
17375
|
fontString: fontString,
|
17315
17376
|
formatNumber: formatNumber,
|
17316
17377
|
getAngleFromPoint: getAngleFromPoint,
|
17378
|
+
getDatasetClipArea: getDatasetClipArea,
|
17317
17379
|
getHoverColor: getHoverColor,
|
17318
17380
|
getMaximumSize: getMaximumSize,
|
17319
17381
|
getRelativePosition: getRelativePosition,
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chartkick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.1.
|
4
|
+
version: 5.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-04-15 00:00:00.000000000 Z
|
11
11
|
dependencies: []
|
12
12
|
email: andrew@ankane.org
|
13
13
|
executables: []
|