import React from 'react';
import PropTypes from 'prop-types';
import { Grid, Cell, Icon, Chip, ChipContact } from 'react-mdl';
import Progress from '../progress-component';
import { Link } from 'react-router-dom';
import { AppsLinkList, calc } from '../../common';
import { formatFullDateTimeWithLocale } from '../../common/util';
import styles from './metric.module.scss';
const StrategyChipItem = ({ strategy }) => (
{strategy.name}
);
StrategyChipItem.propTypes = {
strategy: PropTypes.object.isRequired,
};
// TODO what about "missing" strategies here?
const StrategiesList = ({ strategies }) => (
With {strategies.length > 1 ? 'strategies' : 'strategy'}{' '}
{strategies.map((strategy, i) => (
))}
);
StrategiesList.propTypes = {
strategies: PropTypes.array.isRequired,
};
export default class MetricComponent extends React.Component {
static propTypes = {
metrics: PropTypes.object.isRequired,
featureToggle: PropTypes.object.isRequired,
fetchSeenApps: PropTypes.func.isRequired,
fetchFeatureMetrics: PropTypes.func.isRequired,
location: PropTypes.object,
};
// eslint-disable-next-line camelcase
UNSAFE_componentWillMount() {
this.props.fetchSeenApps();
this.props.fetchFeatureMetrics();
}
formatFullDateTime(v) {
return formatFullDateTimeWithLocale(v, this.props.location.locale);
}
renderLastSeen = lastSeenAt => {
return lastSeenAt ? this.formatFullDateTime(lastSeenAt) : 'Never reported';
};
render() {
const { metrics = {}, featureToggle } = 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 (
{lastMinute.isFallback ? (
No metrics available
) : (
Last minute
Yes {lastMinute.yes}, No: {lastMinute.no}
)}
|
{lastHour.isFallback ? (
No metrics available
) : (
Last hour
Yes {lastHour.yes}, No: {lastHour.no}
)}
|
{seenApps.length > 0 ? (
Seen in applications:
) : (
Not used in an app in the last hour.
This might be due to your client implementation is not reporting usage.
)}
Created:
{this.formatFullDateTime(featureToggle.createdAt)}
Last seen:
{this.renderLastSeen(featureToggle.lastSeenAt)}
|
);
}
}