Merge: + client: add digit grouping for numbers on the dashboard

Closes #1423

Squashed commit of the following:

commit 6e5de427c48577ebbe4d963f817b66fed9b29bb4
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Wed Mar 11 17:56:39 2020 +0300

    + client: add digit grouping for numbers on the dashboard
This commit is contained in:
Ildar Kamalov 2020-03-17 15:15:19 +03:00
parent bc9bccc669
commit e5db33705d
4 changed files with 41 additions and 12 deletions

View File

@ -5,6 +5,7 @@ import round from 'lodash/round';
import Card from '../ui/Card';
import Tooltip from '../ui/Tooltip';
import { formatNumber } from '../../helpers/helpers';
const tooltipType = 'tooltip-custom--narrow';
@ -42,7 +43,9 @@ const Counters = (props) => {
<Tooltip text={tooltipTitle} type={tooltipType} />
</td>
<td className="text-right">
<span className="text-muted">{dnsQueries}</span>
<span className="text-muted">
{formatNumber(dnsQueries)}
</span>
</td>
</tr>
<tr>
@ -56,7 +59,9 @@ const Counters = (props) => {
/>
</td>
<td className="text-right">
<span className="text-muted">{blockedFiltering}</span>
<span className="text-muted">
{formatNumber(blockedFiltering)}
</span>
</td>
</tr>
<tr>
@ -68,7 +73,9 @@ const Counters = (props) => {
/>
</td>
<td className="text-right">
<span className="text-muted">{replacedSafebrowsing}</span>
<span className="text-muted">
{formatNumber(replacedSafebrowsing)}
</span>
</td>
</tr>
<tr>
@ -80,7 +87,9 @@ const Counters = (props) => {
/>
</td>
<td className="text-right">
<span className="text-muted">{replacedParental}</span>
<span className="text-muted">
{formatNumber(replacedParental)}
</span>
</td>
</tr>
<tr>
@ -92,7 +101,9 @@ const Counters = (props) => {
/>
</td>
<td className="text-right">
<span className="text-muted">{replacedSafesearch}</span>
<span className="text-muted">
{formatNumber(replacedSafesearch)}
</span>
</td>
</tr>
<tr>

View File

@ -2,6 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import { STATUS_COLORS } from '../../helpers/constants';
import { formatNumber } from '../../helpers/helpers';
import Card from '../ui/Card';
import Line from '../ui/Line';
@ -10,10 +11,16 @@ const StatsCard = ({
}) => (
<Card type="card--full" bodyType="card-wrap">
<div className="card-body-stats">
<div className={`card-value card-value-stats text-${color}`}>{total}</div>
<div className={`card-value card-value-stats text-${color}`}>
{formatNumber(total)}
</div>
<div className="card-title-stats">{title}</div>
</div>
{percent >= 0 && (<div className={`card-value card-value-percent text-${color}`}>{percent}</div>)}
{percent >= 0 && (
<div className={`card-value card-value-percent text-${color}`}>
{percent}
</div>
)}
<div className="card-chart-bg">
<Line data={lineData} color={STATUS_COLORS[color]} />
</div>

View File

@ -1,18 +1,20 @@
import React from 'react';
import PropTypes from 'prop-types';
const Cell = props => (
import { formatNumber } from '../../helpers/helpers';
const Cell = ({ value, percent, color }) => (
<div className="stats__row">
<div className="stats__row-value mb-1">
<strong>{props.value}</strong>
<small className="ml-3 text-muted">{props.percent}%</small>
<strong>{formatNumber(value)}</strong>
<small className="ml-3 text-muted">{percent}%</small>
</div>
<div className="progress progress-xs">
<div
className="progress-bar"
style={{
width: `${props.percent}%`,
backgroundColor: props.color,
width: `${percent}%`,
backgroundColor: color,
}}
/>
</div>

View File

@ -449,3 +449,12 @@ export const getCurrentFilter = (url, filters) => {
return { name: '', url: '' };
};
/**
* @param number Number to format
* @returns string Returns a string with a language-sensitive representation of this number
*/
export const formatNumber = (num) => {
const currentLanguage = i18n.languages[0] || DEFAULT_LANGUAGE;
return num.toLocaleString(currentLanguage);
};