[DeckAnalytics] Add a checkbox to include/exclude sideboard for calculation (#6823)
Some checks are pending
Build Desktop / Configure (push) Waiting to run
Build Desktop / Debian 11 (push) Blocked by required conditions
Build Desktop / Debian 13 (push) Blocked by required conditions
Build Desktop / Debian 12 (push) Blocked by required conditions
Build Desktop / Fedora 43 (push) Blocked by required conditions
Build Desktop / Fedora 42 (push) Blocked by required conditions
Build Desktop / Servatrice_Debian 11 (push) Blocked by required conditions
Build Desktop / Ubuntu 24.04 (push) Blocked by required conditions
Build Desktop / Ubuntu 26.04 (push) Blocked by required conditions
Build Desktop / Ubuntu 22.04 (push) Blocked by required conditions
Build Desktop / Arch (push) Blocked by required conditions
Build Desktop / macOS 14 (push) Blocked by required conditions
Build Desktop / macOS 15 (push) Blocked by required conditions
Build Desktop / macOS 13 Intel (push) Blocked by required conditions
Build Desktop / macOS 15 Debug (push) Blocked by required conditions
Build Desktop / Windows 10 (push) Blocked by required conditions
Build Docker Image / amd64 & arm64 (push) Waiting to run

* [DeckAnalytics] Add a checkbox to include/exclude sideboard for calculation

Took 15 minutes

* default to false, actually

Took 2 minutes

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
BruebachL 2026-04-19 23:08:56 +02:00 committed by GitHub
parent 58a8c7d3df
commit ccb9901b28
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 29 additions and 1 deletions

View file

@ -29,10 +29,14 @@ DeckAnalyticsWidget::DeckAnalyticsWidget(QWidget *parent, DeckListStatisticsAnal
removeButton = new QPushButton(this); removeButton = new QPushButton(this);
saveButton = new QPushButton(this); saveButton = new QPushButton(this);
loadButton = new QPushButton(this); loadButton = new QPushButton(this);
includeSideboardCheckBox = new QCheckBox(this);
includeSideboardCheckBox->setChecked(false);
controlLayout->addWidget(addButton); controlLayout->addWidget(addButton);
controlLayout->addWidget(removeButton); controlLayout->addWidget(removeButton);
controlLayout->addWidget(saveButton); controlLayout->addWidget(saveButton);
controlLayout->addWidget(loadButton); controlLayout->addWidget(loadButton);
controlLayout->addWidget(includeSideboardCheckBox);
layout->addWidget(controlContainer); layout->addWidget(controlContainer);
@ -40,6 +44,7 @@ DeckAnalyticsWidget::DeckAnalyticsWidget(QWidget *parent, DeckListStatisticsAnal
connect(removeButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::onRemoveSelected); connect(removeButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::onRemoveSelected);
connect(saveButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::saveLayout); connect(saveButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::saveLayout);
connect(loadButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::loadLayout); connect(loadButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::loadLayout);
connect(includeSideboardCheckBox, &QCheckBox::clicked, this, &DeckAnalyticsWidget::includeSideboardChanged);
// Scroll area and container // Scroll area and container
scrollArea = new QScrollArea(this); scrollArea = new QScrollArea(this);
@ -66,6 +71,13 @@ void DeckAnalyticsWidget::retranslateUi()
removeButton->setText(tr("Remove Panel")); removeButton->setText(tr("Remove Panel"));
saveButton->setText(tr("Save Layout")); saveButton->setText(tr("Save Layout"));
loadButton->setText(tr("Load Layout")); loadButton->setText(tr("Load Layout"));
includeSideboardCheckBox->setText(tr("Include Sideboard"));
}
void DeckAnalyticsWidget::includeSideboardChanged(bool checked)
{
statsAnalyzer->getConfig().includeSideboard = checked;
updateDisplays();
} }
void DeckAnalyticsWidget::updateDisplays() void DeckAnalyticsWidget::updateDisplays()

View file

@ -11,6 +11,7 @@
#include "deck_list_statistics_analyzer.h" #include "deck_list_statistics_analyzer.h"
#include "resizable_panel.h" #include "resizable_panel.h"
#include <QCheckBox>
#include <QJsonObject> #include <QJsonObject>
#include <QScrollArea> #include <QScrollArea>
#include <QVBoxLayout> #include <QVBoxLayout>
@ -29,6 +30,7 @@ public slots:
public: public:
explicit DeckAnalyticsWidget(QWidget *parent, DeckListStatisticsAnalyzer *analyzer); explicit DeckAnalyticsWidget(QWidget *parent, DeckListStatisticsAnalyzer *analyzer);
void retranslateUi(); void retranslateUi();
void includeSideboardChanged(bool checked);
private slots: private slots:
void onAddPanel(); void onAddPanel();
@ -57,6 +59,8 @@ private:
QPushButton *saveButton; QPushButton *saveButton;
QPushButton *loadButton; QPushButton *loadButton;
QCheckBox *includeSideboardCheckBox;
QScrollArea *scrollArea; QScrollArea *scrollArea;
QWidget *panelContainer; QWidget *panelContainer;
QVBoxLayout *panelLayout; QVBoxLayout *panelLayout;

View file

@ -19,7 +19,13 @@ void DeckListStatisticsAnalyzer::analyze()
{ {
clearData(); clearData();
QList<const DecklistCardNode *> nodes = model->getCardNodes(); QList<const DecklistCardNode *> nodes;
if (config.includeSideboard) {
nodes = model->getCardNodes();
} else {
nodes = model->getCardNodesForZone(DECK_ZONE_MAIN);
}
for (auto node : nodes) { for (auto node : nodes) {
CardInfoPtr info = CardDatabaseManager::query()->getCardInfo(node->getName()); CardInfoPtr info = CardDatabaseManager::query()->getCardInfo(node->getName());

View file

@ -17,6 +17,7 @@ struct DeckListStatisticsAnalyzerConfig
bool computeCategories = true; bool computeCategories = true;
bool computeCurveBreakdowns = true; bool computeCurveBreakdowns = true;
bool computeProbabilities = true; bool computeProbabilities = true;
bool includeSideboard = false;
}; };
class DeckListStatisticsAnalyzer : public QObject class DeckListStatisticsAnalyzer : public QObject
@ -133,6 +134,11 @@ public:
return model; return model;
} }
DeckListStatisticsAnalyzerConfig &getConfig()
{
return config;
}
signals: signals:
void statsUpdated(); void statsUpdated();