{ "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": "script", "target": "self", "script": "var s=bricks.getWidgetById('pccs_sidebar',app);if(s){var el=s.dom_element;el.classList.toggle('menu-collapsed');s.resize()}" } ] }, { "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": "Text", "options": { "otext": "主导航", "cfontsize": 0.7, "color": "#475569", "padding": "4px 4px 8px 4px", "fontWeight": "bold" } }, { "widgettype": "Tree", "id": "pccs_menu_tree", "options": { "bgcolor": "transparent", "color": "#94a3b8", "color_selected": "#e2e8f0", "bgcolor_selected": "#1e293b", "fontSize": "0.9rem", "indent": 16, "data": [ {"id": "dashboard", "label": "📊 概览", "url": "{{entire_url('/pccs/index.ui')}}"}, {"id": "pool", "label": "📦 算力池管理", "children": [ {"id": "pool_list", "label": "算力池列表", "url": "{{entire_url('/pcpool/compute_pool_list/index.ui')}}"}, {"id": "node_list", "label": "算力节点列表", "url": "{{entire_url('/pcpool/compute_node_list/index.ui')}}"} ]}, {"id": "cluster", "label": "🖥 集群管理", "children": [ {"id": "cluster_list", "label": "集群列表", "url": "{{entire_url('/pcc/cluster_list/index.ui')}}"}, {"id": "cn_list", "label": "节点分配", "url": "{{entire_url('/pcc/cluster_node_list/index.ui')}}"} ]}, {"id": "storage", "label": "💾 存储管理", "children": [ {"id": "storage_server", "label": "存储服务器", "url": "{{entire_url('/storage_mgr/storage_server_list/index.ui')}}"}, {"id": "storage_export", "label": "存储导出", "url": "{{entire_url('/storage_mgr/storage_export_list/index.ui')}}"}, {"id": "storage_mount", "label": "存储挂载", "url": "{{entire_url('/storage_mgr/storage_mount_list/index.ui')}}"} ]}, {"id": "image", "label": "🏗 镜像管理", "children": [ {"id": "mirror_source", "label": "镜像源配置", "url": "{{entire_url('/image_mgr/mirror_source_list/index.ui')}}"}, {"id": "image_registry", "label": "镜像仓库", "url": "{{entire_url('/image_mgr/image_registry_list/index.ui')}}"}, {"id": "container_image", "label": "容器镜像", "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" } } ] } ] } ] } ] } ] }