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:
parent
bc9bccc669
commit
e5db33705d
|
@ -5,6 +5,7 @@ import round from 'lodash/round';
|
||||||
|
|
||||||
import Card from '../ui/Card';
|
import Card from '../ui/Card';
|
||||||
import Tooltip from '../ui/Tooltip';
|
import Tooltip from '../ui/Tooltip';
|
||||||
|
import { formatNumber } from '../../helpers/helpers';
|
||||||
|
|
||||||
const tooltipType = 'tooltip-custom--narrow';
|
const tooltipType = 'tooltip-custom--narrow';
|
||||||
|
|
||||||
|
@ -42,7 +43,9 @@ const Counters = (props) => {
|
||||||
<Tooltip text={tooltipTitle} type={tooltipType} />
|
<Tooltip text={tooltipTitle} type={tooltipType} />
|
||||||
</td>
|
</td>
|
||||||
<td className="text-right">
|
<td className="text-right">
|
||||||
<span className="text-muted">{dnsQueries}</span>
|
<span className="text-muted">
|
||||||
|
{formatNumber(dnsQueries)}
|
||||||
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -56,7 +59,9 @@ const Counters = (props) => {
|
||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
<td className="text-right">
|
<td className="text-right">
|
||||||
<span className="text-muted">{blockedFiltering}</span>
|
<span className="text-muted">
|
||||||
|
{formatNumber(blockedFiltering)}
|
||||||
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -68,7 +73,9 @@ const Counters = (props) => {
|
||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
<td className="text-right">
|
<td className="text-right">
|
||||||
<span className="text-muted">{replacedSafebrowsing}</span>
|
<span className="text-muted">
|
||||||
|
{formatNumber(replacedSafebrowsing)}
|
||||||
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -80,7 +87,9 @@ const Counters = (props) => {
|
||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
<td className="text-right">
|
<td className="text-right">
|
||||||
<span className="text-muted">{replacedParental}</span>
|
<span className="text-muted">
|
||||||
|
{formatNumber(replacedParental)}
|
||||||
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -92,7 +101,9 @@ const Counters = (props) => {
|
||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
<td className="text-right">
|
<td className="text-right">
|
||||||
<span className="text-muted">{replacedSafesearch}</span>
|
<span className="text-muted">
|
||||||
|
{formatNumber(replacedSafesearch)}
|
||||||
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
@ -2,6 +2,7 @@ import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
|
||||||
import { STATUS_COLORS } from '../../helpers/constants';
|
import { STATUS_COLORS } from '../../helpers/constants';
|
||||||
|
import { formatNumber } from '../../helpers/helpers';
|
||||||
import Card from '../ui/Card';
|
import Card from '../ui/Card';
|
||||||
import Line from '../ui/Line';
|
import Line from '../ui/Line';
|
||||||
|
|
||||||
|
@ -10,10 +11,16 @@ const StatsCard = ({
|
||||||
}) => (
|
}) => (
|
||||||
<Card type="card--full" bodyType="card-wrap">
|
<Card type="card--full" bodyType="card-wrap">
|
||||||
<div className="card-body-stats">
|
<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 className="card-title-stats">{title}</div>
|
||||||
</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">
|
<div className="card-chart-bg">
|
||||||
<Line data={lineData} color={STATUS_COLORS[color]} />
|
<Line data={lineData} color={STATUS_COLORS[color]} />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,18 +1,20 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
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">
|
||||||
<div className="stats__row-value mb-1">
|
<div className="stats__row-value mb-1">
|
||||||
<strong>{props.value}</strong>
|
<strong>{formatNumber(value)}</strong>
|
||||||
<small className="ml-3 text-muted">{props.percent}%</small>
|
<small className="ml-3 text-muted">{percent}%</small>
|
||||||
</div>
|
</div>
|
||||||
<div className="progress progress-xs">
|
<div className="progress progress-xs">
|
||||||
<div
|
<div
|
||||||
className="progress-bar"
|
className="progress-bar"
|
||||||
style={{
|
style={{
|
||||||
width: `${props.percent}%`,
|
width: `${percent}%`,
|
||||||
backgroundColor: props.color,
|
backgroundColor: color,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -449,3 +449,12 @@ export const getCurrentFilter = (url, filters) => {
|
||||||
|
|
||||||
return { name: '', url: '' };
|
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);
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in New Issue