8 #include "ui_statistics_dialog.h"
9 #include <QTableWidgetItem>
13 : QDialog(parent), ui(new
Ui::statistics_dialog), _parent(parent)
17 setWindowTitle(QString(
"Statistics | %1").
arg(
_parent->windowTitle()));
18 setWindowFlag(Qt::Tool);
20 ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
22 connect(
ui->rangeComboBox, qOverload<int>(&QComboBox::currentIndexChanged),
this,
24 auto rect = _parent->currentBoundingRect();
25 update({ rect.left(), rect.right() });
36 return (
ui->rangeComboBox->currentIndex() == 0);
41 std::map<QString, Statistics> statistics;
48 const auto ts = info.curve->data();
52 for (
size_t i = 0; i < ts->size(); i++)
54 const auto p = ts->sample(i);
57 if (p.x() < range.
min)
61 if (p.x() > range.
max)
77 start_time = std::min(start_time, p.x());
78 end_time = std::max(end_time, p.x());
79 stat.
min = std::min(stat.
min, p.y());
80 stat.
max = std::max(stat.
max, p.y());
85 statistics[info.curve->title().text()] = stat;
88 ui->tableWidget->setRowCount(statistics.size());
90 for (
const auto& it : statistics)
92 const auto& stat = it.second;
94 std::array<QString, 6> row_values;
95 row_values[0] = it.first;
96 row_values[1] = QString::number(stat.count);
97 row_values[2] = QString::number(stat.min,
'f');
98 row_values[3] = QString::number(stat.max,
'f');
99 double mean = stat.mean_tot / double(stat.count);
100 row_values[4] = QString::number(mean,
'f');
101 row_values[5] = QString::number(stat.mean_interval,
'f');
103 for (
size_t col = 0; col < row_values.size(); col++)
105 if (
auto item =
ui->tableWidget->item(row, col))
107 item->setText(row_values[col]);
111 ui->tableWidget->setItem(row, col,
new QTableWidgetItem(row_values[col]));
124 setWindowTitle(QString(
"Statistics | %1").
arg(title));
129 QWidget::closeEvent(event);