import { useContext } from 'react'; import { List, ListItem, Divider, Box } from '@material-ui/core'; import { makeStyles } from '@material-ui/core/styles'; import { ClassNameMap } from '@material-ui/styles'; import Panel from './Panel'; import PeriodicFetch from '../lib/fetchers/periodicFetch'; import { HeaderText, BodyText } from './Text'; import { BLUE, GREY, HOVER, DIVIDER, PURPLE_OFF, RED_ON, } from '../lib/consts/DEFAULT_THEME'; import { AnvilContext } from './AnvilContext'; import serverState from '../lib/consts/SERVERS'; const useStyles = makeStyles((theme) => ({ root: { width: '100%', overflow: 'auto', height: '80vh', [theme.breakpoints.down('md')]: { height: '100%', }, }, divider: { background: DIVIDER, }, button: { '&:hover': { backgroundColor: HOVER, }, paddingLeft: 0, }, noPaddingLeft: { paddingLeft: 0, }, decorator: { width: '20px', height: '100%', borderRadius: 2, }, running: { backgroundColor: BLUE, }, shut_off: { backgroundColor: GREY, }, crashed: { backgroundColor: RED_ON, }, warning: { backgroundColor: PURPLE_OFF, }, })); const selectDecorator = ( state: string, ): keyof ClassNameMap<'running' | 'shut_off' | 'crashed' | 'warning'> => { switch (state) { case 'running': return 'running'; case 'shut_off': return 'shut_off'; case 'crashed': return 'crashed'; default: return 'warning'; } }; const Servers = ({ anvil }: { anvil: AnvilListItem[] }): JSX.Element => { const { uuid } = useContext(AnvilContext); const classes = useStyles(); const { data } = PeriodicFetch( `${process.env.NEXT_PUBLIC_API_URL}/anvils/get_servers?anvil_uuid=`, uuid, ); return ( {data && data.servers.map((server: AnvilServer) => { return ( <>
{server.server_state !== 'shut_off' && server.server_state !== 'crashed' && anvil[ anvil.findIndex((a) => a.anvil_uuid === uuid) ].nodes.map( ( node: AnvilListItemNode, index: number, ): JSX.Element => ( ), )} ); })} ); }; export default Servers;