diff --git a/frontend/src/component/application/ApplicationOverview.tsx b/frontend/src/component/application/ApplicationOverview.tsx index 2cdad600f56..f6b4ffa8a51 100644 --- a/frontend/src/component/application/ApplicationOverview.tsx +++ b/frontend/src/component/application/ApplicationOverview.tsx @@ -1,24 +1,60 @@ import { usePageTitle } from 'hooks/usePageTitle'; -import { Mermaid } from 'component/common/Mermaid/Mermaid'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; -import { Alert, styled } from '@mui/material'; +import { Alert, Box, Divider, styled, Typography } from '@mui/material'; import { useThemeMode } from 'hooks/useThemeMode'; import { useRequiredPathParam } from 'hooks/useRequiredPathParam'; import { useNavigate } from 'react-router-dom'; +import Check from '@mui/icons-material/CheckCircle'; -const StyledMermaid = styled(Mermaid)(({ theme }) => ({ - '#mermaid .node rect': { - fill: theme.palette.secondary.light, - stroke: theme.palette.secondary.border, - }, - '#mermaid .application-container': { - // display: 'flex', - // padding: theme.spacing(4,3,3,3), - // flexDirection: 'column', - // alignItems: 'center', - // gap: theme.spacing(3), - backgroundColor: theme.palette.secondary.light, - }, +const StyledTable = styled('table')(({ theme }) => ({ + fontSize: theme.fontSizes.smallerBody, + marginTop: theme.spacing(2), +})); + +const StyledCell = styled('td')(({ theme }) => ({ + verticalAlign: 'top', + paddingLeft: 0, + paddingRight: theme.spacing(1), +})); + +const StyleApplicationContainer = styled(Box)(({ theme }) => ({ + marginBottom: theme.spacing(18), + display: 'flex', + justifyContent: 'center', +})); + +const StyledApplicationBox = styled(Box)(({ theme }) => ({ + borderRadius: theme.shape.borderRadiusMedium, + border: '1px solid', + borderColor: theme.palette.success.border, + backgroundColor: theme.palette.success.light, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + padding: theme.spacing(1.5, 3, 2, 3), +})); + +const StyledOkStatus = styled(Typography)(({ theme }) => ({ + gap: theme.spacing(0.5), + fontSize: theme.fontSizes.smallBody, + color: theme.palette.success.dark, + display: 'flex', + alignItems: 'center', +})); + +const StyledEnvironmentBox = styled(Box)(({ theme }) => ({ + borderRadius: theme.shape.borderRadiusMedium, + border: '1px solid', + borderColor: theme.palette.secondary.border, + backgroundColor: theme.palette.secondary.light, + display: 'inline-block', + padding: theme.spacing(1.5, 2, 1.5, 2), +})); + +const StyledDivider = styled(Divider)(({ theme }) => ({ + marginTop: theme.spacing(2), + marginBottom: theme.spacing(2), + width: '100%', })); export const ApplicationOverview = () => { @@ -34,7 +70,10 @@ export const ApplicationOverview = () => { { name: 'production', instanceCount: 34, - sdks: ['unleash-client-node:5.4.0'], + sdks: [ + 'unleash-client-node:5.4.0', + 'unleash-client-node:5.4.1', + ], lastSeen: '2021-10-01T12:00:00Z', }, { @@ -46,10 +85,6 @@ export const ApplicationOverview = () => { ], }; - const applicationNode = ` - ${applicationName}[${applicationName}] - `; - // @ts-ignore window.navigateToInstances = (environment: string) => { navigate( @@ -57,26 +92,85 @@ export const ApplicationOverview = () => { ); }; - const graph = ` - graph TD - subgraph _[ ] - direction BT - ${applicationNode} - ${app.environments - .map( - ({ name }, i) => - `${name}("${name}") --- ${applicationName} - click ${name} navigateToInstances`, - ) - .join('\n')} - end - `; - return ( No data available.} - elseShow={{graph}} + elseShow={ + + + + ({ + fontSize: theme.fontSizes.smallerBody, + })} + color='text.secondary' + > + Application + + ({ + fontSize: theme.fontSizes.bodySize, + fontWeight: theme.fontWeight.bold, + })} + > + {applicationName} + + + + + + ({ + color: theme.palette.success.main, + })} + />{' '} + Everything looks good! + + + + + + {app.environments.map((environment) => ( + + ({ + fontSize: theme.fontSizes.smallerBody, + fontWeight: theme.fontWeight.bold, + })} + > + {environment.name} environment + + + + + Instances: + + {environment.instanceCount} + + + + SDK: + + {environment.sdks.map((sdk) => ( +
{sdk}
+ ))} +
+ + + Last seen: + + {environment.lastSeen} + + +
+
+ ))} +
+
+ } /> ); };