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) => { const isHttp = isHTTP(row.original.TLS || [], path.Host); return (
{link(path.Host, path.Path, isHttp)} {`${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}`} ); }