Use modals and Excel-like metric sheets for biz_state batches.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-09-17 17:06:25 +08:00
parent 1352535a9b
commit 0a967b4172
4 changed files with 733 additions and 342 deletions

View file

@ -183,27 +183,39 @@ const en = {
started: "Schedule started",
paused: "Paused",
collecting: "Collecting",
detail: "Details",
profiles: "Monitor items",
enable: "On",
command: "Command template",
params: "Bindings",
discoverVrf: "Discover VRFs",
saveBindings: "Save bindings",
cancel: "Cancel",
cancel: "Close",
bindTitle: "Select VRF bindings",
unbound: "Not bound",
batches: "Batches",
viewBatch: "View",
viewBatch: "Open",
export: "Export",
noBatches: "No batches yet",
batchDetail: "Batch detail",
batchWorkbook: "Batch workbook",
sheetCommands: "Commands",
sheetLldp: "LLDP neighbors",
sheetVrfRoute: "VRF route summary",
sheetFilterPh: "Filter this sheet…",
sheetEmpty: "No rows in this sheet",
filterColumn: "Column",
filterAllCols: "All columns",
listFilterPh: "Filter NE / IP / vendor / status",
colNe: "NE",
colStatus: "Status",
colLast: "Last collect",
colTime: "Time",
colRows: "Rows",
colActions: "Actions",
pickTask: "Select a task on the left",
colCommand: "Command",
colMessage: "Message",
pickTask: "Open details to manage a task",
noNeedBind: "This item needs no parameter bindings",
discoverFailed: "Discover failed",
bindingsSaved: "Bindings saved",

View file

@ -183,13 +183,14 @@ const zh = {
started: "已启动周期采集",
paused: "已暂停",
collecting: "采集中",
detail: "详情",
profiles: "监控项",
enable: "启用",
command: "命令模板",
params: "参数关联",
discoverVrf: "发现 VRF",
saveBindings: "保存关联",
cancel: "取消",
cancel: "关闭",
bindTitle: "选择 VRF 绑定",
unbound: "未关联",
batches: "采集批次",
@ -197,13 +198,24 @@ const zh = {
export: "导出",
noBatches: "尚无批次",
batchDetail: "批次详情",
batchWorkbook: "批次工作簿",
sheetCommands: "命令",
sheetLldp: "LLDP 邻居",
sheetVrfRoute: "VRF 路由摘要",
sheetFilterPh: "筛选当前表…",
sheetEmpty: "本表无数据",
filterColumn: "筛选列",
filterAllCols: "全部列",
listFilterPh: "筛选网元 / IP / 厂商 / 状态",
colNe: "网元",
colStatus: "状态",
colLast: "最近采集",
colTime: "时间",
colRows: "行数",
colActions: "操作",
pickTask: "选择左侧任务查看详情",
colCommand: "命令",
colMessage: "说明",
pickTask: "打开详情查看任务",
noNeedBind: "该监控项无需参数关联",
discoverFailed: "发现失败",
bindingsSaved: "参数关联已保存",

View file

@ -9917,6 +9917,82 @@ html.login-page--paused .login-page__flare {
margin-bottom: 10px;
}
/* biz_state batch workbook (Excel-like sheets) */
.bs-workbook-modal .bs-workbook-body {
min-height: min(62vh, 640px);
}
.bs-sheet-filter {
align-items: center;
}
.bs-sheet-count {
white-space: nowrap;
font-size: 12px;
}
.bs-sheet-table {
flex: 1 1 auto;
min-height: 280px;
max-height: min(48vh, 520px);
}
.bs-sheet-tabs {
display: flex;
flex-wrap: wrap;
gap: 4px;
align-items: flex-end;
margin-top: 4px;
padding: 6px 4px 0;
border-top: 1px solid rgba(148, 163, 184, 0.28);
}
.bs-sheet-tab {
appearance: none;
border: 1px solid rgba(148, 163, 184, 0.35);
border-bottom: none;
border-radius: 6px 6px 0 0;
background: rgba(148, 163, 184, 0.12);
color: inherit;
padding: 6px 12px;
font-size: 12px;
cursor: pointer;
line-height: 1.2;
}
.bs-sheet-tab:hover {
background: rgba(148, 163, 184, 0.22);
}
.bs-sheet-tab.is-active {
background: var(--wb-surface, #fff);
border-color: rgba(59, 130, 246, 0.55);
font-weight: 600;
box-shadow: 0 -1px 0 rgba(59, 130, 246, 0.35) inset;
}
.bs-sheet-tab__count {
margin-left: 6px;
opacity: 0.65;
font-variant-numeric: tabular-nums;
}
.bs-bind-panel {
padding: 10px 12px;
border: 1px solid rgba(148, 163, 184, 0.25);
border-radius: 8px;
}
.bs-bind-list {
max-height: 200px;
overflow: auto;
}
.bs-bind-item {
display: block;
margin-bottom: 4px;
}
.nm-config-modal__body {
flex: 1 1 auto;
width: 100%;

File diff suppressed because it is too large Load diff