This PR combines several things, from adding Rust support for observations, through addressing issues in communication with the front-end, to reorganizing the Rust side of the project. Although the scope of the changes is vast, I believe that (once reviewed and merged) we might finally have a solid grounding for the Rust side of the app.
On the back-end side, the sketchbook module is now entirely reorganized:
The BN sketch is now divided into three main sub-modules: model, observations, and properties (the last two being new). All of these components have their "manager" class that implements the event API via the SessionState trait.
Above these three components, there is a new sketch struct, which distributes the events to its three sub-modules and handles operations that affect more than one component.
There are other minor submodules, like ids with type-safe identifiers or data-structs with structures for sending data between FE and BE. Some functionality shared between modules was made generic via traits and macros (JSON serialization, IDs).
Both the model and observations parts are now (more or less) functional. The properties module is implemented only partially, and many methods/structs are just placeholders - this module will be addressed more thoroughly in future PR.
Before we merge this, it would be nice to finish a few remaining events regarding observations. This also includes fixing a bug in table rendering.
This PR combines several things, from adding Rust support for observations, through addressing issues in communication with the front-end, to reorganizing the Rust side of the project. Although the scope of the changes is vast, I believe that (once reviewed and merged) we might finally have a solid grounding for the Rust side of the app.
On the back-end side, the
sketchbook
module is now entirely reorganized:model
,observations
, andproperties
(the last two being new). All of these components have their "manager" class that implements the event API via theSessionState
trait.sketch
struct, which distributes the events to its three sub-modules and handles operations that affect more than one component.ids
with type-safe identifiers ordata-structs
with structures for sending data between FE and BE. Some functionality shared between modules was made generic via traits and macros (JSON serialization, IDs).Both the
model
andobservations
parts are now (more or less) functional. Theproperties
module is implemented only partially, and many methods/structs are just placeholders - this module will be addressed more thoroughly in future PR.Before we merge this, it would be nice to finish a few remaining events regarding observations. This also includes fixing a bug in table rendering.