Skip to content

Gui asset#139

Merged
raymondwjang merged 51 commits into
mainfrom
gui-asset
Sep 16, 2025
Merged

Gui asset#139
raymondwjang merged 51 commits into
mainfrom
gui-asset

Conversation

@raymondwjang
Copy link
Copy Markdown
Member

@raymondwjang raymondwjang commented Sep 13, 2025

🔍 Type of Change

New Feature: Introducing new functionality

📝 Description

GUI is working!

New Features:

  • Filepicker: interactively pick which tube spec file to use.
  • Start / Stop buttons: Support beginning / stopping the tube running process.
  • Grids of displays: Can either be a video or a lineplot. Easy to add new plots with spec, or new type of plot by adding a postprocessing node on the backend / plotting node as a partial.
nodes:
  prep_movie:
    type: cala.gui.components.Encoder
    params:
      grid_id: prep_movie
      frame_rate: 30
    depends:
      - frame.value
  component_count:
    type: cala.gui.components.component_counter
    depends:
      - index: counter.idx
      - traces: assets.traces

This is an example yaml spec file for configuring the display grids. This can be extended to add more plots, if needed.
Type of display (video vs. plot) is determined by the type attribute of each node. Currently, it only supports Encoder for video and the rest for a lineplot. This can be extended as needed, also in a modular manner.
image

  • example dashboard (not actually doing the component extraction part, so the component count stays zero)

TODO:

  • Video source picker: it could be helpful to assist the users picking video sources with a filepicker as well. Currently, however, the IO node handles streaming (so that it can be swapped into other formats of sources i.e. streaming with a USB port), so this may become more involved.
  • Time syncing: Videos aren't necessarily synced with the plots, due to how they're being served to the browser - instead of the server sending the pixel values directly to the front, it saves a playlist and chunks to a given directory, where it is read by the browser. This means the videos aren't necessarily time-synced, and can be off by chunk-duration x chunk-count # of frames vs. the plotting data (which strictly shows the most up-to-date current frame).
  • Cookie: if user refreshes mid-process, the dashboard doesn't ask the user to restart the whole process.

🧪 Testing

  • Unit tests
  • Integration tests
  • Existing tests update

🛠️ Dependencies

✅ Checklist

  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation

📚 Documentation preview 📚: https://cala--139.org.readthedocs.build/en/139/

raymondwjang and others added 30 commits September 4, 2025 03:30
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
feat: move frontend assets to static
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
…when we run pdm run dev from root (read: start.working_dir = "frontend" in pyproject.toml)

Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
Signed-off-by: Raymond <raymond.w.jang@gmail.com>
@raymondwjang raymondwjang merged commit 6f529b4 into main Sep 16, 2025
7 of 13 checks passed
@raymondwjang raymondwjang deleted the gui-asset branch September 16, 2025 17:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant