{t("collect.create.selectedEmpty")}
) : (| {t("managedNe.col.source")} | {t("managedNe.col.name")} | {t("managedNe.col.ip")} | {t("collect.runs.status")} | @@ -713,6 +744,9 @@ function JobRunsPanel({|||||||
|---|---|---|---|---|---|---|---|---|---|---|
| + {run.ne_source || "managed"} + | {run.ne_name} | {run.ne_ip} | {run.status} | diff --git a/web/src/pages/NePage.tsx b/web/src/pages/NePage.tsx index 641ef0f..29a47eb 100644 --- a/web/src/pages/NePage.tsx +++ b/web/src/pages/NePage.tsx @@ -34,6 +34,9 @@ import { type HopVendor, } from "../utils/hopProxy"; +/** Hide UME→managed sync/delete controls until needed again. APIs remain available. */ +const SHOW_UME_MANAGED_SYNC = false; + type FormState = { name: string; vendor: string; @@ -97,6 +100,13 @@ function applyHopTemplate(prev: FormState, protocol: string, vrf: string, force return { hop_command_template: defaultHopTemplate(prev.hop_vendor, protocol, vrf) }; } +function managedSourceKey(source: string | undefined): "manual" | "ume_sync" | "webcrt" | "lldp" | "" { + const s = String(source || "").trim().toLowerCase(); + if (!s) return "manual"; + if (s === "ume_sync" || s === "webcrt" || s === "lldp") return s; + return ""; +} + function FormLabel({ children, required }: { children: ReactNode; required?: boolean }) { return ( @@ -571,24 +581,32 @@ export function NePage() {{t("managedNe.col.name")} | {t("managedNe.col.vendor")} | {t("managedNe.col.deviceType")} | +{t("managedNe.col.source")} | {t("managedNe.col.tags")} | {t("managedNe.col.ip")} | {t("managedNe.col.user")} | @@ -755,7 +774,12 @@ export function NePage() {
| {row.name || row.ip_address} | {row.vendor} | {row.device_type} | ++ {srcLabel} + | {row.tags ? row.tags.split(/\s+/).map((tag) => ( @@ -839,7 +866,8 @@ export function NePage() { |