this mostly has the objective of splitting fetching and visualizing, to
be able to daemonize the fetching. I swapped out ureq for reqwest,
brought in clap, removed rusqlite for full fledged sea_orm, added
tokio. Created migrations in sea_orm to reflect current db schema. Moved
data structures defititions out of app, and slimmed down gui code.
Entities collections are mostly managed by background workers and made
available with watch-channels to the main thread, which can always
nonblockingly access data. This is cool but still has some sharp
corners. Now plots don't refresh live but at specific interval. I plan
to add synchronization channels later on tho.
metrics can be saved and loaded to/from csv.
The files are ok-ish and it's reasonably fast. File format could still
change. Also some small fixes and tweaks, like bigger buttons in
confirmation prompts and source name in logs.
Some UI tweaks (like suffixes in sliders)
Restructured data and storage: many Metrics per one Source. Each Metric
is a Line on a Panel. Fetches are handled per Source. Metrics cannot be
moved across Sources. Data points are linked to a Metric.
Also made "show sources" and "edit mode" two distinct toggles, and thus
implemented a non-edit view for sources.
Also bumped version to 0.3.0
Added in sources a position field which works just like the one in panels.
Added in sources an "enabled" flag which now governs wether or not data is fetched.
Added a button to delete panels.
Tweaked UI a little
improved a lot logging, using tracing from tokio.
Now there's a subscriber which tracks log messages and makes them
available inside the state, so that we can show them in the gui.
Made a jank logs side panel.
Made panels reorderable in a kinda weird but meh way
made timeserie plot marks align to days and hours.
Also added some collapsable empty space at the
bottom of sources panel to allow to shift the last ones up
some space and still be able to edit their color.
now sources are all edited in one side panel, which opens in edit mode.
Easily move sources across panels.
Implementation has a lot of room for improvement (too many loops) but it
works for now