Releases: leeoniya/uPlot
Releases · leeoniya/uPlot
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 fromlegend
inwards 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.show
can now be set tofalse
to disable markers and render the labels with the stroke or fill color. (#514)opts.gap
for bars pathBuilder- formal band manip methods:
.addBand()
,.setBand()
,.delBand()
. (#516) - new
syncRect
hook for notifying when.getBoundingClientRect()
is called after scroll or resize - expose
.u-over
and.u-under
as 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 expandundefined
values withnull
s - fix cursor sync
setSelect
using own scale keys for lookups instead of emitter's - fix regression:
cannot read 'scale' of undefined
error 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
undefined
to 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
fireHook
arg 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.isolate
mode (Ctrl+click). (#404) opts.pxAlign
andseries.pxAlign
can now to define the pixel rounding increment to reduce micro-shifting in streaming cases. (#241)axis.values
can 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
ms
date 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.focus
which caused the chart to redraw on every focus change even withalpha: 1
where no visible change happened. this caused a significant perf impact when mousing over a lot of densely-packed series.
1.6.6
ascDesc
opt 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._focus
prop to help check if a series is focused by cursor (#429)opts.pxAlign
&series.pxAlign
opts 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
1.6.2
series.isGap
is gone anduPlot.join()
now returns the data array directly, withundefined
occupying the value locations of alignment artifacts. as a result,.join()
internals have been optimized/simplified for a 2-3x speedup.- callback signatures for
axis.stroke
,axis.grid.stroke
,axis.ticks.stroke
- no more defaulting to
black
whenseries.stroke
is absent. this helps fill-only series. - some more robustness to early-exit before trying to draw will empty stroke, empty fill or empty paths.