feat(visualizer): add Dash-based web interface for data visualization

This commit is contained in:
2026-02-03 20:27:48 +08:00
parent 9efdbb3327
commit 701fa9f289
7 changed files with 208 additions and 6 deletions

View File

@@ -0,0 +1,3 @@
from .database import DatabaseManager, db_manager, db_schema
__all__ = ["DatabaseManager", "db_manager", "db_schema"]

4
mini-nav/main.py Normal file
View File

@@ -0,0 +1,4 @@
from visualizer import app
if __name__ == "__main__":
app.run(debug=True)

View File

@@ -0,0 +1,3 @@
from .app import app
__all__ = ["app"]

View File

@@ -0,0 +1,37 @@
from typing import Optional
import dash_ag_grid as dag
import dash_mantine_components as dmc
from dash import Dash
from database import db_manager
class APP(Dash):
"""Singleton Dash Application"""
_instance: Optional["APP"] = None
def __new__(cls) -> "APP":
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance
def __init__(self):
super().__init__(__name__)
df = db_manager.table.search().select(["id", "label", "vector"]).to_polars()
columnDefs = [
{"headerName": column.capitalize(), "field": column}
for column in df.columns
]
self.layout = dmc.MantineProvider(
dag.AgGrid(
rowData=df.to_dicts(),
columnDefs=columnDefs,
)
)
app = APP()