fd715eac2b
新增: - services/web_panel/routes/files.py — 全功能文件管理后端API (11个端点) - pages/files.html + files.js — 文件管理前端 (浏览/编辑/上传/删除/右键菜单) - 插件Picker API: window.open+postMessage唤出文件选择器 - 符号链接目录双层面包屑 (逻辑路径+物理路径) - 文件系统全访问+跨平台 (Linux/Windows/macOS) - permission_rules.yaml新增4个filemanager.*权限 修复: - SVG fill=currentColor 日夜模式自适应 - 特殊目录容错 (/dev/fd损坏符号链接/proc) - 面包屑每层级独立可点击+可编辑路径跳转 - ..行返回上级+data-is-dir补全 - rmlint→lstat回退 损坏符号链接不炸页面 文档: - 插件开发指南新增第八章(文件管理器集成) - 开发踩坑记录新增4条(特殊目录/双面包屑/SVG颜色/Windows) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
91 lines
5.8 KiB
HTML
91 lines
5.8 KiB
HTML
<div class="dash-layout">
|
|
<!-- 🟢 左侧:动态监控区 -->
|
|
<div class="dash-main">
|
|
<div class="dash-grid">
|
|
<div class="stat-card">
|
|
<h3>⏳ 运行时间</h3>
|
|
<div class="stat-value" id="d-uptime">--</div>
|
|
<div class="stat-sub" id="d-ver-badge">v?.?.?</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>📦 插件状态</h3>
|
|
<div class="stat-value" id="d-plugins">--</div>
|
|
<div class="stat-sub">已加载 / 活跃</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>🧠 内存使用</h3>
|
|
<div class="stat-value" id="d-mem">--%</div>
|
|
<canvas id="chart-mem" class="mini-chart"></canvas>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>⚡ CPU 负载</h3>
|
|
<div class="stat-value" id="d-cpu">--%</div>
|
|
<canvas id="chart-cpu" class="mini-chart"></canvas>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>🌐 网络流量</h3>
|
|
<div style="display:flex; gap:16px">
|
|
<div><div class="stat-sub" style="font-size:.65rem">下行</div><div class="stat-value" id="d-net-rx" style="font-size:1.4rem">--</div></div>
|
|
<div><div class="stat-sub" style="font-size:.65rem">上行</div><div class="stat-value" id="d-net-tx" style="font-size:1.4rem">--</div></div>
|
|
</div>
|
|
<canvas id="chart-net" class="mini-chart"></canvas>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>⚡ 实时网速</h3>
|
|
<div style="display:flex; gap:16px">
|
|
<div><div class="stat-sub" style="font-size:.65rem">↓ 下载</div><div class="stat-value" id="d-speed-rx" style="font-size:1.4rem">--</div></div>
|
|
<div><div class="stat-sub" style="font-size:.65rem">↑ 上传</div><div class="stat-value" id="d-speed-tx" style="font-size:1.4rem">--</div></div>
|
|
</div>
|
|
<canvas id="chart-speed" class="mini-chart"></canvas>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>💾 进程内存</h3>
|
|
<div class="stat-value" id="d-proc-mem">--</div>
|
|
<canvas id="chart-proc-mem" class="mini-chart"></canvas>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 🟢 右侧:高优先级信息栏 -->
|
|
<aside class="dash-sidebar">
|
|
<!-- 1. 硬件平台信息 -->
|
|
<div class="side-card">
|
|
<h3>💻 硬件平台</h3>
|
|
<div class="info-row"><span>操作系统</span><span class="info-value" id="info-os">--</span></div>
|
|
<div class="info-row"><span>硬件架构</span><span class="info-value" id="info-arch">--</span></div>
|
|
<div class="info-row"><span>核心数 (L/P)</span><span class="info-value" id="info-cores">--</span></div>
|
|
<div class="info-row"><span>物理内存</span><span class="info-value" id="info-mem-total">--</span></div>
|
|
<div class="info-row"><span>运行环境</span><span class="info-value" id="info-env">--</span></div>
|
|
</div>
|
|
|
|
<!-- 2. 框架简易信息 -->
|
|
<div class="side-card">
|
|
<h3>🐱 框架状态</h3>
|
|
<div class="info-row"><span>版本号</span><span class="info-value" id="info-fw-ver">--</span></div>
|
|
<div class="info-row"><span>访问地址</span><span class="info-value" id="info-addr">--</span></div>
|
|
<div class="info-row"><span>进程 PID</span><span class="info-value" id="info-pid">--</span></div>
|
|
<div class="info-row"><span>系统负载 (15m)</span><span class="info-value" id="info-load">--</span></div>
|
|
<div class="info-row" style="border:none; padding-top:8px;">
|
|
<span>运行状态</span>
|
|
<span class="info-value" style="color:var(--success)">🟢 Online</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 3. 快捷操作 -->
|
|
<div class="side-card">
|
|
<h3>
|
|
<svg width="18" height="18" viewBox="0 0 24 24" style="vertical-align:-3px;margin-right:6px"><path fill="currentColor" d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94L14.4 2.81c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41L9.25 5.35c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.07.62-.07.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/></svg>
|
|
快捷操作
|
|
</h3>
|
|
<button class="btn btn-sm btn-tonal" style="width:100%;margin-bottom:6px" onclick="window.PluginsModule?.refresh()">
|
|
<svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentColor" d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"/></svg>
|
|
刷新插件列表
|
|
</button>
|
|
<button class="btn btn-sm btn-outlined" style="width:100%;color:var(--error);border-color:var(--error)" onclick="doLogout()">
|
|
<svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentColor" d="M17 7l-1.41 1.41L18.17 11H8v2h10.17l-2.58 2.58L17 17l5-5zM4 5h8V3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8v-2H4V5z"/></svg>
|
|
退出登录
|
|
</button>
|
|
</div>
|
|
</aside>
|
|
</div>
|