Skip to content

Commit

Permalink
[#941 fixed] Printing results not working
Browse files Browse the repository at this point in the history
  • Loading branch information
Fanda Vacek committed Aug 22, 2023
1 parent b033f22 commit 97517c3
Show file tree
Hide file tree
Showing 4 changed files with 155 additions and 192 deletions.
63 changes: 23 additions & 40 deletions libquickevent/libquickeventgui/src/reportoptionsdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,25 +39,21 @@ ReportOptionsDialog::ReportOptionsDialog(QWidget *parent)
ui->grpResultOptions->setVisible(false);
ui->grpStartTimes->setVisible(false);
ui->grpStartlistOrderBy->setVisible(false);
ui->grpClassStartSelection->setVisible(false);
ui->btRegExp->setEnabled(QSqlDatabase::database().driverName().endsWith(QLatin1String("PSQL"), Qt::CaseInsensitive));

// fill start numbers from courses
QString query_str = "SELECT codes.code FROM codes"
" ORDER BY id";
qf::core::sql::Query q;
q.exec(query_str, qf::core::Exception::Throw);
while (q.next()) {
auto code = q.value(0).toInt();
if(auto n = core::CodeDef::codeToStartNumber(code); n.has_value()) {
ui->cbxStartNumber->addItem(QString("Start %1").arg(n.value()),n.value());
{
// fill start numbers from courses
ui->cbxStartNumber->addItem(QString("All"), 0);
QString query_str = "SELECT codes.code FROM codes ORDER BY id";
qf::core::sql::Query q;
q.exec(query_str, qf::core::Exception::Throw);
while (q.next()) {
auto code = q.value(0).toInt();
if(auto n = core::CodeDef::codeToStartNumber(code); n.has_value()) {
ui->cbxStartNumber->addItem(QString("Start %1").arg(n.value()),n.value());
}
}
}
if (ui->cbxStartNumber->count() < 1) {
ui->grpClassStartSelection->setEnabled(false);
ui->grpClassStartSelection->setChecked(false);
ui->cbxStartNumber->clear();
}
connect(ui->btSaveAsDefault, &QPushButton::clicked, [this]() {
savePersistentSettings();
});
Expand All @@ -77,11 +73,6 @@ ReportOptionsDialog::ReportOptionsDialog(QWidget *parent)
connect(this, &ReportOptionsDialog::resultOptionsVisibleChanged, ui->grpResultOptions, &QGroupBox::setVisible);
connect(this, &ReportOptionsDialog::startTimeFormatVisibleChanged, ui->grpStartTimes, &QGroupBox::setVisible);
connect(this, &ReportOptionsDialog::startlistOrderFirstByVisibleChanged, ui->grpStartlistOrderBy, &QGroupBox::setVisible);
connect(this, &ReportOptionsDialog::classStartSelectionVisibleChanged, ui->grpClassStartSelection, &QGroupBox::setVisible);

//connect(ui->edStagesCount, &QSpinBox::valueChanged, [this](int n) {
// qfInfo() << "stage cnt value changed:" << n;
//});
}

ReportOptionsDialog::~ReportOptionsDialog()
Expand All @@ -108,7 +99,6 @@ void ReportOptionsDialog::setClassNamesFilter(const QStringList &class_names)
ui->btClassNames->setChecked(true);
ui->chkClassFilterDoesntMatch->setChecked(false);
ui->edFilter->setText(class_names.join(','));
ui->grpClassStartSelection->setChecked(false);
}

int ReportOptionsDialog::stagesCount() const
Expand Down Expand Up @@ -174,41 +164,37 @@ QString ReportOptionsDialog::getClassesForStartNumber(const int number, const in

QString ReportOptionsDialog::sqlWhereExpression(const ReportOptionsDialog::Options &opts,const int stage_id)
{
QStringList conditions;
if (opts.startNumber() > 0) {
qf::core::String s = getClassesForStartNumber(opts.startNumber(),stage_id);
QStringList sl = s.splitAndTrim(',');
conditions << QString("classes.name IN('%2')").arg(sl.join("','"));
}
if(opts.isUseClassFilter()) {
QString filter_str = opts.classFilter();
if(!filter_str.isEmpty()) {
FilterType filter_type = (FilterType)opts.classFilterType();
if(filter_type == FilterType::RegExp) {
QString filter_operator = opts.isInvertClassFilter()? "!~*": "~*";
QString ret = "classes.name %1 '%2'";
ret = ret.arg(filter_operator).arg(filter_str);
return ret;
conditions << ret.arg(filter_operator).arg(filter_str);
}
else if(filter_type == FilterType::WildCard) {
filter_str.replace('*', '%').replace('?', '_');
QString filter_operator = opts.isInvertClassFilter()? "NOT LIKE": "LIKE";
QString ret = "classes.name %1 '%2'";
ret = ret.arg(filter_operator).arg(filter_str);
return ret;
conditions << ret.arg(filter_operator).arg(filter_str);
}
else if(filter_type == FilterType::ClassName) {
qf::core::String s = filter_str;
QStringList sl = s.splitAndTrim(',');
QString filter_operator = opts.isInvertClassFilter()? "NOT IN": "IN";
QString ret = "classes.name %1('%2')";
ret = ret.arg(filter_operator).arg(sl.join("','"));
return ret;
conditions << ret.arg(filter_operator).arg(sl.join("','"));
}
}

}
else if (opts.isUseClassStartSelectionFilter()) {
qf::core::String s = getClassesForStartNumber(opts.classStartNumber(),stage_id);
QStringList sl = s.splitAndTrim(',');
QString ret = QString("classes.name IN('%2')").arg(sl.join("','"));
return ret;
}
return QString();
return conditions.isEmpty()? "": "(" + conditions.join(") AND (") + ")";
}
/*
void ReportOptionsDialog::showEvent(QShowEvent *event)
Expand Down Expand Up @@ -253,9 +239,7 @@ void ReportOptionsDialog::setOptions(const ReportOptionsDialog::Options &options
ui->btWildCard->setChecked(filter_type == FilterType::WildCard);
ui->btRegExp->setChecked(filter_type == FilterType::RegExp);
ui->btClassNames->setChecked(filter_type == FilterType::ClassName);
if (ui->grpClassStartSelection->isEnabled() && ui->grpClassStartSelection->isVisible())
ui->grpClassStartSelection->setChecked(options.isUseClassStartSelectionFilter());
auto index = ui->cbxStartNumber->findData(options.classStartNumber());
auto index = ui->cbxStartNumber->findData(options.startNumber());
ui->cbxStartNumber->setCurrentIndex(index);
ui->chkStartOpts_PrintVacants->setChecked(options.isStartListPrintVacants());
ui->chkStartOpts_PrintStartNumbers->setChecked(options.isStartListPrintStartNumbers());
Expand Down Expand Up @@ -289,8 +273,7 @@ ReportOptionsDialog::Options ReportOptionsDialog::options() const
opts.setUseClassFilter(ui->grpClassFilter->isChecked());
opts.setInvertClassFilter(ui->chkClassFilterDoesntMatch->isChecked());
opts.setClassFilter(ui->edFilter->text());
opts.setClassStartNumber(ui->cbxStartNumber->currentData().toInt());
opts.setUseClassStartSelectionFilter(ui->grpClassStartSelection->isChecked());
opts.setStartNumber(ui->cbxStartNumber->currentData().toInt());
FilterType filter_type = ui->btWildCard->isChecked()? FilterType::WildCard: ui->btRegExp->isChecked()? FilterType::RegExp: FilterType::ClassName;
opts.setClassFilterType((int)filter_type);
opts.setStartListPrintVacants(isStartListPrintVacants());
Expand Down
8 changes: 3 additions & 5 deletions libquickevent/libquickeventgui/src/reportoptionsdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class QUICKEVENTGUI_DECL_EXPORT ReportOptionsDialog : public QDialog, public qf:
Q_PROPERTY(bool resultOptionsVisible READ isResultOptionsVisible WRITE setResultOptionsVisible NOTIFY resultOptionsVisibleChanged)
Q_PROPERTY(bool startTimeFormatVisible READ isStartTimeFormatVisible WRITE setStartTimeFormatVisible NOTIFY startTimeFormatVisibleChanged)
Q_PROPERTY(bool startlistOrderFirstByVisible READ isStartlistOrderFirstByVisible WRITE setStartlistOrderFirstByVisible NOTIFY startlistOrderFirstByVisibleChanged)
Q_PROPERTY(bool classStartSelectionVisible READ isClassStartSelectionVisible WRITE setClassStartSelectionVisible NOTIFY classStartSelectionVisibleChanged)
//Q_PROPERTY(bool classStartSelectionVisible READ isClassStartSelectionVisible WRITE setClassStartSelectionVisible NOTIFY classStartSelectionVisibleChanged)

QF_PROPERTY_BOOL_IMPL2(c, C, lassFilterVisible, true)
QF_PROPERTY_BOOL_IMPL2(s, S, tartListOptionsVisible, false)
Expand All @@ -45,7 +45,6 @@ class QUICKEVENTGUI_DECL_EXPORT ReportOptionsDialog : public QDialog, public qf:
QF_PROPERTY_BOOL_IMPL2(r, R, esultOptionsVisible, false)
QF_PROPERTY_BOOL_IMPL2(s, S, tartTimeFormatVisible, false)
QF_PROPERTY_BOOL_IMPL2(s, S, tartlistOrderFirstByVisible, false)
QF_PROPERTY_BOOL_IMPL2(c, C, lassStartSelectionVisible, false)
private:
using Super = QDialog;
public:
Expand Down Expand Up @@ -76,8 +75,7 @@ class QUICKEVENTGUI_DECL_EXPORT ReportOptionsDialog : public QDialog, public qf:
QF_VARIANTMAP_FIELD2(bool, isR, setR, esultExcludeDisq, false)
QF_VARIANTMAP_FIELD2(int, s, setS, tartTimeFormat, 0)
QF_VARIANTMAP_FIELD2(int, s, setS, tartlistOrderFirstBy, 0)
QF_VARIANTMAP_FIELD(bool, is, set, UseClassStartSelectionFilter)
QF_VARIANTMAP_FIELD2(int, c, setC, lassStartNumber, 0)
QF_VARIANTMAP_FIELD2(int, s, setS, tartNumber, 0)
public:
Options(const QVariantMap &o = QVariantMap()) : QVariantMap(o) {}
};
Expand All @@ -103,7 +101,7 @@ class QUICKEVENTGUI_DECL_EXPORT ReportOptionsDialog : public QDialog, public qf:
void loadPersistentSettings(const Options &default_options);
Q_SLOT void loadPersistentSettings();
Q_SLOT void savePersistentSettings();
Q_SLOT void resetPersistentSettings();
Q_SLOT void resetPersistentSettings();

void setClassNamesFilter(const QStringList &class_names);

Expand Down
Loading

0 comments on commit 97517c3

Please sign in to comment.