"""HTML views for the live Gitea queue dashboard (#429).""" from __future__ import annotations import html from webui.queue_loader import PaginationMeta, QueueItem, QueueSnapshot def _badge_html(badges: tuple[str, ...]) -> str: if not badges: return "" chips = "".join( f'{html.escape(b)}' for b in badges ) return f'{chips}' def _pagination_html(label: str, meta: PaginationMeta | None) -> str: if meta is None: return ( f"
{html.escape(label)} pagination: " "unavailable
" ) status = "complete" if meta.inventory_complete else "partial" more = "yes" if meta.has_more else "no" return ( f"" ) def _queue_table( *, title: str, items: tuple[QueueItem, ...], columns: tuple[tuple[str, str], ...], ) -> str: if not items: return f"No open items.
" headers = "".join(f"Queue unavailable: ' f"{html.escape(snapshot.fetch_error)}
Inventory: not fetched " "(fail closed — queue tables omitted).
" ) return ( "Read-only MVP — claims, reviews, and merges stay in Gitea/MCP tools.
" ) pr_section = _queue_table( title="Open pull requests", items=snapshot.prs, columns=( ("number", "#"), ("title", "Title"), ("branch", "Branch"), ("head_sha", "Head"), ("mergeable", "Mergeable"), ("linked_issue", "Linked issue"), ), ) issue_section = _queue_table( title="Open issues", items=snapshot.issues, columns=( ("number", "#"), ("title", "Title"), ("labels", "Labels"), ("assignee", "Assignee"), ("state", "State"), ), ) return ( "Read-only MVP — claims, reviews, and merges stay in Gitea/MCP tools.
" )