图标进入流图,名称留给悬浮。
六个图标直接成为系统节点的分支终点。去掉常驻名称列,恢复经典双节点横管,电池条仍然全宽。
悬停图标查看名称与占比
将鼠标移到任一图标,或用 Tab 聚焦。默认应用数据取自题给样例;硬件字段与边界状态为设计夹具。
让应用成为节点,而不是列表。
适配器和系统保持同排。系统下缘扇出六条曲线,接到横排图标;独立电池竖管沿右侧落到底部,不穿过图标区。
占比可选常驻,开关不改变图标位置、连线或总高度。两档宽度均无名称截断问题。
代价是陌生图标需要悬浮才能识别;首次发现由图下提示引导。缺少图标时使用通用应用图标,完整名称依然可访问。
几何与交互
[ 适配器 ] ─────────→ [ 系统 ]
╱╱│ │
╭──────────╯╱ │ │
╭──┼──────────╯ │ │
↓ ↓ ↓ ↓ ↓ ↓ │
◉ ◉ ◉ ◉ ◉ ··· │
● junction
[ ═══════════ 电池条 ════════╧ ]
六条分支的共同起点在系统节点下缘,电池管使用另一端口。“其他”是第六个省略号图标。图为结构示意,精确位置以右侧常量为准。
宽度与高度预算
340 − 2×8 − 2×12 = 300pt 内容 → 减右侧 16pt 电池通道 → 六槽各 47⅓pt。
300 − 2×8 − 2×12 = 260pt 内容 → 减右侧 16pt → 六槽各 40⅔pt。
两档均容纳 32pt 命中区,最窄档相邻命中区仍留 8⅔pt。无名称列,完整名称在浮层换行,不截断。
46 节点 + 26 扇面间隙 + 32 命中区 + 4 + 12 占比预留 + 8 + 38 电池 = 166pt。来源说明再加 36pt;本页含行头、页签与内衬的卡片共 304pt。净高较当前约 179pt 少 13pt。
contentWidth = panelWidth - 40 nodeWidth = 90; nodeHeight = 46 adapterOrigin = (0, 0) systemOrigin = (contentWidth - 90, 0) batteryLane = 16 slotCount = 6 slotPitch = (contentWidth - 16) / 6 slotCenterX(i) = (i + 0.5) × slotPitch hitSize = 32; hitTop = 72 iconSize = 20; iconInset = 6 iconTop = 78; endpointY = 74 shareTop = 108; shareHeight = 12 barTop = 128; barHeight = 38 nodeRadius = 9; barRadius = 10 cardRadius = 14 fanOrigin = (contentWidth - 45, 46) fanControl1 = (fanOrigin.x, 62) fanControl2(i) = (slotCenterX(i), 62) fanEnd(i) = (slotCenterX(i), 74) batterySpineX = contentWidth - 8 junctionY = 124 adapterToSystem: M90,23 H(C-90) systemToJunction: M(C-8),46 V124 junctionToBattery: M(C-8),124 V128
悬浮、聚焦与更新
图标有完整可访问名称;鼠标悬浮、键盘聚焦或点击可查看提示,Esc 收起。悬浮只强调对应分支,不改线宽、不位移、不放大图标。提示是独立浮层,HTML 用静态定位模拟,原生可用 NSView 工具提示或独立轻量浮层;不加入展开区高度测量。
六槽固定,展开时捕获前五名并按宿主 App 身份固定位置;本次展开内样本只更新数据和线宽。“其他”始终是全部可读集合减去这五槽,维持 100% 口径;下次展开才更新排名。常驻占比预留空间一直存在,开关也不会产生布局跳动。
支线粗细严格为 16 × share,样例为 9.92 / 5.44 / 0.16 / 0.16 / 0.16 / 0.16pt;小份额线本来就细,图标负责定位。悬浮不把细线伪装成较高份额。主干保留三路径与流光截帧,原生复用 CAShapeLayer.lineDashPhase;不新增逐帧驱动。
边界状态
| 数据状态 | 图标与连线 | 悬浮内容 |
|---|---|---|
| 为空 | 五个中性占位图标 + 其他,均不画数据支线;系统、电池主干独立保留。 | 等待有效采样 / —,不伪造 0。 |
| 不足五个 | 夹具三个实测应用 70 / 25 / 5%,两个占位,其他已知为零;只画三条分支。 | 真实应用名或空槽说明;其他零值仅适用于已知集合为空或合计为零。 |
| 只有一个 | 首槽 100%,四个占位,其他已知为零;保留六槽,不将首槽居中。 | 完整名称 / 100%;空位为 —。 |
| 100% 集中 | 五个图标仍在,首槽 100%,其余实测零值;只画首槽分支。 | 显示真实 0%,与缺失状态区分。 |
数据、图标和材质说明
默认百分比按题给 62 / 34 / 1 / 1 / 1 / 1 展示;W 按题给 1.30 / 0.72 / 0.03 / 0.03 / 0.03 / 0.03 展示。两组不是精确归一化关系,生产需统一使用未舍入、同窗口的能耗份额。系统节点瓦数不作为进程份额分母,无法读取的系统进程也不计入“其他”。
Qoder CN、HapiGo、Microsoft Edge、微信图标来自本机应用并已内嵌 PNG;WindowManager 没有可读取的独立应用图标,使用内联通用窗口图标。识别图标保留自身品牌颜色,连线仍只使用给定 moduleTint,“其他”用 textCaption。硬件字段为夹具而非本机读数。
保留 trackFill、rowSeparator、三档文字与语义色;无新玻璃、模糊、阴影或动态材质。提示用中性静态画布模拟系统工具提示底色,不作为新的面板材质。