import type { TopologyDiscoverOut } from "../../types"; import { useI18n } from "../../i18n"; import { openOrFocusModule } from "../../utils/moduleWindows"; export type DiscoverProgress = { index: number; total: number; neName: string; neIp: string; edgesAdded: number; edgesUpdated: number; }; export type DiscoverSummary = { scanned: number; added: number; updated: number; missing: number; failed: number; }; export type TopologyDiscoverPanelProps = { discovering: boolean; discoverProgress: DiscoverProgress; discoverPct: number; discoverReport: TopologyDiscoverOut | null; discoverError: string; hasResults: boolean; discoverSummary: DiscoverSummary; onCancelDiscover: () => void; onClose: () => void; }; export function TopologyDiscoverPanel({ discovering, discoverProgress, discoverPct, discoverReport, discoverError, hasResults, discoverSummary, onCancelDiscover, onClose, }: TopologyDiscoverPanelProps) { const { t } = useI18n(); return (
{t("topology.discoverNoTargets")}
) : null} {!discovering && discoverReport && discoverReport.scanned === 0 ? ({t("topology.discoverNoTargets")}
) : null} {discoverError ?{discoverError}
: null} {hasResults ? ( <>{t("topology.discoverSummary") .replace("{{scanned}}", String(discoverSummary.scanned)) .replace("{{added}}", String(discoverSummary.added)) .replace("{{updated}}", String(discoverSummary.updated)) .replace("{{stale}}", String(discoverSummary.missing)) .replace("{{failed}}", String(discoverSummary.failed))}
> ) : null}