| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- # -*- coding: utf-8 -*-
- """
- Key-Value-Tabelle fuer Statusanzeigen.
- """
- from textual.widget import Widget
- from textual.app import RenderResult
- from rich.table import Table
- class StatusTable(Widget):
- """
- Formatierte Key-Value-Tabelle.
- Zeigt Daten als zweispaltige Tabelle an,
- ideal fuer Systemmetriken und Konfigurationswerte.
- """
- DEFAULT_CSS = """
- StatusTable {
- height: auto;
- margin: 0 1;
- }
- """
- def __init__(self, title: str = "", **kwargs) -> None:
- super().__init__(**kwargs)
- self._title = title
- self._rows: list[tuple[str, str]] = []
- def update_data(self, rows: list[tuple[str, str]]) -> None:
- """Aktualisiert die angezeigten Daten — nur bei tatsaechlicher Aenderung.
- Vermeidet unnoetige Re-Renderings wenn alle Werte identisch geblieben sind.
- """
- if rows == self._rows:
- return
- self._rows = rows
- self.refresh()
- def render(self) -> RenderResult:
- """Rendert die Tabelle."""
- table = Table(
- show_header=False,
- show_edge=False,
- pad_edge=False,
- expand=True,
- title=self._title if self._title else None,
- title_style="bold",
- )
- table.add_column("Key", style="bold cyan", ratio=1, no_wrap=True)
- table.add_column("Value", ratio=2)
- for key, value in self._rows:
- table.add_row(key, value)
- return table
|