B4 frontend: probe task management modal on the nodes page
- ProbeTasksModal: self-loading/self-saving surface (B3 probe-meta pattern), tasks grouped by region label (ungrouped last), editor with name/region/target/interval/auto-join + agent-node multi select snapshotting baseNodeIds for the base-diff save; delete with confirm. Toolbar entry on NodeList (RadarChart icon), wired in NodesPage; NodeList call sites in two component tests updated for the new required prop. - i18n pages.nodes.probeTasks.* (25 keys) in all 13 locales: zh-CN translated, en-US English, others English placeholder per repo convention; insertion verified pure-additive (351 insertions, 0 deletions) and the i18n dead-key failures are byte-identical to the B3 baseline. - tsc clean; oxlint 0/0 (baseline parity); oxfmt clean on touched files (3 pre-existing drift files untouched).
This commit is contained in:
@@ -27,6 +27,7 @@ import {
|
||||
InfoCircleOutlined,
|
||||
MoreOutlined,
|
||||
PlusOutlined,
|
||||
RadarChartOutlined,
|
||||
RightOutlined,
|
||||
SafetyCertificateOutlined,
|
||||
TeamOutlined,
|
||||
@@ -48,6 +49,7 @@ interface NodeListProps {
|
||||
onSelectionChange: (ids: number[]) => void;
|
||||
onAdd: () => void;
|
||||
onMtls: () => void;
|
||||
onProbeTasks: () => void;
|
||||
onEdit: (node: NodeRecord) => void;
|
||||
onDelete: (node: NodeRecord) => void;
|
||||
onProbe: (node: NodeRecord) => void;
|
||||
@@ -218,6 +220,7 @@ export default function NodeList({
|
||||
onSelectionChange,
|
||||
onAdd,
|
||||
onMtls,
|
||||
onProbeTasks,
|
||||
onEdit,
|
||||
onDelete,
|
||||
onProbe,
|
||||
@@ -618,6 +621,9 @@ export default function NodeList({
|
||||
<Button icon={<SafetyCertificateOutlined />} onClick={onMtls}>
|
||||
{t('pages.nodes.mtls.title')}
|
||||
</Button>
|
||||
<Button icon={<RadarChartOutlined />} onClick={onProbeTasks}>
|
||||
{t('pages.nodes.probeTasks.title')}
|
||||
</Button>
|
||||
{selectedIds.length > 0 && (
|
||||
<Button icon={<CloudDownloadOutlined />} onClick={onUpdateSelected}>
|
||||
{t('pages.nodes.updateSelected', { count: selectedIds.length })}
|
||||
|
||||
Reference in New Issue
Block a user