mirror of
https://github.com/Unleash/unleash.git
synced 2024-10-18 20:09:08 +02:00
67 lines
2.9 KiB
React
67 lines
2.9 KiB
React
|
import React, { PropTypes } from 'react';
|
||
|
import { Grid, Cell, Icon } from 'react-mdl';
|
||
|
import Progress from './progress';
|
||
|
import { AppsLinkList, SwitchWithLabel, calc } from '../common';
|
||
|
|
||
|
const MetricComponent = ({ metrics, featureToggle, toggleFeature }) => {
|
||
|
const {
|
||
|
lastHour = { yes: 0, no: 0, isFallback: true },
|
||
|
lastMinute = { yes: 0, no: 0, isFallback: true },
|
||
|
seenApps = [],
|
||
|
} = metrics;
|
||
|
|
||
|
const lastHourPercent = 1 * calc(lastHour.yes, lastHour.yes + lastHour.no, 0);
|
||
|
const lastMinutePercent = 1 * calc(lastMinute.yes, lastMinute.yes + lastMinute.no, 0);
|
||
|
|
||
|
return (<div>
|
||
|
<SwitchWithLabel
|
||
|
checked={featureToggle.enabled}
|
||
|
onChange={() => toggleFeature(featureToggle)}>Toggle {featureToggle.name}</SwitchWithLabel>
|
||
|
<hr />
|
||
|
<Grid style={{ textAlign: 'center' }}>
|
||
|
<Cell tablet={4} col={3} phone={12}>
|
||
|
{
|
||
|
lastMinute.isFallback ?
|
||
|
<Icon style={{ width: '100px', height: '100px', fontSize: '100px', color: '#ccc' }}
|
||
|
name="report problem" title="No metrics avaiable" /> :
|
||
|
<div>
|
||
|
<Progress animatePercentageText strokeWidth={10} percentage={lastMinutePercent} width="50" />
|
||
|
</div>
|
||
|
}
|
||
|
<p><strong>Last minute</strong><br /> Yes {lastMinute.yes}, No: {lastMinute.no}</p>
|
||
|
</Cell>
|
||
|
<Cell col={3} tablet={4} phone={12}>
|
||
|
{
|
||
|
lastHour.isFallback ?
|
||
|
<Icon style={{ width: '100px', height: '100px', fontSize: '100px', color: '#ccc' }}
|
||
|
name="report problem" title="No metrics avaiable" /> :
|
||
|
<div>
|
||
|
<Progress strokeWidth={10} percentage={lastHourPercent} width="50" />
|
||
|
</div>
|
||
|
}
|
||
|
<p><strong>Last hour</strong><br /> Yes {lastHour.yes}, No: {lastHour.no}</p>
|
||
|
</Cell>
|
||
|
<Cell col={6} tablet={12}>
|
||
|
{seenApps.length > 0 ?
|
||
|
(<div><strong>Seen in applications:</strong></div>) :
|
||
|
<div>
|
||
|
<Icon style={{ width: '100px', height: '100px', fontSize: '100px', color: '#ccc' }}
|
||
|
name="report problem" title="Not used in a app in the last hour" />
|
||
|
<div><small><strong>Not used in a app in the last hour.</strong>
|
||
|
This might be due to your client implementation is not reporting usage.</small></div>
|
||
|
</div>
|
||
|
}
|
||
|
<AppsLinkList apps={seenApps} />
|
||
|
</Cell>
|
||
|
</Grid>
|
||
|
</div>);
|
||
|
};
|
||
|
|
||
|
MetricComponent.propTypes = {
|
||
|
metrics: PropTypes.object,
|
||
|
featureToggle: PropTypes.object,
|
||
|
toggleFeature: PropTypes.object,
|
||
|
};
|
||
|
|
||
|
export default MetricComponent;
|