Skip to content

WSA Implementation - #507

Open
mudhoney wants to merge 22 commits into
Helioviewer-Project:mainfrom
mudhoney:feature/wsa
Open

WSA Implementation#507
mudhoney wants to merge 22 commits into
Helioviewer-Project:mainfrom
mudhoney:feature/wsa

Conversation

@mudhoney

@mudhoney mudhoney commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Adds WSA as an event source and migrates all events-state handling from the legacy eventsState tree to the new
event_selections + event_visibility_selections shape, end to end.

WSA source

  • Enable the WSA source with the Magnetic Connectivity event type, its 2-letter pin, and colors.
  • Add the MC marker pin so WSA events stop falling back to UNK.png.
  • Support multi-ring event footprints (array of rings) throughout.

New events payload shape

  • Adopt event_selections + event_visibility_selections as the request shape for postScreenshot/postMovie.
  • takeScreenshot gains an optional semicolon-separated event_selections= GET var, preferred over legacy events=.
  • Both screenshot and movie endpoints persist the new-shape blob so rows rehydrate identically.
  • Raise the max-selections validation limit.

EventContext

  • Rewrite EventContext to read events lazily per frame (memory-bounded) instead of all at once.
  • Consume the events API's {dx,dy} rotation deltas directly and apply them per frame.
  • Request frames_with_selections?withDelta so the upstream returns those deltas.
  • Drop selections for any source whose marker_visibility is false.

Retire the legacy path

  • Extract EventTypeCatalogue and LegacyEventsStringParser from the old classes.
  • Delete EventSelections; Timeline now takes canonical paths via an array constructor.
  • Remove the obsolete getEventsBatch conversion path.

New endpoint + stats

  • Add eventsDataCoverage (POST) as a simpler event-timeline coverage endpoint.
  • Register eventsDataCoverage in usage statistics.

Data migration

  • Add dry-run-by-default migration scripts for screenshots, movies, and client_states.
  • Update client_state.schema.json to require the new fields and drop eventLayers.

Config / tooling / docs

  • Raise the events API timeout and chunk size so large movies don't time out.
  • Add a Makefile with dev/test, migration, and requeue-movie shortcuts.
  • Update the OpenAPI docs and client_state test fixtures to the new shape.

⚠️ Before merge

  • Revert 539ba45 — it points Config.Example.ini at events.necdet.helioviewer.org for stack testing and must not ship (the
    default should stay events.helioviewer.org).

Follow-ups (not in this PR)

  • Run the migrations in a maintenance window, then delete EventsStateManager (kept only as the migration adapter).

mudhoney added 22 commits July 11, 2026 21:57
  Drop eventsState from postScreenshot/postMovie schemas in favor of the
  canonical event_selections + event_visibility_selections pair; add the two
  shared sub-schemas, reuse event_selections in eventsDataCoverage, and allow
  WSA in event_layers (client_state). Strip eventsState from the affected
  postScreenshot validation fixtures.
…y Read events per frame on demand (memory-bounded), consume the events APIs {dx,dy} directly, filter marker_visibility, and wire the new request shape through screenshot/movie endpoints. Movie worker reads new-shape rows directly; existing rows are converted by the migration scripts.
…vity events fell back to UNK.png for lack of an MC marker. Add MC.png + MC@2x.png
…ns optional event_selections= (semicolon-separated SOURCE>>Label[>>FRM]), preferred over legacy events=; eventLabels applies to both. Both persist the new event_selections + event_visibility_selections blob.
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