[yew-devel] [PATCH yew-comp 00/20] refactor and improve rrd graph code
    Dominik Csapak 
    d.csapak at proxmox.com
       
    Fri May 30 14:21:42 CEST 2025
    
    
  
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
    
    
More information about the yew-devel
mailing list