Files
MikrotikManager/components/optimizer-site-summary.tsx
T

26 lines
1.1 KiB
TypeScript

import { Badge } from "@/components/reui/badge"
type OptimizerSiteSummaryProps = {
kind: "JumpHost" | "Exit Node"
sites?: readonly string[]
}
export function OptimizerSiteSummary({kind,sites}:OptimizerSiteSummaryProps){
const labels:string[]=[]
if(sites===undefined)labels.push("Площадки неизвестны")
else if(!sites.length)labels.push("Нет узлов в расчёте")
else {
const known=sites.map(site=>site.trim()).filter(site=>site && site!=="—")
const distinct=[...new Set(known)]
const missing=sites.length-known.length
if(distinct.length){
const names=distinct.length<=3 ? distinct.join(" · ") : ""
labels.push(distinct.length<=3 && names.length<=24 ? names : `Площадки: ${distinct.length}`)
}
if(missing)labels.push(`Без площадки: ${missing}`)
}
return <div role="group" aria-label={`Площадки ${kind}`} className="flex min-w-0 max-w-full flex-wrap gap-1">
{labels.map(label=><Badge key={label} variant="outline" size="sm" className="max-w-full whitespace-normal break-all text-left">{label}</Badge>)}
</div>
}