From: Dominik Csapak <d.csapak@proxmox.com>
To: yew-devel@lists.proxmox.com
Subject: [yew-devel] [PATCH yew-comp 00/20] refactor and improve rrd graph code
Date: Fri, 30 May 2025 14:21:42 +0200 [thread overview]
Message-ID: <20250530122202.2779300-1-d.csapak@proxmox.com> (raw)
This series aims to make the code of the rrd graphs more readable and
maintanable, by:
* moving code into it's own directory/file structure
* move code/structs together that belong together thematically
* factour out calculation code from graph component construction
* documenting relevant functions
* removing unnecessary computations
While the code now sometimes iterates over the data multiple times to
1. create the baseline data
2. create the actual components
the first part is now only done when necessary (when data/time changes,
when the user selects a new range) and not every time the graph is
redrawn, e.g. when the user moves the curser over the data.
So all in all this should do less work than before.
Also this fixes some panics when dealing with edge cases (e.g. clicking
on empty graphs, having a range selected then changing the underlying
data so that the range is not there anymore, ect.)
While at it, remove the old rrd graph code that used uplot. This is not
in use anywhere anymore but can be easily restored if necessary.
Future work could be to include more than two series. This can be done
later though, since we don't require that at the moment.
Dominik Csapak (20):
remove old rrd uplot code
rrd: refactor code for compute_min_max
rrd: move into own module
rrd: move unit calculation to own module
rrd: units: add tests
rrd: units: simplify calculations for get_grid_unit_base
rrd: remove unnecessary `no_data` field
rrd: align tooltip directly to pointer position
rrd: use 'cross_pos' state instead of 'draw_cross'
rrd: give all elements in svg keys
rrd: simplify toggle Msg
rrd: remove wrongly annotated lifetime
rrd: refactor series related struct and functions into own module
rrd: clamp view range when time_data changes
rrd: refactor grid data computation
rrd: introduce GraphSpace struct and use it to precalculate graph data
rrd: precalculate the grid line and label positions
rrd: calculate series svg data only when necessary
rrd: refactor selection rectangle calculation
rrd: refactor the cross position calculation
js-helper-module.js | 18 -
src/lib.rs | 19 +-
src/rrd/graph.rs | 726 ++++++++++++++++++++++++++++
src/rrd/graph_space.rs | 147 ++++++
src/rrd/grid.rs | 147 ++++++
src/rrd/mod.rs | 11 +
src/rrd/series.rs | 96 ++++
src/rrd/units.rs | 326 +++++++++++++
src/rrd_graph.rs | 169 -------
src/rrd_graph_new.rs | 1038 ----------------------------------------
10 files changed, 1455 insertions(+), 1242 deletions(-)
create mode 100644 src/rrd/graph.rs
create mode 100644 src/rrd/graph_space.rs
create mode 100644 src/rrd/grid.rs
create mode 100644 src/rrd/mod.rs
create mode 100644 src/rrd/series.rs
create mode 100644 src/rrd/units.rs
delete mode 100644 src/rrd_graph.rs
delete mode 100644 src/rrd_graph_new.rs
--
2.39.5
_______________________________________________
yew-devel mailing list
yew-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/yew-devel
next reply other threads:[~2025-05-30 12:22 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-30 12:21 Dominik Csapak [this message]
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 01/20] remove old rrd uplot code Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 02/20] rrd: refactor code for compute_min_max Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 03/20] rrd: move into own module Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 04/20] rrd: move unit calculation to " Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 05/20] rrd: units: add tests Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 06/20] rrd: units: simplify calculations for get_grid_unit_base Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 07/20] rrd: remove unnecessary `no_data` field Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 08/20] rrd: align tooltip directly to pointer position Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 09/20] rrd: use 'cross_pos' state instead of 'draw_cross' Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 10/20] rrd: give all elements in svg keys Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 11/20] rrd: simplify toggle Msg Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 12/20] rrd: remove wrongly annotated lifetime Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 13/20] rrd: refactor series related struct and functions into own module Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 14/20] rrd: clamp view range when time_data changes Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 15/20] rrd: refactor grid data computation Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 16/20] rrd: introduce GraphSpace struct and use it to precalculate graph data Dominik Csapak
2025-05-30 12:21 ` [yew-devel] [PATCH yew-comp 17/20] rrd: precalculate the grid line and label positions Dominik Csapak
2025-05-30 12:22 ` [yew-devel] [PATCH yew-comp 18/20] rrd: calculate series svg data only when necessary Dominik Csapak
2025-05-30 12:22 ` [yew-devel] [PATCH yew-comp 19/20] rrd: refactor selection rectangle calculation Dominik Csapak
2025-05-30 12:22 ` [yew-devel] [PATCH yew-comp 20/20] rrd: refactor the cross position calculation Dominik Csapak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250530122202.2779300-1-d.csapak@proxmox.com \
--to=d.csapak@proxmox.com \
--cc=yew-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal