import { For, Show } from 'solid-js' import { twMerge } from 'tailwind-merge' import Delay from '~/components/Delay' import { DELAY, PROXIES_PREVIEW_TYPE } from '~/config/enum' import { proxiesPreviewType } from '~/pages/Config' import { useProxies } from '~/signals/proxies' const DelayDots = (p: { delay: number | undefined; selected: boolean }) => { let dotClassName = p.selected ? 'bg-white border-4 border-success' : 'bg-success' if (typeof p.delay !== 'number' || p.delay === DELAY.NOT_CONNECTED) { dotClassName = p.selected ? 'bg-white border-4 border-neutral' : 'bg-neutral' } else if (p.delay > DELAY.HIGH) { dotClassName = p.selected ? 'bg-white border-4 border-error' : 'bg-error' } else if (p.delay > DELAY.MEDIUM) { dotClassName = p.selected ? 'bg-white border-4 border-warning' : 'bg-warning' } return
} export default (props: { proxyNameList: string[]; now?: string }) => { const { proxyNodeMap } = useProxies() const allNodesDelay = props.proxyNameList.map((i) => proxyNodeMap()[i].delay!) const all = allNodesDelay.length const good = allNodesDelay.filter( (delay) => delay > DELAY.NOT_CONNECTED && delay <= DELAY.MEDIUM, ).length const middle = allNodesDelay.filter( (delay) => delay > DELAY.MEDIUM && delay <= DELAY.HIGH, ).length const slow = allNodesDelay.filter((delay) => delay > DELAY.HIGH).length const notConnected = allNodesDelay.filter( (delay) => delay === DELAY.NOT_CONNECTED, ).length return ( <>