stuff
This commit is contained in:
60
src/main.py
60
src/main.py
@@ -5,7 +5,7 @@ from nicegui import ui, app
|
||||
|
||||
from components import Header, Sidebar
|
||||
from pages import DashboardPage, OllamaManagerPage
|
||||
from utils import data_manager
|
||||
from utils import GPUMonitor, SystemMonitor
|
||||
import logging
|
||||
|
||||
logging.basicConfig(
|
||||
@@ -18,14 +18,13 @@ load_dotenv()
|
||||
|
||||
app.add_static_files('/static', 'src/static')
|
||||
|
||||
# Start global data collection
|
||||
@app.on_startup
|
||||
async def startup():
|
||||
data_manager.start()
|
||||
|
||||
@app.on_shutdown
|
||||
async def shutdown():
|
||||
data_manager.stop()
|
||||
# Create monitor instances (bindable dataclasses)
|
||||
system_monitor = SystemMonitor()
|
||||
gpu_monitor = GPUMonitor()
|
||||
|
||||
app.timer(2.0, system_monitor.update)
|
||||
app.timer(2.0, gpu_monitor.update)
|
||||
|
||||
|
||||
def create_layout(current_route='/'):
|
||||
@@ -36,14 +35,14 @@ def create_layout(current_route='/'):
|
||||
# Add custom CSS
|
||||
ui.add_head_html('<link rel="stylesheet" type="text/css" href="/static/style.css">')
|
||||
|
||||
Header()
|
||||
Header(system_monitor, gpu_monitor)
|
||||
Sidebar(current_route)
|
||||
|
||||
|
||||
@ui.page('/')
|
||||
async def index_page():
|
||||
create_layout('/')
|
||||
DashboardPage()
|
||||
DashboardPage(system_monitor, gpu_monitor)
|
||||
|
||||
|
||||
@ui.page('/system')
|
||||
@@ -59,46 +58,9 @@ async def system_page():
|
||||
@ui.page('/ollama')
|
||||
async def ollama_page():
|
||||
create_layout('/ollama')
|
||||
with ui.element('div').classes('main-content w-full'):
|
||||
with ui.column().classes('w-full max-w-4xl mx-auto p-6 gap-6'):
|
||||
ui.label('Ollama Manager').classes('text-2xl font-bold text-white mb-4')
|
||||
await OllamaManagerPage.create()
|
||||
|
||||
# Status cards
|
||||
with ui.row().classes('w-full gap-4 mb-6'):
|
||||
with ui.card().classes('metric-card flex-grow p-4'):
|
||||
with ui.row().classes('items-center gap-2'):
|
||||
ui.icon('check_circle', color='green')
|
||||
ui.label('Status: Online').classes('font-medium text-white')
|
||||
|
||||
with ui.card().classes('metric-card flex-grow p-4'):
|
||||
ui.label('Version: 0.11.11').classes('font-medium text-white')
|
||||
|
||||
# Models list
|
||||
with ui.card().classes('metric-card p-6'):
|
||||
ui.label('Installed Models').classes('text-lg font-bold text-white mb-4')
|
||||
|
||||
models = [
|
||||
('llama3.2:3b', '2.0 GB', 'Q4_0'),
|
||||
('mistral:7b', '4.1 GB', 'Q4_0'),
|
||||
('codellama:13b', '7.4 GB', 'Q4_K_M'),
|
||||
('phi3:mini', '2.3 GB', 'Q4_0'),
|
||||
]
|
||||
|
||||
for name, size, quant in models:
|
||||
with ui.card().classes('metric-card p-4 mb-2'):
|
||||
with ui.row().classes('w-full items-center'):
|
||||
with ui.column().classes('gap-1'):
|
||||
ui.label(name).classes('font-bold text-white')
|
||||
with ui.row().classes('gap-2'):
|
||||
ui.chip(size, icon='storage').props('outline dense color=cyan')
|
||||
ui.chip(quant, icon='memory').props('outline dense color=orange')
|
||||
|
||||
ui.space()
|
||||
|
||||
with ui.row().classes('gap-2'):
|
||||
ui.button(icon='play_arrow').props('round flat color=green').tooltip('Run')
|
||||
ui.button(icon='info').props('round flat color=blue').tooltip('Info')
|
||||
ui.button(icon='delete').props('round flat color=red').tooltip('Delete')
|
||||
# await page._load_models()
|
||||
|
||||
|
||||
@ui.page('/processes')
|
||||
|
||||
Reference in New Issue
Block a user