import React, { PropTypes } from 'react'; import { Grid, Cell, Icon } from 'react-mdl'; import Progress from './progress'; import { AppsLinkList, SwitchWithLabel, calc } from '../common'; export default class MetricComponent extends React.Component { static propTypes () { return { metrics: PropTypes.object.isRequired, featureToggle: PropTypes.object.isRequired, toggleFeature: PropTypes.func.isRequired, fetchSeenApps: PropTypes.func.isRequired, fetchFeatureMetrics: PropTypes.func.isRequired, }; } componentWillMount () { this.props.fetchSeenApps(); this.props.fetchFeatureMetrics(); this.timer = setInterval(() => { this.props.fetchFeatureMetrics(); }, 5000); } componentWillUnmount () { clearInterval(this.timer); } render () { const { metrics = {}, featureToggle, toggleFeature } = this.props; 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 (
toggleFeature(featureToggle)}>Toggle {featureToggle.name}
{ lastMinute.isFallback ? :
}

Last minute
Yes {lastMinute.yes}, No: {lastMinute.no}

{ lastHour.isFallback ? :
}

Last hour
Yes {lastHour.yes}, No: {lastHour.no}

{seenApps.length > 0 ? (
Seen in applications:
) :
Not used in a app in the last hour. This might be due to your client implementation is not reporting usage.
}
); } }