parent
b2e4747058
commit
e5b3243f04
3 changed files with 231 additions and 93 deletions
@ -0,0 +1,111 @@ |
|||||||
|
import Head from 'next/head'; |
||||||
|
import { Box } from '@mui/material'; |
||||||
|
import { styled } from '@mui/material/styles'; |
||||||
|
|
||||||
|
import Anvils from '../../components/Anvils'; |
||||||
|
import Hosts from '../../components/Hosts'; |
||||||
|
import CPU from '../../components/CPU'; |
||||||
|
import SharedStorage from '../../components/SharedStorage'; |
||||||
|
import Memory from '../../components/Memory'; |
||||||
|
import Network from '../../components/Network'; |
||||||
|
import periodicFetch from '../../lib/fetchers/periodicFetch'; |
||||||
|
import Servers from '../../components/Servers'; |
||||||
|
import Header from '../../components/Header'; |
||||||
|
import AnvilProvider from '../../components/AnvilContext'; |
||||||
|
import { LARGE_MOBILE_BREAKPOINT } from '../../lib/consts/DEFAULT_THEME'; |
||||||
|
import useWindowDimensions from '../../hooks/useWindowDimenions'; |
||||||
|
|
||||||
|
const PREFIX = 'Anvil'; |
||||||
|
|
||||||
|
const classes = { |
||||||
|
child: `${PREFIX}-child`, |
||||||
|
server: `${PREFIX}-server`, |
||||||
|
container: `${PREFIX}-container`, |
||||||
|
}; |
||||||
|
|
||||||
|
const StyledDiv = styled('div')(({ theme }) => ({ |
||||||
|
[`& .${classes.child}`]: { |
||||||
|
width: '22%', |
||||||
|
height: '100%', |
||||||
|
[theme.breakpoints.down(LARGE_MOBILE_BREAKPOINT)]: { |
||||||
|
width: '50%', |
||||||
|
}, |
||||||
|
[theme.breakpoints.down('md')]: { |
||||||
|
width: '100%', |
||||||
|
}, |
||||||
|
}, |
||||||
|
|
||||||
|
[`& .${classes.server}`]: { |
||||||
|
width: '35%', |
||||||
|
height: '100%', |
||||||
|
[theme.breakpoints.down('md')]: { |
||||||
|
width: '100%', |
||||||
|
}, |
||||||
|
}, |
||||||
|
|
||||||
|
[`& .${classes.container}`]: { |
||||||
|
display: 'flex', |
||||||
|
flexDirection: 'row', |
||||||
|
width: '100%', |
||||||
|
justifyContent: 'space-between', |
||||||
|
[theme.breakpoints.down('md')]: { |
||||||
|
display: 'block', |
||||||
|
}, |
||||||
|
}, |
||||||
|
})); |
||||||
|
|
||||||
|
const Anvil = (): JSX.Element => { |
||||||
|
const width = useWindowDimensions(); |
||||||
|
|
||||||
|
const { data } = periodicFetch<AnvilList>( |
||||||
|
`${process.env.NEXT_PUBLIC_API_URL}/get_anvils`, |
||||||
|
); |
||||||
|
|
||||||
|
return ( |
||||||
|
<StyledDiv> |
||||||
|
<Head> |
||||||
|
<title>Anvil</title> |
||||||
|
</Head> |
||||||
|
<AnvilProvider> |
||||||
|
<Header /> |
||||||
|
{data?.anvils && |
||||||
|
width && |
||||||
|
(width > LARGE_MOBILE_BREAKPOINT ? ( |
||||||
|
<Box className={classes.container}> |
||||||
|
<Box className={classes.child}> |
||||||
|
<Anvils list={data} /> |
||||||
|
<Hosts anvil={data.anvils} /> |
||||||
|
</Box> |
||||||
|
<Box className={classes.server}> |
||||||
|
<Servers anvil={data.anvils} /> |
||||||
|
</Box> |
||||||
|
<Box className={classes.child}> |
||||||
|
<SharedStorage /> |
||||||
|
</Box> |
||||||
|
<Box className={classes.child}> |
||||||
|
<Network /> |
||||||
|
<CPU /> |
||||||
|
<Memory /> |
||||||
|
</Box> |
||||||
|
</Box> |
||||||
|
) : ( |
||||||
|
<Box className={classes.container}> |
||||||
|
<Box className={classes.child}> |
||||||
|
<Servers anvil={data.anvils} /> |
||||||
|
<Anvils list={data} /> |
||||||
|
<Hosts anvil={data.anvils} /> |
||||||
|
</Box> |
||||||
|
<Box className={classes.child}> |
||||||
|
<Network /> |
||||||
|
<SharedStorage /> |
||||||
|
<CPU /> |
||||||
|
<Memory /> |
||||||
|
</Box> |
||||||
|
</Box> |
||||||
|
))} |
||||||
|
</AnvilProvider> |
||||||
|
</StyledDiv> |
||||||
|
); |
||||||
|
}; |
||||||
|
|
||||||
|
export default Anvil; |
@ -0,0 +1,6 @@ |
|||||||
|
type ServerOverviewMetadata = { |
||||||
|
serverHostUUID: string; |
||||||
|
serverName: string; |
||||||
|
serverState: string; |
||||||
|
serverUUID: string; |
||||||
|
}; |
Loading…
Reference in new issue