""" Statistical Analysis Widget - Metrics dashboard with real-time updates """ from textual.widgets import Static, TabbedContent, TabPane, DataTable from textual.containers import Vertical, Horizontal from typing import TYPE_CHECKING if TYPE_CHECKING: from ....analysis.core import EthernetAnalyzer class StatisticalAnalysisWidget(Vertical): """ Statistical Analysis Dashboard Features: - Real-time metrics display - Performance analysis charts - Outlier detection - Export capabilities """ def __init__(self, analyzer: 'EthernetAnalyzer', **kwargs): super().__init__(**kwargs) self.analyzer = analyzer def compose(self): """Create the statistics dashboard""" yield Static("STATISTICAL ANALYSIS", id="stats-title") # Metrics summary with Horizontal(id="metrics-summary"): yield Static("Total Flows: 0", id="total-flows-metric") yield Static("Total Packets: 0", id="total-packets-metric") yield Static("Outliers: 0", id="outliers-metric") yield Static("Quality: 0%", id="quality-metric") # Analysis modes with TabbedContent(): with TabPane("Performance", id="performance-tab"): perf_table = DataTable(id="performance-table") perf_table.add_columns("Metric", "Value", "Threshold", "Status") yield perf_table with TabPane("Protocol Distribution", id="protocol-tab"): proto_table = DataTable(id="protocol-table") proto_table.add_columns("Protocol", "Flows", "Packets", "Percentage") yield proto_table with TabPane("Timing Analysis", id="timing-tab"): timing_table = DataTable(id="timing-table") timing_table.add_columns("Flow", "Min", "Max", "Avg", "Jitter") yield timing_table with TabPane("Quality Metrics", id="quality-tab"): quality_table = DataTable(id="quality-table") quality_table.add_columns("Flow", "Enhanced", "Quality", "Outliers") yield quality_table def on_mount(self) -> None: """Initialize the widget""" self.refresh_data() def refresh_data(self) -> None: """Refresh statistical analysis data""" # TODO: Implement statistics data refresh pass