Skip to content

Add graph page topic selection presets #566

@bracyw

Description

@bracyw

Blocked by #564, #565

Description

Add a config/presets system for the graph page so users can save and load named topic selection configurations (e.g. "BMS Profile", "Suspension Profile"). Configs are shared across all clients and persisted server-side via scylla using simple file read/write — no database needed. This addresses repeated requests from engineers who want quick access to their common topic groupings without manually selecting each time.

Context: engineers monitoring the car live want preset topic groups per subsystem (BMS temps + pack current, suspension IMU + potentiometers, etc.) so they don't re-select every session.

Acceptance Criteria

  • Users can save the current graph page topic selection as a named config
  • Users can load a saved config to restore its topic selection
  • Users can delete configs they no longer need
  • Configs are served from scylla and available across all clients
  • Scylla persists configs to a dedicated directory using file read/write, similar to existing patterns in file_insertion_controller.rs
  • A reasonable cap on total config storage size is enforced server-side
  • Config payloads are compact — consider protobuf serialization to keep size down
  • New REST endpoints: GET (list/fetch configs), POST (create), DELETE (remove)

Proposed Solution

Backend (scylla-server):
Add a new config controller with CRUD endpoints. Store each config as a file in a dedicated directory (reference the OutputDirectory / ensure_directory_exists pattern in main.rs). Each config file contains the preset name and list of topic names. Enforce a max directory size cap and reject writes that would exceed it. Define a proto message for the config payload to keep serialization compact, following the existing proto patterns in src/proto/.

Frontend (angular-client):
Add a config service to call the new endpoints. Add save/load UI to the graph sidebar — a dropdown or menu listing available configs with save and delete actions. Loading a config updates the topic selection via topic-selection.service.ts. Implementation details and UI design left to the developer.

Metadata

Metadata

Labels

angular-clientDevelopment Focused in the FrontenddifficultA task most likely involving researchnew featureNew feature or requestscylla-serverDevelopment Focused in the Backend

Type

No type
No fields configured for issues without a type.

Projects

Status
Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions