Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

uPlot ended up being a perfect fit for dashboards with tons of timeseries charts. who would've thought? ;)

i'm very happy they hired me, maybe due to extreme lack of uPlot documentation :D

the previous library Grafana was using (Flot) is also canvas based and actually still quite fast [1], but the way it was integrated put a heavy load on other dependencies, like Moment which is not fast at all.

[1] https://github.com/leeoniya/uPlot#performance



Hey @leeoniya, great to hear that you've been involved in including uPlot. Can you now maybe talk a little bit about the React integration [1]?

Another question: are you considering making uPlot more accessible? Right now, at least the uPlot demo is inaccessible to screen reader users and only partially accessible to keyboard users.

[1] https://github.com/leeoniya/uPlot/issues/283


> Can you now maybe talk a little bit about the React integration?

do you have a specific question about it?

there are some third party integrations now:

https://github.com/leeoniya/uPlot#third-party-integrations

in general, my stance on the topic has not changed. wrapping a fast imperative lib in a declarative framework facade has significant performance drawbacks. the main CPU & RAM cost of rendering a Grafana dashboard full of uPlot graphs is almost always React (by far).

> Another question: are you considering making uPlot more accessible?

this is a pretty complex challenge for data vis. i don't think this will ever be built into uPlot since the required code to make it actually good would be quite large.

grafana in general will definitely need a better accessibility story, so we will have to figure something out and at minimum provide some kinds of fallback html summary tables. i imagine this will not be a trivial project. while it's easy to summarize a simple bar or pie chart with 5 series, how do you summarize 100 noisey trendlines with 2k points each? how do you summarize a histogram or temporal heatmap?

it's one thing to have a human summarize some pre-determined/static chart graphic; it's completely something else to usefully auto-summarize arbitrary datasets beyond listing series names and general stats (sum, median, mean, outliers, counts)

at the end of the day, the data you feed into uPlot is already there for you to create an accessibility story externally. if you'd like to write some code that can take arbitrary data as input and output something sensible, please open a PR/discussion in Grafana or uPlot.

https://pauljadam.com/demos/canvas.html




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: