exlab_wizard.ui.components.sync_rollup#

Folder/run-level sync-status rollup (two-icon presence model, 2026-05-30).

When a run row (left tree) or a folder (metadata pane) is summarised, it carries a single “worst-of” rollup icon reduced from its children’s per-file sync discriminators. This module owns that reduction as a pure, NiceGUI-free function so the severity ordering is testable in isolation.

The reduction is over FileSyncView (the UI presentation view), not the schema-committed SyncStatus enum: severity is a presentation concern, so it lives here beside its only consumer rather than on the wire enum.

Functions

sync_rollup(statuses)

Reduce per-file sync discriminators to a single worst-of view value.

exlab_wizard.ui.components.sync_rollup.sync_rollup(statuses)[source]#

Reduce per-file sync discriminators to a single worst-of view value.

Returns the highest-severity recognised view’s value string (missing > upload_failed > blocked > local_only > synced > on_nas), or None when there is nothing to roll up (empty, or only None / unrecognised values map to FileSyncView.NONE, which is ignored).

Parameters:

statuses (Iterable[str | None])

Return type:

str | None