import { CellContext } from '@tanstack/react-table'; import { AlertTriangle, ArrowRight } from 'lucide-react'; import { Icon } from '@@/Icon'; import { Badge } from '@@/Badge'; import { Ingress, TLS } from '../../types'; import { columnHelper } from './helper'; export const ingressRules = columnHelper.accessor( ({ Paths, TLS }) => // return an accessor function with all the useful text to search for Paths.map((path) => { const isHttp = isHTTP(TLS || [], path.Host); return `${isHttp ? 'http' : 'https'}://${path.Host}${path.Path}${ path.ServiceName }:${path.Port} ${!path.HasService && "Service doesn't exist"}`; }).join(','), { header: 'Rules and Paths', id: 'ingressRules', cell: Cell, } ); function Cell({ row }: CellContext) { const paths = row.original.Paths; if (!paths) { return
; } return (
{paths.map((path) => (
{link( path.Host, path.Path, isHTTP(row.original.TLS || [], path.Host) )} {`${path.ServiceName}:${path.Port}`} {!path.HasService && ( Service doesn't exist )}
))}
); } function isHTTP(TLSs: TLS[], host: string) { return TLSs.filter((t) => t.Hosts.indexOf(host) !== -1).length === 0; } function link(host: string, path: string, isHttp: boolean) { if (!host) { return path; } return ( {`${isHttp ? 'http' : 'https'}://${host}${path}`} ); }