feat(motor): 新增 EtherCAT 周期速率扫描分析工具链,支持 sweep 脚本、指标校准、绘图与 HTML 报告生成

This commit is contained in:
cbb
2026-09-10 03:02:14 +08:00
parent 4e018af168
commit 81096d0425
20 changed files with 4544 additions and 219 deletions
+32
View File
@@ -762,6 +762,38 @@ body:has(.net-banner.show) .main-grid { padding-top: calc(var(--sp-3) + 29px); }
.seq-ops button.seq-send-one:hover:not(:disabled) { background: var(--ok-dim); color: var(--ok); }
.seq-ops button.seq-del:hover:not(:disabled) { background: var(--danger-dim); color: var(--danger); }
.seq-ops button:disabled { opacity: .25; cursor: default; }
/* 拖动把手:按住上下换位(取代旧的上移/下移按钮),聚焦后 ↑↓ 方向键同样可移 */
.seq-grip {
flex-shrink: 0; width: 18px; height: 26px; margin-left: -4px;
display: inline-flex; align-items: center; justify-content: center;
color: var(--fg-dim); border-radius: var(--radius-sm);
cursor: grab; user-select: none; -webkit-user-select: none; touch-action: none;
transition: background .15s, color .15s;
}
.seq-grip:hover { color: var(--primary); background: var(--primary-dim); }
.seq-grip:active { cursor: grabbing; }
.seq-grip:focus-visible { outline: 2px solid var(--primary); outline-offset: 1px; }
.seq-grip svg { pointer-events: none; }
/* 折叠:默认摘要不显示;折叠行收起动作组、只留头部 + 一行功能摘要 */
.seq-fold svg { transition: transform .15s; }
.seq-step:not(.collapsed) .seq-fold svg { transform: rotate(90deg); }
.seq-summary {
display: none; font-family: var(--font-mono); font-size: 0.72rem; color: var(--fg-muted);
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.seq-sum-sep { color: var(--border-strong); margin: 0 var(--sp-2); }
.seq-sum-more { color: var(--fg-dim); margin-left: var(--sp-2); }
.seq-step.collapsed { padding: 6px var(--sp-3); }
.seq-step.collapsed .seq-step-head { margin-bottom: 0; }
.seq-step.collapsed .seq-actions { display: none; }
.seq-step.collapsed .seq-summary { display: block; margin-top: 2px; }
/* 拖拽中:整表(含被拖行)临时收成单行,腾出空间便于看清插入位置 */
.seq-list.dragging { gap: var(--sp-2); user-select: none; }
.seq-list.dragging .seq-step { padding: 6px var(--sp-3); }
.seq-list.dragging .seq-step-head { margin-bottom: 0; }
.seq-list.dragging .seq-actions { display: none; }
.seq-list.dragging .seq-summary { display: block; margin-top: 2px; }
.seq-step.drag-src { opacity: .45; border-style: dashed; border-color: var(--primary); }
.seq-step-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: var(--sp-2); }
.seq-step-fields .field-label { font-size: 0.62rem; }
.seq-step-fields .seq-num { width: 100%; }