mirror of
https://github.com/SikongJueluo/Mini-Nav.git
synced 2026-03-12 12:25:32 +08:00
feat(visualizer): add Dash-based web interface for data visualization
This commit is contained in:
@@ -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
4
mini-nav/main.py
Normal file
@@ -0,0 +1,4 @@
|
||||
from visualizer import app
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(debug=True)
|
||||
3
mini-nav/visualizer/__init__.py
Normal file
3
mini-nav/visualizer/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from .app import app
|
||||
|
||||
__all__ = ["app"]
|
||||
37
mini-nav/visualizer/app.py
Normal file
37
mini-nav/visualizer/app.py
Normal 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()
|
||||
Reference in New Issue
Block a user