Improved display of different inner currencies in statistical charts.
This commit is contained in:
parent
049cde48ee
commit
811d75e383
2 changed files with 29 additions and 2 deletions
|
@ -11,6 +11,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
|
|
||||||
namespace Data {
|
namespace Data {
|
||||||
|
|
||||||
|
enum class StatisticalCurrency {
|
||||||
|
None,
|
||||||
|
Ton,
|
||||||
|
Credits,
|
||||||
|
};
|
||||||
|
|
||||||
struct StatisticalChart {
|
struct StatisticalChart {
|
||||||
StatisticalChart() = default;
|
StatisticalChart() = default;
|
||||||
|
|
||||||
|
@ -67,6 +73,8 @@ struct StatisticalChart {
|
||||||
bool isFooterHidden = false;
|
bool isFooterHidden = false;
|
||||||
bool hasPercentages = false;
|
bool hasPercentages = false;
|
||||||
bool weekFormat = false;
|
bool weekFormat = false;
|
||||||
|
|
||||||
|
StatisticalCurrency currency = StatisticalCurrency::None;
|
||||||
float64 currencyRate = 0.;
|
float64 currencyRate = 0.;
|
||||||
|
|
||||||
// View data.
|
// View data.
|
||||||
|
|
|
@ -8,8 +8,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "statistics/statistics_data_deserialize.h"
|
#include "statistics/statistics_data_deserialize.h"
|
||||||
|
|
||||||
#include "base/debug_log.h"
|
#include "base/debug_log.h"
|
||||||
|
#include "data/data_channel_earn.h" // kEarnMultiplier.
|
||||||
#include "data/data_statistics_chart.h"
|
#include "data/data_statistics_chart.h"
|
||||||
#include "statistics/statistics_types.h"
|
#include "statistics/statistics_types.h"
|
||||||
|
#include "ui/text/format_values.h" // kCreditsCurrency.
|
||||||
|
|
||||||
#include <QtCore/QJsonArray>
|
#include <QtCore/QJsonArray>
|
||||||
#include <QtCore/QJsonDocument>
|
#include <QtCore/QJsonDocument>
|
||||||
|
@ -40,6 +42,18 @@ Data::StatisticalChart StatisticalChartFromJSON(const QByteArray &json) {
|
||||||
}) | ranges::to_vector;
|
}) | ranges::to_vector;
|
||||||
|
|
||||||
auto result = Data::StatisticalChart();
|
auto result = Data::StatisticalChart();
|
||||||
|
|
||||||
|
{
|
||||||
|
const auto tickFormatIt = root.constFind(u"yTickFormatter"_q);
|
||||||
|
if (tickFormatIt != root.constEnd()) {
|
||||||
|
const auto tickFormat = tickFormatIt->toString();
|
||||||
|
if (tickFormat.contains(u"TON"_q)) {
|
||||||
|
result.currency = Data::StatisticalCurrency::Ton;
|
||||||
|
} else if (tickFormat.contains(Ui::kCreditsCurrency)) {
|
||||||
|
result.currency = Data::StatisticalCurrency::Credits;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
auto columnIdCount = 0;
|
auto columnIdCount = 0;
|
||||||
for (const auto &column : columns) {
|
for (const auto &column : columns) {
|
||||||
const auto array = column.toArray();
|
const auto array = column.toArray();
|
||||||
|
@ -62,8 +76,13 @@ Data::StatisticalChart StatisticalChartFromJSON(const QByteArray &json) {
|
||||||
line.isHiddenOnStart = ranges::contains(hiddenLines, columnId);
|
line.isHiddenOnStart = ranges::contains(hiddenLines, columnId);
|
||||||
line.y.resize(length);
|
line.y.resize(length);
|
||||||
for (auto i = 0; i < length; i++) {
|
for (auto i = 0; i < length; i++) {
|
||||||
const auto value = ChartValue(base::SafeRound(
|
using Currency = Data::StatisticalCurrency;
|
||||||
array.at(i + 1).toDouble()));
|
const auto multiplier = (result.currency == Currency::Credits)
|
||||||
|
? Data::kEarnMultiplier
|
||||||
|
: 1;
|
||||||
|
const auto value = ChartValue(
|
||||||
|
base::SafeRound(array.at(i + 1).toDouble()))
|
||||||
|
* multiplier;
|
||||||
line.y[i] = value;
|
line.y[i] = value;
|
||||||
if (value > line.maxValue) {
|
if (value > line.maxValue) {
|
||||||
line.maxValue = value;
|
line.maxValue = value;
|
||||||
|
|
Loading…
Reference in a new issue