mirror of
https://github.com/Unleash/unleash.git
synced 2025-03-18 00:19:49 +01:00
fix: style metrics view (#448)
This commit is contained in:
parent
57928d50c6
commit
48bae48ee0
@ -1,100 +0,0 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
|
||||||
container: {
|
|
||||||
display: 'flex',
|
|
||||||
borderRadius: '10px',
|
|
||||||
backgroundColor: '#fff',
|
|
||||||
padding: '2rem 2rem 2rem 2rem',
|
|
||||||
marginBottom: '1rem',
|
|
||||||
flexDirection: 'column',
|
|
||||||
width: '50%',
|
|
||||||
position: 'relative'
|
|
||||||
},
|
|
||||||
environmentContainer: {
|
|
||||||
display: 'flex',
|
|
||||||
marginBottom: '1rem',
|
|
||||||
width: '100%',
|
|
||||||
position: 'relative'
|
|
||||||
},
|
|
||||||
environmentHeader: {
|
|
||||||
display: 'flex',
|
|
||||||
width: '100%',
|
|
||||||
fontSize: theme.fontSizes.subHeader,
|
|
||||||
fontWeight: 'bold'
|
|
||||||
},
|
|
||||||
applicationHeader: {
|
|
||||||
display: 'flex',
|
|
||||||
width: '100%',
|
|
||||||
fontSize: theme.fontSizes.subHeader,
|
|
||||||
fontWeight: 'bold'
|
|
||||||
},
|
|
||||||
applicationContainer: {
|
|
||||||
display: 'flex',
|
|
||||||
width: '100%',
|
|
||||||
position: 'relative',
|
|
||||||
marginBottom: '1rem'
|
|
||||||
},
|
|
||||||
[theme.breakpoints.down(1000)]: {
|
|
||||||
container: {
|
|
||||||
width: '100%'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
headerContainer: {
|
|
||||||
display: 'flex',
|
|
||||||
width: '100%',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'space-between'
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
fontSize: theme.fontSizes.subHeader,
|
|
||||||
fontWeight: 'normal',
|
|
||||||
margin: 0
|
|
||||||
},
|
|
||||||
bodyContainer: {
|
|
||||||
display: 'flex',
|
|
||||||
align: 'items',
|
|
||||||
marginTop: '1rem',
|
|
||||||
height: '100%'
|
|
||||||
},
|
|
||||||
trueCountContainer: {
|
|
||||||
marginBottom: '0.5rem',
|
|
||||||
display: 'flex',
|
|
||||||
alignItems: 'center'
|
|
||||||
},
|
|
||||||
trueCount: {
|
|
||||||
width: '10px',
|
|
||||||
height: '10px',
|
|
||||||
borderRadius: '50%',
|
|
||||||
marginRight: '0.75rem',
|
|
||||||
backgroundColor: theme.palette.primary.main
|
|
||||||
},
|
|
||||||
falseCount: {
|
|
||||||
width: '10px',
|
|
||||||
height: '10px',
|
|
||||||
borderRadius: '50%',
|
|
||||||
marginRight: '0.75rem',
|
|
||||||
backgroundColor: theme.palette.grey[300]
|
|
||||||
},
|
|
||||||
paragraph: {
|
|
||||||
fontSize: theme.fontSizes.smallBody
|
|
||||||
},
|
|
||||||
textContainer: {
|
|
||||||
marginRight: '1rem',
|
|
||||||
maxWidth: '150px'
|
|
||||||
},
|
|
||||||
primaryMetric: {
|
|
||||||
width: '100%'
|
|
||||||
},
|
|
||||||
icon: {
|
|
||||||
fill: theme.palette.grey[300],
|
|
||||||
height: '75px',
|
|
||||||
width: '75px'
|
|
||||||
},
|
|
||||||
chartContainer: {
|
|
||||||
width: '100%',
|
|
||||||
display: 'flex',
|
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center'
|
|
||||||
}
|
|
||||||
}));
|
|
@ -1,50 +0,0 @@
|
|||||||
import useFeatureMetrics from '../../../../hooks/api/getters/useFeatureMetrics/useFeatureMetrics';
|
|
||||||
import { useParams } from 'react-router-dom';
|
|
||||||
import { IFeatureViewParams } from '../../../../interfaces/params';
|
|
||||||
import React from 'react';
|
|
||||||
import useFeature from '../../../../hooks/api/getters/useFeature/useFeature';
|
|
||||||
import FeatureEnvironmentMetrics from '../FeatureOverview/FeatureEnvironmentMetrics/FeatureEnvironmentMetrics';
|
|
||||||
import FeatureSeenApplications from '../FeatureSeenApplications/FeatureSeenApplications';
|
|
||||||
import { useStyles } from './EnvironmentMetricComponent.style';
|
|
||||||
|
|
||||||
const emptyMetric = (environment: string) => ({
|
|
||||||
yes: 0,
|
|
||||||
no: 0,
|
|
||||||
environment,
|
|
||||||
timestamp: ''
|
|
||||||
});
|
|
||||||
const EnvironmentMetricComponent: React.FC = () => {
|
|
||||||
const { projectId, featureId } = useParams<IFeatureViewParams>();
|
|
||||||
const { feature } = useFeature(projectId, featureId);
|
|
||||||
const { metrics } = useFeatureMetrics(projectId, featureId);
|
|
||||||
const styles = useStyles();
|
|
||||||
|
|
||||||
const featureMetrics = feature?.environments.map(env => {
|
|
||||||
const envMetric = metrics.lastHourUsage.find(
|
|
||||||
metric => metric.environment === env.name
|
|
||||||
);
|
|
||||||
return envMetric || emptyMetric(env.name);
|
|
||||||
});
|
|
||||||
|
|
||||||
const metricComponents = featureMetrics.map(metric => {
|
|
||||||
return (
|
|
||||||
<FeatureEnvironmentMetrics key={metric.environment} metric={metric} />
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<div className={styles.environmentHeader}>Environments</div>
|
|
||||||
<div className={styles.environmentContainer}>
|
|
||||||
{metricComponents}
|
|
||||||
</div>
|
|
||||||
<div className={styles.applicationHeader}>Applications</div>
|
|
||||||
<div className={styles.applicationsContainer}>
|
|
||||||
<FeatureSeenApplications />
|
|
||||||
</div>
|
|
||||||
</>
|
|
||||||
)
|
|
||||||
;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default EnvironmentMetricComponent;
|
|
@ -1,9 +1,26 @@
|
|||||||
import { makeStyles } from '@material-ui/core/styles';
|
import { makeStyles } from '@material-ui/core/styles';
|
||||||
|
|
||||||
export const useStyles = makeStyles(theme => ({
|
export const useStyles = makeStyles(theme => ({
|
||||||
container: {
|
environmentContainer: {
|
||||||
borderRadius: '12.5px',
|
display: 'flex',
|
||||||
backgroundColor: '#fff',
|
marginBottom: '1rem',
|
||||||
padding: '2rem',
|
flexWrap: 'wrap',
|
||||||
|
width: '100%',
|
||||||
|
position: 'relative',
|
||||||
|
justifyContent: 'center',
|
||||||
|
},
|
||||||
|
environmentMetrics: {
|
||||||
|
border: `1px solid ${theme.palette.grey[300]}`,
|
||||||
|
margin: '1rem',
|
||||||
|
width: '30%',
|
||||||
|
[theme.breakpoints.down(1000)]: {
|
||||||
|
width: '40%',
|
||||||
|
},
|
||||||
|
[theme.breakpoints.down(750)]: {
|
||||||
|
width: '100%',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
secondaryContent: {
|
||||||
|
marginTop: '1rem',
|
||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
@ -1,26 +1,59 @@
|
|||||||
import { useParams } from 'react-router';
|
import { useParams } from 'react-router';
|
||||||
import useFeature from '../../../../hooks/api/getters/useFeature/useFeature';
|
import useFeature from '../../../../hooks/api/getters/useFeature/useFeature';
|
||||||
import MetricComponent from '../../view/metric-container';
|
|
||||||
import { useStyles } from './FeatureMetrics.styles';
|
import { useStyles } from './FeatureMetrics.styles';
|
||||||
import { IFeatureViewParams } from '../../../../interfaces/params';
|
import { IFeatureViewParams } from '../../../../interfaces/params';
|
||||||
import useUiConfig from '../../../../hooks/api/getters/useUiConfig/useUiConfig';
|
import useFeatureMetrics from '../../../../hooks/api/getters/useFeatureMetrics/useFeatureMetrics';
|
||||||
import ConditionallyRender from '../../../common/ConditionallyRender';
|
import FeatureEnvironmentMetrics from '../FeatureOverview/FeatureEnvironmentMetrics/FeatureEnvironmentMetrics';
|
||||||
import EnvironmentMetricComponent from '../EnvironmentMetricComponent/EnvironmentMetricComponent';
|
import FeatureSeenApplications from '../FeatureSeenApplications/FeatureSeenApplications';
|
||||||
|
import PageContent from '../../../common/PageContent';
|
||||||
|
|
||||||
|
const emptyMetric = (environment: string) => ({
|
||||||
|
yes: 0,
|
||||||
|
no: 0,
|
||||||
|
environment,
|
||||||
|
timestamp: '',
|
||||||
|
});
|
||||||
|
|
||||||
const FeatureMetrics = () => {
|
const FeatureMetrics = () => {
|
||||||
const styles = useStyles();
|
|
||||||
const { projectId, featureId } = useParams<IFeatureViewParams>();
|
const { projectId, featureId } = useParams<IFeatureViewParams>();
|
||||||
const { feature } = useFeature(projectId, featureId);
|
const { feature } = useFeature(projectId, featureId);
|
||||||
const { uiConfig } = useUiConfig();
|
const { metrics } = useFeatureMetrics(projectId, featureId);
|
||||||
const isEnterprise = uiConfig.flags.E;
|
const styles = useStyles();
|
||||||
|
|
||||||
|
const featureMetrics = feature?.environments.map(env => {
|
||||||
|
const envMetric = metrics.lastHourUsage.find(
|
||||||
|
metric => metric.environment === env.name
|
||||||
|
);
|
||||||
|
return envMetric || emptyMetric(env.name);
|
||||||
|
});
|
||||||
|
|
||||||
|
const metricComponents = featureMetrics.map(metric => {
|
||||||
|
return (
|
||||||
|
<FeatureEnvironmentMetrics
|
||||||
|
key={metric.environment}
|
||||||
|
className={styles.environmentMetrics}
|
||||||
|
metric={metric}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.container}>
|
<>
|
||||||
<ConditionallyRender condition={isEnterprise}
|
<PageContent headerContent="Environment metrics">
|
||||||
show={<EnvironmentMetricComponent />}
|
<div className={styles.environmentContainer}>
|
||||||
elseShow={<MetricComponent featureToggle={feature} />}
|
{metricComponents}
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
|
</PageContent>
|
||||||
|
|
||||||
|
<PageContent
|
||||||
|
headerContent="Applications"
|
||||||
|
className={styles.secondaryContent}
|
||||||
|
>
|
||||||
|
<div className={styles.applicationsContainer}>
|
||||||
|
<FeatureSeenApplications />
|
||||||
|
</div>
|
||||||
|
</PageContent>
|
||||||
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user