mirror of
https://github.com/hansjone/netx.git
synced 2026-10-16 07:40:45 +08:00
Refactor web UI: feature-first structure, tokenized styles, modern blue theme.
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>
This commit is contained in:
parent
3b45d6abe3
commit
0d894efe5e
196 changed files with 26947 additions and 28091 deletions
118
web/src/i18n/locales/en/collect.ts
Normal file
118
web/src/i18n/locales/en/collect.ts
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
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;
|
||||
Loading…
Add table
Add a link
Reference in a new issue