2018-10-12 12:23:21 +00:00
|
|
|
import React, { Component } from 'react';
|
2018-08-30 14:25:33 +00:00
|
|
|
import PropTypes from 'prop-types';
|
2018-10-25 06:52:03 +00:00
|
|
|
import { Trans } from 'react-i18next';
|
2018-08-30 14:25:33 +00:00
|
|
|
|
|
|
|
import Card from '../ui/Card';
|
2018-10-12 12:23:21 +00:00
|
|
|
import Line from '../ui/Line';
|
2018-08-30 14:25:33 +00:00
|
|
|
|
2018-10-12 12:23:21 +00:00
|
|
|
import { getPercent } from '../../helpers/helpers';
|
|
|
|
import { STATUS_COLORS } from '../../helpers/constants';
|
|
|
|
|
|
|
|
class Statistics extends Component {
|
|
|
|
render() {
|
|
|
|
const {
|
|
|
|
dnsQueries,
|
|
|
|
blockedFiltering,
|
|
|
|
replacedSafebrowsing,
|
|
|
|
replacedParental,
|
|
|
|
} = this.props;
|
|
|
|
|
|
|
|
const filteringData = [this.props.history[1]];
|
|
|
|
const queriesData = [this.props.history[2]];
|
|
|
|
const parentalData = [this.props.history[3]];
|
|
|
|
const safebrowsingData = [this.props.history[4]];
|
|
|
|
|
|
|
|
return (
|
|
|
|
<div className="row">
|
|
|
|
<div className="col-sm-6 col-lg-3">
|
|
|
|
<Card bodyType="card-wrap">
|
|
|
|
<div className="card-body-stats">
|
|
|
|
<div className="card-value card-value-stats text-blue">
|
|
|
|
{dnsQueries}
|
|
|
|
</div>
|
|
|
|
<div className="card-title-stats">
|
2018-10-25 06:52:03 +00:00
|
|
|
<Trans>DNS Queries</Trans>
|
2018-10-12 12:23:21 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className="card-chart-bg">
|
|
|
|
<Line data={queriesData} color={STATUS_COLORS.blue}/>
|
|
|
|
</div>
|
|
|
|
</Card>
|
|
|
|
</div>
|
|
|
|
<div className="col-sm-6 col-lg-3">
|
|
|
|
<Card bodyType="card-wrap">
|
|
|
|
<div className="card-body-stats">
|
|
|
|
<div className="card-value card-value-stats text-red">
|
|
|
|
{blockedFiltering}
|
|
|
|
</div>
|
|
|
|
<div className="card-value card-value-percent text-red">
|
|
|
|
{getPercent(dnsQueries, blockedFiltering)}
|
|
|
|
</div>
|
|
|
|
<div className="card-title-stats">
|
2018-10-25 06:52:03 +00:00
|
|
|
<Trans>Blocked by</Trans> <a href="#filters"><Trans>Filters</Trans></a>
|
2018-10-12 12:23:21 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className="card-chart-bg">
|
|
|
|
<Line data={filteringData} color={STATUS_COLORS.red}/>
|
|
|
|
</div>
|
|
|
|
</Card>
|
|
|
|
</div>
|
|
|
|
<div className="col-sm-6 col-lg-3">
|
|
|
|
<Card bodyType="card-wrap">
|
|
|
|
<div className="card-body-stats">
|
|
|
|
<div className="card-value card-value-stats text-green">
|
|
|
|
{replacedSafebrowsing}
|
|
|
|
</div>
|
|
|
|
<div className="card-value card-value-percent text-green">
|
|
|
|
{getPercent(dnsQueries, replacedSafebrowsing)}
|
|
|
|
</div>
|
|
|
|
<div className="card-title-stats">
|
2018-10-25 06:52:03 +00:00
|
|
|
<Trans>Blocked malware/phishing</Trans>
|
2018-10-12 12:23:21 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className="card-chart-bg">
|
|
|
|
<Line data={safebrowsingData} color={STATUS_COLORS.green}/>
|
|
|
|
</div>
|
|
|
|
</Card>
|
|
|
|
</div>
|
|
|
|
<div className="col-sm-6 col-lg-3">
|
|
|
|
<Card bodyType="card-wrap">
|
|
|
|
<div className="card-body-stats">
|
|
|
|
<div className="card-value card-value-stats text-yellow">
|
|
|
|
{replacedParental}
|
|
|
|
</div>
|
|
|
|
<div className="card-value card-value-percent text-yellow">
|
|
|
|
{getPercent(dnsQueries, replacedParental)}
|
|
|
|
</div>
|
|
|
|
<div className="card-title-stats">
|
2018-10-25 06:52:03 +00:00
|
|
|
<Trans>Blocked adult websites</Trans>
|
2018-10-12 12:23:21 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className="card-chart-bg">
|
|
|
|
<Line data={parentalData} color={STATUS_COLORS.yellow}/>
|
|
|
|
</div>
|
|
|
|
</Card>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
2018-08-30 14:25:33 +00:00
|
|
|
|
|
|
|
Statistics.propTypes = {
|
|
|
|
history: PropTypes.array.isRequired,
|
2018-10-12 12:23:21 +00:00
|
|
|
dnsQueries: PropTypes.number.isRequired,
|
|
|
|
blockedFiltering: PropTypes.number.isRequired,
|
|
|
|
replacedSafebrowsing: PropTypes.number.isRequired,
|
|
|
|
replacedParental: PropTypes.number.isRequired,
|
|
|
|
refreshButton: PropTypes.node.isRequired,
|
2018-08-30 14:25:33 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
export default Statistics;
|