mirror of
https://github.com/hansjone/netx.git
synced 2026-10-16 04:10:45 +08:00
Structure
- pages/ -> features/<domain>/{Page, components, hooks, lib}; 95 files moved,
333 imports rewritten, verified with tsc.
- services/api.ts -> services/api/<domain>.ts (250 exports preserved),
types.ts -> types/<domain>.ts, i18n zh/en -> locales/<lang>/<namespace>.ts
(2696 messages deep-equal before/after).
- ESLint rule: shared layers must not import features/.
Styles
- index.css (16k lines) split losslessly into styles/{base,layout,components,
pages,legacy,theme}; compiled CSS was byte-identical before tokenizing.
- ~930 hard-coded colors replaced by --nx-* tokens (theme/tokens.css); WebCRT
off-palette colors unified; fixed dark-on-dark text introduced by mapping.
- theme/theme.css: modern blue design language (rounded shapes, gradients,
unified buttons/fields/tables/modals), form-grid alignment fix, flat nav list
without tree indent, soft selected state instead of left accent bar.
Docs: WEB.md documents code structure and style rules.
Not touched: the large Biz*/Webcrt/Topology page components (to be split later).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
118 lines
3.9 KiB
TypeScript
118 lines
3.9 KiB
TypeScript
const collect = {
|
|
statusAll: "All statuses",
|
|
keywordPh: "Job title / ID",
|
|
exportJobsName: "collect-jobs",
|
|
exportRunsName: "collect-runs",
|
|
policyTitle: "Collect policy",
|
|
policyHint:
|
|
"Periodic schedule is off by default (one-shot / manual). Enable it to auto-create and run jobs on an interval. Keeps the last 3 finished jobs by default.",
|
|
policySaved: "Policy saved",
|
|
enabled: "Enable scheduled collect",
|
|
interval: "Collect interval",
|
|
intervalUnitDays: "days",
|
|
intervalUnitHours: "hours",
|
|
historyKeep: "Jobs to keep",
|
|
scope: "Scope",
|
|
scopeAll: "All NEs (managed + UME)",
|
|
scopeSelected: "Selected NEs only",
|
|
savePolicy: "Save policy",
|
|
collectNow: "Collect now",
|
|
selectedCount: "{{count}} selected",
|
|
colSource: "Source",
|
|
policyCommandsRequired: "Add commands and save the policy before enabling schedule or collecting now",
|
|
policyTargetsRequired: "No eligible NEs in scope; adjust scope or select NEs",
|
|
create: {
|
|
title: "New collection job",
|
|
hint: "Configure commands and NEs, then create the job. Click Start in the job list to run collection.",
|
|
selectedTitle: "Selected NEs",
|
|
selectedEmpty: "Filter below and add NEs one by one.",
|
|
selectedCount: "{{count}} selected",
|
|
clearSelected: "Clear selection",
|
|
remove: "Remove",
|
|
pickTitle: "Eligible NEs",
|
|
pickHint: "All managed and UME inventory NEs are selectable (any connect status). UME uses CLI connect profile credentials.",
|
|
pickEmpty: "No matching NEs.",
|
|
filterKeyword: "Filter",
|
|
filterKeywordPh: "Name / IP / vendor / device type",
|
|
add: "Add",
|
|
addBatch: "Add selected ({{count}})",
|
|
added: "Added",
|
|
create: "Create job",
|
|
creating: "Creating…",
|
|
expand: "New",
|
|
collapse: "Close",
|
|
meta: "{{ne}} NE(s) selected · {{cmd}} command(s)",
|
|
},
|
|
eligible: {
|
|
title: "Eligible NEs",
|
|
hint: "All managed and UME inventory NEs are selectable (any connect status).",
|
|
empty: "No NEs.",
|
|
},
|
|
form: {
|
|
title: "Collection setup",
|
|
jobTitle: "Job title",
|
|
jobTitlePh: "Auto-generated if empty",
|
|
commands: "Commands (one per line, # for comments)",
|
|
commandsPh: "display version\ndisplay current-configuration",
|
|
commandsHint: "Commands run in order on each device; output is saved as a text log.",
|
|
meta: "{{ne}} NE(s) selected · {{cmd}} command(s)",
|
|
start: "Start collection",
|
|
starting: "Submitting…",
|
|
},
|
|
created: "Collection job created: {{id}}",
|
|
started: "Collection started: {{id}}",
|
|
paused: "Job paused",
|
|
restarted: "Collection restarted",
|
|
retryFailedDone: "Retrying failed devices",
|
|
deleted: "Job deleted",
|
|
nothingToRetry: "No failed devices to retry",
|
|
neBusy: "Some NEs are busy in another collection job; wait for it to finish before starting",
|
|
jobRunning: "This job is already running",
|
|
confirmDelete: "Delete this collection job and its log files?",
|
|
jobs: {
|
|
title: "Collection jobs",
|
|
listTitle: "Job list",
|
|
col: {
|
|
title: "Job",
|
|
status: "Status",
|
|
progress: "Progress",
|
|
created: "Created",
|
|
lastRun: "Last run",
|
|
actions: "Actions",
|
|
},
|
|
ok: "ok",
|
|
fail: "fail",
|
|
expand: "Details",
|
|
collapse: "Hide",
|
|
detailTitle: "Job details",
|
|
pause: "Pause",
|
|
start: "Start",
|
|
starting: "Starting…",
|
|
restart: "Restart",
|
|
retryFailed: "Retry failed",
|
|
downloadResults: "Download results",
|
|
delete: "Delete",
|
|
autoRefresh: "Auto-refresh every 2s while jobs are running",
|
|
runsInProgress: "Some devices are still being collected…",
|
|
},
|
|
kpi: {
|
|
jobs: "Jobs",
|
|
running: "In progress",
|
|
idle: "Idle",
|
|
last: "Last job",
|
|
active: "Active jobs",
|
|
nextDue: "Next due",
|
|
},
|
|
runs: {
|
|
status: "Status",
|
|
message: "Message",
|
|
download: "Log",
|
|
downloadFile: "Download",
|
|
filterStatus: "Status filter",
|
|
filterDevice: "Device filter",
|
|
deviceKeywordPh: "Name / IP",
|
|
allStatus: "All statuses",
|
|
},
|
|
};
|
|
|
|
export default collect;
|