"""Страница сервера: вкладки Обзор / Пакеты / Docker / Файлы / Сервисы / Firewall / Cron.""" import flet as ft from app.core import servers as servers_core from app.ui.tabs.overview import OverviewTab from app.ui.tabs.packages import PackagesTab from app.ui.tabs.docker_tab import DockerTab from app.ui.tabs.files_tab import FilesTab from app.ui.tabs.systemd_tab import SystemdTab from app.ui.tabs.firewall_tab import FirewallTab from app.ui.tabs.cron_tab import CronTab from app.ui.tabs.terminal_tab import TerminalTab class ServerDetailPage(ft.Column): def __init__(self, page: ft.Page, server_id: int, go): super().__init__(expand=True) self._page = page self.go = go srv = servers_core.get_server(server_id) tabs = ft.Tabs( selected_index=0, length=8, expand=True, content=ft.Column( expand=True, controls=[ ft.TabBar(tabs=[ ft.Tab(label="Обзор", icon=ft.Icons.INFO), ft.Tab(label="Пакеты", icon=ft.Icons.INVENTORY_2), ft.Tab(label="Docker", icon=ft.Icons.AC_UNIT), ft.Tab(label="Файлы", icon=ft.Icons.FOLDER), ft.Tab(label="Сервисы", icon=ft.Icons.SETTINGS_APPLICATIONS), ft.Tab(label="Firewall", icon=ft.Icons.SHIELD), ft.Tab(label="Cron", icon=ft.Icons.SCHEDULE), ft.Tab(label="Терминал", icon=ft.Icons.TERMINAL), ]), ft.TabBarView( expand=True, controls=[ ft.Container(padding=10, content=OverviewTab(page, srv)), ft.Container(padding=10, content=PackagesTab(page, srv)), ft.Container(padding=10, content=DockerTab(page, srv)), ft.Container(padding=10, content=FilesTab(page, srv)), ft.Container(padding=10, content=SystemdTab(page, srv)), ft.Container(padding=10, content=FirewallTab(page, srv)), ft.Container(padding=10, content=CronTab(page, srv)), ft.Container(padding=0, content=TerminalTab(page, srv)), ], ), ], ), ) self.controls = [ ft.Row([ ft.IconButton(ft.Icons.ARROW_BACK, on_click=lambda e: go("dashboard")), ft.Text(srv.name, size=24, weight=ft.FontWeight.BOLD), ft.Text(f"{srv.username}@{srv.host}:{srv.port}", size=13, color=ft.Colors.GREY_500), ]), tabs, ]