Releases: leeoniya/uPlot
Releases · leeoniya/uPlot
1.6.12
- bars pathBuilder now uses the minimum x distance between all adjacent points in dataset to determine available space for a bar. previously only the first two points were used, which may create too-wide bars when dataset is not evenly spaced.
- auto point visibility now uses x distance between first and last in-view points to determine avg point density. previously it always used points-in-view and full width of chart, which was inaccurate if dataset does not actually span full chart (x scale is wider than dataset).
1.6.11
- fix stroke being wrongly clipped (along with fill) when using bands with non-bars pathbuilders. see grafana/grafana#34904
1.6.10
- [BREAKING] legend marker options (
width,stroke,fill,dash) have moved fromlegendinwards to the newlegend.markers. these are not commonly used opts, so it felt okay to break them mechanically as part of introducing another marker-specific option (below) legend.markers.showcan now be set tofalseto disable markers and render the labels with the stroke or fill color. (#514)opts.gapfor bars pathBuilder- formal band manip methods:
.addBand(),.setBand(),.delBand(). (#516) - new
syncRecthook for notifying when.getBoundingClientRect()is called after scroll or resize - expose
.u-overand.u-underas instance props to reduce need foru.root.querySelector(".u-over"), reduces plugins boilerplate and improves perf - ensure axis auto-sizing converges after 3 cycles (fixes infinite loops & ui lockups if externally-provided
axis.size()function fails to properly converge) - fix
join()to not expandundefinedvalues withnulls - fix cursor sync
setSelectusing own scale keys for lookups instead of emitter's - fix regression:
cannot read 'scale' of undefinederror when initializing uPlot with no y series (#519) - fix y-scale auto-ranging: treat deltas < 1e-9 as flat. fixes min/max of e.g. 89.69999999999999, 89.7
- add
undefinedto AlignedData type series value arrays - bars pathBuilder improvements
- various demos refinements
1.6.9
- switch spline paths to use monotone cubic interpolation instead of centripetal Catmull-Rom. this is somewhat less curvey but avoids exceeding min/max y values. (#504)
- enhancements, fixes and optimizations for
cursor.sync - fix errors when
legend.live: false. (#496) - skip updating a hidden cursor when resizing. (#499)
- avoid error when axis tick increment calc fails, and simply skip rendering ticks. (#503)
- add
fireHookarg to.setCursor() - various typings and demos refinements
- updated benchmarks for all libs
1.6.8
- new
.setLegend({idx})API and matching hook that fires on legend updates. (#414) - new
legend.isolatemode (Ctrl+click). (#404) opts.pxAlignandseries.pxAligncan now to define the pixel rounding increment to reduce micro-shifting in streaming cases. (#241)axis.valuescan now be a static array- optimized handling of clientRect invalidation during resize and scrolling. also fixes bug that failed to invalidate clientRect of plots when scrolling was of an ancestor container (not window).
- fix for float math precision issues in
msdate handling. (#472) - 50% fewer
lineTo()calls when only 2 datapoints per pixel - data smoothing demo: https://leeoniya.github.io/uPlot/demos/data-smoothing.html
- new histogram demo below latency heatmaps: https://leeoniya.github.io/uPlot/demos/latency-heatmap.html
- timeline demo improvements
1.6.7
- fixes a perf issue with
cursor.focuswhich caused the chart to redraw on every focus change even withalpha: 1where no visible change happened. this caused a significant perf impact when mousing over a lot of densely-packed series.
1.6.6
ascDescopt for stepped pathbuilder to control whether to draw ascenders/descenders at null/gap boundaries. now defaults tofalse. (grafana/grafana#17838 (comment))- selective filtering for synced cursors. e.g. can sync position without syncing zoom. (#459)
- perf improvements, mostly for streaming cases.
- typings refinements
- fix for initially-defined min/max for scales (unborks the ranger demos)
- new timeline/discrete demo: https://leeoniya.github.io/uPlot/demos/timeline-discrete.html
- new sine-stream demo: https://leeoniya.github.io/uPlot/demos/sine-stream.html
1.6.5
- Inverse hyperbolic sine scale distribution - like log scales, but are linear below a certain threshold and can be <= 0. see https://leeoniya.github.io/uPlot/demos/arcsinh-scales.html
- expose internal pubsub creator as
uPlot.sync(key). this allows things like runtime toggling of cursor sync (#354). see https://leeoniya.github.io/uPlot/demos/sync-cursor.html - typings are now under a namespace (#444)
- inverted log scales demo (using 2 direction-reflected charts). see https://leeoniya.github.io/uPlot/demos/log-scales2.html
1.6.4
- bands now properly clip strokes, too (e.g. stacking stroked bars)
- it's now possible to redraw axes without invalidating scales, e.g. to change the tick value formatting or precision. (#437)
series._focusprop to help check if a series is focused by cursor (#429)opts.pxAlign&series.pxAlignopts to opt out of canvas translation during path & point drawing (#442)- perf improvements to linear path builder when qty of datapoints <= width pixels
- various tweaks to
uPlot.join() - multi-bars demo improvements
- scale-affixed stroke gradient demo: https://leeoniya.github.io/uPlot/demos/gradient-stroke.html
1.6.3
- fix for bands not filling below 0