Commit Graph

384 Commits

Author SHA1 Message Date
Adrian Cerbaro
3dffb4fb8e fix: respect dataset clipping area when filling line charts (#12057)
* fix(plugin.filler): respect dataset clipping area when filling line charts

The filling area must respect the dataset's clipping area when clipping is enabled. Before this change, the line would be clipped according to the dataset's area but the fill would overlap other datasets.

Closes #12052

* chore(plugin.filler): use @ts-expect-error instead of @ts-ignore
2025-04-14 15:41:14 +02:00
Dimitris-Rafail Katsampas
f3f84fd624 fix: Unset _resizeBeforeDraw before _resize() call to avoid possible recursion (#11851)
* fix: Unset _resizeBeforeDraw before _resize to avoid possible recursion

* chore: Comment update

* chore: Reverted dependency change in package json
2024-08-08 20:08:30 +02:00
Jon Dufresne
5c9e5c66d2 Fix some typos (#11781) 2024-05-21 12:10:07 +02:00
stockiNail
79f1a0a9e8 Add clip option to scale configuration to allow unclipped scales (#11404)
* Add clip option to scale configuration to allow unclipped scales

* add images

* fix cc

* change name of function
2023-08-07 20:16:20 +02:00
Dan Onoshko
64a027874c fix: move types to src dir to escape src / dist dirs in paths (#10993) 2022-12-16 07:56:06 -05:00
Dan Onoshko
51441272a7 refactor: move to esm in sources (#10879) 2022-11-17 08:08:44 -05:00
stockiNail
c51d697d7f Use the correct area to clip for dataset drawing when stacked scales are used (#10691)
* Use the correct area to clip when stacked scales are used

* adds test cases

* fix CI issue

* apply review

* Update .size-limit.cjs

Co-authored-by: Jacco van den Berg <jaccoberg2281@gmail.com>

Co-authored-by: Jacco van den Berg <jaccoberg2281@gmail.com>
2022-10-01 21:26:45 +03:00
Jacco van den Berg
5f37ba6fc4 Add warning if filler plugin is used but not registered (#10702)
* add warning if filler plugin is used but not registered

* fix lint

* increase size limit

* add test, only put warning in dataset controller

* fix register in docs, remove commented code

* remove other mr

* add documentation

* Apply suggestions from code review

Co-authored-by: Jukka Kurkela <jukka.kurkela@gmail.com>

* Also return false if plugin is disabled by options

* improve warning message

* undo docs changes

* update test

Co-authored-by: Jukka Kurkela <jukka.kurkela@gmail.com>
2022-09-26 20:20:54 +02:00
Jacco van den Berg
3df687a87c Remove destroy hook (#10549)
* remove destroy hook

* revert package-lock.json changes

* update test

* add migration guide note

* fix karma failing test

* change way of importing package.json
2022-08-05 19:51:14 +03:00
Dan Onoshko
ce375a6876 feat: add ESM support (#10525)
* feat: add ESM support

* build: rename UMD bundle

* chore: edit supbackages description

* style: disable es/no-import-meta linter rule

* test: dynamic import in cjs module

* docs: edit integrations page

* docs: review fixes

* chore: remove useless regex in webpack config

* ci: test size-limit only for ESM bundle
2022-08-04 18:43:26 -04:00
Dan Onoshko
a4de430d99 fix: treeshaking (#10504)
* fix: treeshaking
* refactor: DatasetController.datasetElementType and DatasetController.dataElementType as static props
2022-08-04 09:17:40 -04:00
Jacco van den Berg
1a1e68380f Improve error message with id of the canvas (#10495)
* improve error message with id of the canvas
* update test
2022-07-20 12:51:34 -04:00
Josh Kelley
c057c96693 Interaction functions (#10046)
* Refactor get...Items functions to take events rather than positions

To work toward exposing something like the get...Items functions.

* Switch getAxisItems to use optimizedEvaluateItems

optimizedEvaluateItems falls back to evaluating all items for unsorted items, and sorting / optimizing ought to be okay, so this ought to be equivalent.

* Performance

* Consolidate getRelativePosition

helpers.dom.js's getRelativePosition already had logic to handle ChartEvent vs. Event (as demonstrated by the `native` check within `getCanvasPosition`), so it's redundant for core.interaction.js to have its own `native` check.

Update `getRelativePosition` to use the same `native` check as core.interaction.js's version.  As best as I can tell, the ChartEvent's x and y are populated from `getRelativePosition`, so the previous `getCanvasPosition` was effectively just duplicating `getRelativePosition'`s work.  I added a test to verify this; it depends on a local, not-yet-submitted change in chartjs-test-utils' `triggerMouseEvent` to return the mouse event that it triggers.

* Add an API to refactor duplicate isPointInArea

* Rename and update JSDoc to prepare for making this public

* Give functions a consistent, generic interface

* Export functions for discussion

* Code review feedback

Add a non-null assertion, as requested in code review.

Add JSDoc to clarify that `getCanvasPosition` now expects a native `Event`, not a `ChartEvent`.  Add `@ts-ignore`; `getCanvasPosition` relied on some loose conversions between `Event`, `TouchEvent`, and `Touch` that would require several changes to make TypeScript happy.

* Code review feedback

Return the event directly, to speed up the code a bit.  Add JSDoc to help communicate its intent.  Update various comments.

* Finalize exports; add docs and TypeScript

* Update src/helpers/helpers.dom.js

* Update src/helpers/helpers.dom.js

Only thing needed actually is the update of chartjs-test-utils to 0.4.0

* Bump chartjs-test-utils dependency

To get supporting work from https://github.com/chartjs/chartjs-test-utils/pull/19

Co-authored-by: Jukka Kurkela <jukka.kurkela@gmail.com>
2022-03-24 09:02:30 -04:00
Jukka Kurkela
0d250a1fbf Fix setActiveElements behavior after a mouse event (#9992)
* Fix setActiveElements behavior after a mouse event

* Better variable name
2021-12-17 00:34:53 +02:00
Jukka Kurkela
ba6b446b04 Limit active element changes to chartArea (#9970)
* Limit active element changes to chartArea

* CC, remove duplicate ChartEvent interface

* CC2
2021-12-08 16:44:45 +02:00
Jacco van den Berg
e7aec8c301 add beforeDestroy hook (#9933)
* add `beforeDestroy` hook
* add documentation of destroy lifecycle, add `afterDestroy` hook and deprecate destroy
2021-12-05 09:05:18 -05:00
Jukka Kurkela
838d40b2c8 Synchronize data visibility with data changes (#9857)
* Synchronize data visibility with data changes

* avoid babel spread bug

* Simpler?

* one more

* simple enough, cc?
2021-11-18 00:13:31 +02:00
Jukka Kurkela
0dc733a96c Configure all datasets before updating any (#9872)
* Update misleading sample comment

* Configure all datasets before updating any
2021-11-18 00:09:25 +02:00
Josh Kelley
aac0bef060 Fix cleaning up metasets (#9656)
* Fix cleaning up metasets

I believe it's a mistake to only delete the metaset if it has a valid controller; see f191f2f5 for where this behavior was introduced.

This is a minimal fix for #9653; as discussed there, it may also be worth updating `updateHoverStyle`.

As of #7030, `this._metasets` should always be defined, so checking whether it's undefined is no longer necessary.

* Add a test covering metaset behavior

* Add a regression test for #9653; fix `toHaveSize` usage

* Fix test failure
2021-10-23 18:46:33 +03:00
Jukka Kurkela
6a250de81d Add chart, p0.raw, p1.raw to segment context (#9761)
* Add chart, p0.raw, p1.raw to segment context

* Types
2021-10-15 15:56:29 -04:00
Jukka Kurkela
12c5f9a839 Support nested scriptable options for datasets (#9758)
* Support nested scriptable options for datasets
2021-10-13 08:41:22 -04:00
Jukka Kurkela
bc5e5cbf11 Disable animations for BasicPlatform (offcreen) (#9751)
* Disable animations for BasicPlatform (offcreen)
* Update types
2021-10-11 14:37:25 -04:00
Jukka Kurkela
e1ae5e6abf Add layout.autoPadding option (#9716) 2021-10-04 14:01:10 -04:00
Evert Timberg
8e68481ec4 Remove const me = this pattern (#9646) 2021-09-14 07:37:22 -04:00
Jukka Kurkela
50ad1637b0 Fix plugin event filtering of renamed events (#9613) 2021-09-04 13:41:47 -04:00
Jukka Kurkela
fca0309223 Detect attach/detach from any level (#9557) 2021-08-18 18:14:09 -04:00
Jukka Kurkela
4d99658155 Remove chart.scale property (always undefined) (#9556) 2021-08-17 07:52:04 -04:00
Jukka Kurkela
cf951ac611 Add ability to hide specific data element (#9450) 2021-07-21 07:08:02 -04:00
Jukka Kurkela
bc7c58d46d Fix: config.platform was ignored (#9442) 2021-07-20 07:51:16 -04:00
Jukka Kurkela
4002694e26 Fix: Don't use clip/unclipArea when clip: false (#9286) 2021-06-18 14:11:33 -04:00
Jukka Kurkela
9326309afd Fix error when swapping dataset locations (#9183) 2021-05-30 07:39:00 -04:00
Josh Kelley
1df4883aff Fix detecting changed events (#9050)
* Fix detecting changed events

Because `this._listeners` may contain both event handlers from options and internal event handlers for responsive support, the `setsEqual` check would often fail, causing event handlers to be unnecessarily detached and reattached and fired.

If I'm understanding correctly, this is the root cause of #9049.

* Use a separate object for responsive listeners

Correctly update events when responsive property changes as well as when requested events change.

* Code review feedback
2021-05-10 08:48:03 -04:00
Toni Dietze
c955ffad64 Round canvas.style dimensions to avoid blurring (#9015)
When canvas.height and canvas.width are set, the numbers are rounded to
integers. The same rounding must be applied to canvas.style.height and
canvas.style.width to avoid scaling of the canvas which would lead to
blurring.

Acknowledging that canvas.height and canvas.width are integers, the
framebuffer is now only redrawn if those integer values change.
2021-05-08 08:11:52 +03:00
Evert Timberg
e29ba78cd1 Allow the events option to be changed at runtime (#8928) 2021-04-17 14:08:36 -04:00
Jukka Kurkela
0ae0fd4b2a Limit onHover to chartArea (#8794) 2021-04-10 16:13:30 -04:00
Jukka Kurkela
9e70913bed Enable event filtering per plugin (#8876) 2021-04-10 15:18:30 -04:00
Jukka Kurkela
dd99005b5a Remove line interaction overrides + hover.onHover (#8770)
* Remove interaction mode overrides + hover.onHover

* Restore bar override
2021-04-01 13:47:11 -04:00
Jukka Kurkela
b2c7baf10d Avoid recursive event replay loops (#8738)
* chart._lastEvent = null while processing onHover

* Pass replay flag to external tooltip

* Add test for replay

* cc
2021-03-27 06:11:51 -04:00
Evert Timberg
4ef04a8f78 Allow changing the aspect ratio (#8659)
* Allow changing the aspect ratio

* Add test and require `resize()` call

* Update to respect maintainAspectRatio
2021-03-18 23:07:32 +02:00
Jukka Kurkela
79cc6d3206 Use maxOverflow as minimum layout padding (#8650)
* Use maxOverflow as minimum layout padding

* fixes
2021-03-16 16:32:29 -04:00
Jukka Kurkela
8d6e87881a Relocate chart type and dataset type defaults (#8563)
* Relocate chart type and dataset type defaults

* Update types

* Separate overrides and descriptors

* Update derived sample, use merge for inherit

* Don't merge overrides

* Review update
2021-03-06 10:34:52 -05:00
Jukka Kurkela
061e3dbf2f Fix calling of onResize (#8529)
* Fix calling of onResize

* Try to fix the bugging animation test

* try again

* and the actual fix

* maybe now
2021-02-26 14:55:43 -05:00
Jukka Kurkela
8796a1ba1d Fix stacking bug when a dataset is removed (#8520) 2021-02-24 17:31:17 -05:00
Jukka Kurkela
2edd07d724 Config is no longer updated by options setter (#8516) 2021-02-24 16:34:29 -05:00
Jukka Kurkela
ee74dd646a Add resizeDelay option (#8509)
* Add resizeDelay option
* Extract helper
2021-02-23 18:40:57 -05:00
Jukka Kurkela
a6a12282c4 Fix memory leak on destroy (#8438) 2021-02-16 10:26:22 -05:00
Jukka Kurkela
b77f2585b1 perf: resolver caching (#8435)
* perf: resolver caching

* Fix plugin caching

* resetCache

* Reduce duplication, cache only by keys cached

* Reduce lines

* reduce more lines

* Double plural, noop-caching of chart level options
2021-02-16 15:43:11 +02:00
Jukka Kurkela
9fb87a4fc2 Round canvas size to 0.1px resolution (#8437)
* Round canvas size to 0.1px resolution
* Types + docs
* typofix
2021-02-16 08:30:40 -05:00
Jukka Kurkela
5baafac8ad Make Chart static properties and methods read only (#8431) 2021-02-15 15:06:37 -05:00
Jukka Kurkela
cfd9c98575 Option resolution with proxies (#8374)
* Option resolution with proxies

* Remove plugin fallback to root options/defaults

* Update core plugins, reduntant font fallbacks

* Add some notes
2021-02-15 14:42:32 -05:00