Крайние подписи оси Y (414.6K поверх 400K) скрыты, числа в русской краткой форме, подписи оси X не обрезаются справа. Добавлена легенда: сплошная линия — стоимость, пунктир — вложено нетто.
19 lines
747 B
Dart
19 lines
747 B
Dart
/// «12,3 тыс», «1,2 млн» — for axis labels and cells too narrow for a full amount.
|
||
///
|
||
/// fl_chart's own short form («414.6K») is English and rounds a step of 50 000 to the same
|
||
/// label twice; this one keeps the Russian suffixes and one decimal below a hundred.
|
||
String compactNumber(double value) {
|
||
final n = value.abs();
|
||
String scaled(double x, String suffix) {
|
||
final s = x >= 100
|
||
? x.round().toString()
|
||
: x.toStringAsFixed(1).replaceAll(RegExp(r'\.0$'), '');
|
||
return '${s.replaceAll('.', ',')} $suffix';
|
||
}
|
||
|
||
final sign = value < 0 ? '−' : '';
|
||
if (n >= 1e6) return '$sign${scaled(n / 1e6, 'млн')}';
|
||
if (n >= 1e3) return '$sign${scaled(n / 1e3, 'тыс')}';
|
||
return '$sign${n.round()}';
|
||
}
|