From 8ac6aca315764e6dd70872b3c437023e9cc26af7 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Fri, 29 Sep 2023 16:32:07 +0300 Subject: [PATCH] Split out data for statistics and for charts. --- Telegram/CMakeLists.txt | 3 - Telegram/SourceFiles/data/data_statistics.h | 60 +--------------- ...atistics.cpp => data_statistics_chart.cpp} | 6 +- .../SourceFiles/data/data_statistics_chart.h | 72 +++++++++++++++++++ Telegram/cmake/td_ui.cmake | 4 ++ 5 files changed, 80 insertions(+), 65 deletions(-) rename Telegram/SourceFiles/data/{data_statistics.cpp => data_statistics_chart.cpp} (98%) create mode 100644 Telegram/SourceFiles/data/data_statistics_chart.h diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index 7dfa0a84b..b1e00d09e 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -555,7 +555,6 @@ PRIVATE data/data_sparse_ids.h data/data_sponsored_messages.cpp data/data_sponsored_messages.h - data/data_statistics.cpp data/data_statistics.h data/data_stories.cpp data/data_stories.h @@ -1292,8 +1291,6 @@ PRIVATE statistics/chart_widget.h statistics/point_details_widget.cpp statistics/point_details_widget.h - statistics/segment_tree.cpp - statistics/segment_tree.h statistics/statistics_box.cpp statistics/statistics_box.h statistics/statistics_common.h diff --git a/Telegram/SourceFiles/data/data_statistics.h b/Telegram/SourceFiles/data/data_statistics.h index c65746f23..f27ab52d5 100644 --- a/Telegram/SourceFiles/data/data_statistics.h +++ b/Telegram/SourceFiles/data/data_statistics.h @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "statistics/segment_tree.h" +#include "data/data_statistics_chart.h" namespace Data { @@ -35,64 +35,6 @@ struct StatisticsInviterInfo final { int addedMemberCount = 0; }; -struct StatisticalChart { - StatisticalChart() = default; - - [[nodiscard]] bool empty() const { - return lines.empty(); - } - [[nodiscard]] explicit operator bool() const { - return !empty(); - } - - void measure(); - - [[nodiscard]] QString getDayString(int i) const; - - [[nodiscard]] int findStartIndex(float v) const; - [[nodiscard]] int findEndIndex(int left, float v) const; - [[nodiscard]] int findIndex(int left, int right, float v) const; - - struct Line final { - std::vector y; - - Statistic::SegmentTree segmentTree; - int id = 0; - QString idString; - QString name; - int maxValue = 0; - int minValue = std::numeric_limits::max(); - QString colorKey; - QColor color; - QColor colorDark; - }; - - std::vector x; - std::vector xPercentage; - std::vector daysLookup; - - std::vector lines; - - struct { - float64 min = 0.; - float64 max = 0.; - } defaultZoomXIndex; - - int maxValue = 0; - int minValue = std::numeric_limits::max(); - - float64 oneDayPercentage = 0.; - - float64 timeStep = 0.; - -}; - -struct StatisticalGraph final { - StatisticalChart chart; - QString zoomToken; - QString error; -}; - struct StatisticalValue final { float64 value = 0.; float64 previousValue = 0.; diff --git a/Telegram/SourceFiles/data/data_statistics.cpp b/Telegram/SourceFiles/data/data_statistics_chart.cpp similarity index 98% rename from Telegram/SourceFiles/data/data_statistics.cpp rename to Telegram/SourceFiles/data/data_statistics_chart.cpp index d66353026..5e8cec831 100644 --- a/Telegram/SourceFiles/data/data_statistics.cpp +++ b/Telegram/SourceFiles/data/data_statistics_chart.cpp @@ -5,11 +5,11 @@ the official desktop application for the Telegram messaging service. For license and copyright information please follow this link: https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ -#include "data/data_statistics.h" +#include "data/data_statistics_chart.h" + +#include namespace Data { -namespace { -} // namespace void StatisticalChart::measure() { if (x.empty()) { diff --git a/Telegram/SourceFiles/data/data_statistics_chart.h b/Telegram/SourceFiles/data/data_statistics_chart.h new file mode 100644 index 000000000..13f1071c6 --- /dev/null +++ b/Telegram/SourceFiles/data/data_statistics_chart.h @@ -0,0 +1,72 @@ +/* +This file is part of Telegram Desktop, +the official desktop application for the Telegram messaging service. + +For license and copyright information please follow this link: +https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL +*/ +#pragma once + +#include "statistics/segment_tree.h" + +namespace Data { + +struct StatisticalChart { + StatisticalChart() = default; + + [[nodiscard]] bool empty() const { + return lines.empty(); + } + [[nodiscard]] explicit operator bool() const { + return !empty(); + } + + void measure(); + + [[nodiscard]] QString getDayString(int i) const; + + [[nodiscard]] int findStartIndex(float v) const; + [[nodiscard]] int findEndIndex(int left, float v) const; + [[nodiscard]] int findIndex(int left, int right, float v) const; + + struct Line final { + std::vector y; + + Statistic::SegmentTree segmentTree; + int id = 0; + QString idString; + QString name; + int maxValue = 0; + int minValue = std::numeric_limits::max(); + QString colorKey; + QColor color; + QColor colorDark; + }; + + std::vector x; + std::vector xPercentage; + std::vector daysLookup; + + std::vector lines; + + struct { + float64 min = 0.; + float64 max = 0.; + } defaultZoomXIndex; + + int maxValue = 0; + int minValue = std::numeric_limits::max(); + + float64 oneDayPercentage = 0.; + + float64 timeStep = 0.; + +}; + +struct StatisticalGraph final { + StatisticalChart chart; + QString zoomToken; + QString error; +}; + +} // namespace Data diff --git a/Telegram/cmake/td_ui.cmake b/Telegram/cmake/td_ui.cmake index d9455b63c..5be52bf69 100644 --- a/Telegram/cmake/td_ui.cmake +++ b/Telegram/cmake/td_ui.cmake @@ -69,6 +69,8 @@ PRIVATE countries/countries_instance.cpp countries/countries_instance.h + data/data_statistics_chart.cpp + data/data_statistics_chart.h data/data_subscription_option.h dialogs/dialogs_three_state_icon.h @@ -161,6 +163,8 @@ PRIVATE statistics/chart_lines_filter_widget.cpp statistics/chart_lines_filter_widget.h + statistics/segment_tree.cpp + statistics/segment_tree.h ui/boxes/auto_delete_settings.cpp ui/boxes/auto_delete_settings.h