import React, { useEffect } from 'react'; import PropTypes from 'prop-types'; import { Trans, useTranslation } from 'react-i18next'; import Statistics from './Statistics'; import Counters from './Counters'; import Clients from './Clients'; import QueriedDomains from './QueriedDomains'; import BlockedDomains from './BlockedDomains'; import PageTitle from '../ui/PageTitle'; import Loading from '../ui/Loading'; import './Dashboard.css'; const Dashboard = ({ getAccessList, getStats, getStatsConfig, dashboard, toggleProtection, stats, access, }) => { const { t } = useTranslation(); const getAllStats = () => { getAccessList(); getStats(); getStatsConfig(); }; useEffect(() => { getAllStats(); }, []); const getToggleFilteringButton = () => { const { protectionEnabled, processingProtection } = dashboard; const buttonText = protectionEnabled ? 'disable_protection' : 'enable_protection'; const buttonClass = protectionEnabled ? 'btn-gray' : 'btn-success'; return ; }; const refreshButton = ; const subtitle = stats.interval === 1 ? t('for_last_24_hours') : t('for_last_days', { count: stats.interval }); const refreshFullButton = ; const statsProcessing = stats.processingStats || stats.processingGetConfig || access.processing; return <>
{getToggleFilteringButton()} {refreshFullButton}
{statsProcessing && } {!statsProcessing &&
} ; }; Dashboard.propTypes = { dashboard: PropTypes.object.isRequired, stats: PropTypes.object.isRequired, access: PropTypes.object.isRequired, getStats: PropTypes.func.isRequired, getStatsConfig: PropTypes.func.isRequired, toggleProtection: PropTypes.func.isRequired, getClients: PropTypes.func.isRequired, getAccessList: PropTypes.func.isRequired, }; export default Dashboard;