{ "widgettype": "VBox", "options": { "width": "100%", "height": "100%", "bgcolor": "#f8fafc" }, "subwidgets": [ { "widgettype": "HBox", "options": { "width": "100%", "cheight": 2.5, "padding": "0 16px", "alignItems": "center", "bgcolor": "#ffffff", "borderBottom": "1px solid #e2e8f0" }, "subwidgets": [ { "widgettype": "Button", "id": "sidebar_toggle_btn", "options": { "css": "text", "label": "☰", "cfontsize": 1.4, "color": "#64748b" }, "binds": [ { "wid": "self", "event": "click", "actiontype": "method", "target": "pccs_sidebar", "method": "toggle_collapse" } ] }, { "widgettype": "Text", "options": { "otext": "PCCS", "cfontsize": 1.2, "fontWeight": "bold", "color": "#1e293b", "padding": "0 8px" } }, { "widgettype": "Text", "options": { "otext": "算力中心集群系统", "cfontsize": 0.8, "color": "#94a3b8" } }, { "widgettype": "Filler" }, { "widgettype": "urlwidget", "options": { "url": "{{entire_url('i18n/language.ui')}}" } }, { "widgettype": "urlwidget", "options": { "url": "{{entire_url('/rbac/user/user_panel.ui')}}" } } ] }, { "widgettype": "HBox", "options": { "css": "filler", "padding": "0", "gap": "0" }, "subwidgets": [ { "widgettype": "VBox", "id": "pccs_sidebar", "options": { "width": "220px", "minWidth": "200px", "height": "100%", "bgcolor": "#0f172a", "padding": "0", "flexShrink": "0" }, "subwidgets": [ { "widgettype": "VBox", "options": { "padding": "20px 16px", "borderBottom": "1px solid #1e293b" }, "subwidgets": [ { "widgettype": "Text", "options": { "otext": "PCCS", "cfontsize": 1.3, "fontWeight": "bold", "color": "#e2e8f0" } }, { "widgettype": "Text", "options": { "otext": "算力中心集群系统", "cfontsize": 0.75, "color": "#64748b" } } ] }, { "widgettype": "Menu", "id": "pccs_menu", "options": { "width": "100%", "height": "100%", "target": "pccs_main", "items": [ { "name": "dashboard", "label": "📊 概览", "icon": "", "url": "{{entire_url('/')}}" }, { "name": "compute_pool", "label": "📦 算力池列表", "icon": "", "url": "{{entire_url('/pcpool/compute_pool_list/index.ui')}}" }, { "name": "compute_node", "label": "📦 算力节点", "icon": "", "url": "{{entire_url('/pcpool/compute_node_list/index.ui')}}" }, { "name": "cluster_list", "label": "🖥 集群列表", "icon": "", "url": "{{entire_url('/pcc/cluster_list/index.ui')}}" }, { "name": "cluster_node", "label": "🖥 节点分配", "icon": "", "url": "{{entire_url('/pcc/cluster_node_list/index.ui')}}" }, { "name": "storage_server", "label": "💾 存储服务器", "icon": "", "url": "{{entire_url('/storage_mgr/storage_server_list/index.ui')}}" }, { "name": "storage_export", "label": "💾 存储导出", "icon": "", "url": "{{entire_url('/storage_mgr/storage_export_list/index.ui')}}" }, { "name": "storage_mount", "label": "💾 存储挂载", "icon": "", "url": "{{entire_url('/storage_mgr/storage_mount_list/index.ui')}}" }, { "name": "mirror_source", "label": "🏗 镜像源", "icon": "", "url": "{{entire_url('/image_mgr/mirror_source_list/index.ui')}}" }, { "name": "image_registry", "label": "🏗 镜像仓库", "icon": "", "url": "{{entire_url('/image_mgr/image_registry_list/index.ui')}}" }, { "name": "container_image", "label": "🏗 容器镜像", "icon": "", "url": "{{entire_url('/image_mgr/container_image_list/index.ui')}}" } ] } } ] }, { "widgettype": "VScrollPanel", "id": "pccs_main", "options": { "css": "filler", "width": "100%", "height": "100%" }, "subwidgets": [ { "widgettype": "VBox", "options": { "padding": "32px", "spacing": "24px" }, "subwidgets": [ { "widgettype": "Text", "options": { "otext": "概览", "cfontsize": 1.5, "fontWeight": "bold", "color": "#1e293b" } }, { "widgettype": "Text", "options": { "otext": "算力中心资源总览", "cfontsize": 0.9, "color": "#64748b" } }, { "widgettype": "HBox", "options": {"gap": "16px"}, "subwidgets": [ { "widgettype": "urlwidget", "id": "card_pool", "options": { "url": "{{entire_url('/pcpool/api/pool_stats.dspy')}}", "method": "GET" } }, { "widgettype": "urlwidget", "id": "card_cluster", "options": { "url": "{{entire_url('/pcc/api/cluster_status_all.dspy')}}", "method": "GET" } } ] }, { "widgettype": "HBox", "options": {"gap": "16px"}, "subwidgets": [ { "widgettype": "urlwidget", "id": "card_storage", "options": { "url": "{{entire_url('/storage_mgr/api/storage_stats.dspy')}}", "method": "GET" } }, { "widgettype": "urlwidget", "id": "card_image", "options": { "url": "{{entire_url('/image_mgr/api/image_stats.dspy')}}", "method": "GET" } } ] } ] } ] } ] } ] }