diff --git a/quickevent/app/quickevent/plugins/Event/src/services/emmaclient.cpp b/quickevent/app/quickevent/plugins/Event/src/services/emmaclient.cpp index fb368bd47..06819359e 100644 --- a/quickevent/app/quickevent/plugins/Event/src/services/emmaclient.cpp +++ b/quickevent/app/quickevent/plugins/Event/src/services/emmaclient.cpp @@ -217,7 +217,7 @@ void EmmaClient::exportStartListIofXml3() QString str = is_relays ? getPlugin()->startListIofXml30() - : getPlugin()->startListStageIofXml30(current_stage); + : getPlugin()->startListStageIofXml30(current_stage, false); QFile f(file_name); if(f.open(QFile::WriteOnly)) { diff --git a/quickevent/app/quickevent/plugins/Event/src/services/ofeed/ofeedclient.cpp b/quickevent/app/quickevent/plugins/Event/src/services/ofeed/ofeedclient.cpp index cb2bdaf86..3fc09ff1e 100644 --- a/quickevent/app/quickevent/plugins/Event/src/services/ofeed/ofeedclient.cpp +++ b/quickevent/app/quickevent/plugins/Event/src/services/ofeed/ofeedclient.cpp @@ -92,7 +92,7 @@ void OFeedClient::exportStartListIofXml3(std::function on_success) QString str = is_relays ? getPlugin()->startListIofXml30() - : getPlugin()->startListStageIofXml30(current_stage); + : getPlugin()->startListStageIofXml30(current_stage, false); sendFile("start list upload", "/rest/v1/upload/iof", str, on_success); } diff --git a/quickevent/app/quickevent/plugins/Event/src/services/oresultsclient.cpp b/quickevent/app/quickevent/plugins/Event/src/services/oresultsclient.cpp index 0bf6a6f46..a66a7d30a 100644 --- a/quickevent/app/quickevent/plugins/Event/src/services/oresultsclient.cpp +++ b/quickevent/app/quickevent/plugins/Event/src/services/oresultsclient.cpp @@ -76,7 +76,7 @@ void OResultsClient::exportStartListIofXml3(std::function on_success) QString str = is_relays ? getPlugin()->startListIofXml30() - : getPlugin()->startListStageIofXml30(current_stage); + : getPlugin()->startListStageIofXml30(current_stage, false); sendFile("start list upload", "/start-lists", str, on_success); } diff --git a/quickevent/app/quickevent/plugins/Event/src/services/qx/qxclientservice.cpp b/quickevent/app/quickevent/plugins/Event/src/services/qx/qxclientservice.cpp index c88dd183f..8916767bf 100644 --- a/quickevent/app/quickevent/plugins/Event/src/services/qx/qxclientservice.cpp +++ b/quickevent/app/quickevent/plugins/Event/src/services/qx/qxclientservice.cpp @@ -203,7 +203,7 @@ void QxClientService::postStartListIofXml3(QObject *context, std::functioncurrentStageId(); bool is_relays = ep->eventConfig()->isRelays(); if (!is_relays) { - auto xml = getPlugin()->startListStageIofXml30(current_stage); + auto xml = getPlugin()->startListStageIofXml30(current_stage, false); uploadSpecFile(SpecFile::StartListIofXml3, xml.toUtf8(), context, call_back); } } @@ -538,6 +538,7 @@ EventInfo QxClientService::eventInfo() const return ei; } +namespace { auto query_to_json_csv(QSqlQuery &q) { QVariantList csv; @@ -560,6 +561,7 @@ auto query_to_json_csv(QSqlQuery &q) } return csv; } +} int QxClientService::currentConnectionId() { diff --git a/quickevent/app/quickevent/plugins/Relays/src/relaysplugin.cpp b/quickevent/app/quickevent/plugins/Relays/src/relaysplugin.cpp index a2381e38d..5072e0d31 100644 --- a/quickevent/app/quickevent/plugins/Relays/src/relaysplugin.cpp +++ b/quickevent/app/quickevent/plugins/Relays/src/relaysplugin.cpp @@ -832,7 +832,7 @@ QString RelaysPlugin::startListIofXml30() { QDateTime start00 = getPlugin()->stageStartDateTime(1); qfDebug() << "creating table"; - qf::core::utils::TreeTable tt_classes = startListByClassesTableData(QString(),false); + qf::core::utils::TreeTable tt_classes = startListByClassesTableData(QString(), false); QVariantList start_list{ "StartList", QVariantMap{ diff --git a/quickevent/app/quickevent/plugins/Runs/src/runsplugin.cpp b/quickevent/app/quickevent/plugins/Runs/src/runsplugin.cpp index b909e2457..c827ac46f 100644 --- a/quickevent/app/quickevent/plugins/Runs/src/runsplugin.cpp +++ b/quickevent/app/quickevent/plugins/Runs/src/runsplugin.cpp @@ -2622,14 +2622,12 @@ QString RunsPlugin::getClubAbbrFromName(QString name) return ""; } -QString RunsPlugin::startListStageIofXml30(int stage_id) +QString RunsPlugin::startListStageIofXml30(int stage_id, bool with_vacants) { QDateTime start00 = getPlugin()->stageStartDateTime(stage_id); Event::EventConfig *event_config = getPlugin()->eventConfig(); - bool last_handicap_stage = event_config->stageCount() == selectedStageId() && event_config->isHandicap(); - bool print_vacants = !last_handicap_stage; //console.debug("print_vacants", print_vacants); - auto tt1 = startListClassesTable("", print_vacants, quickevent::gui::ReportOptionsDialog::StartTimeFormat::RelativeToClassStart); + auto tt1 = startListClassesTable("", with_vacants, quickevent::gui::ReportOptionsDialog::StartTimeFormat::RelativeToClassStart); bool is_iof_race = event_config->isIofRace(); int iof_xml_race_number = event_config->iofXmlRaceNumber(); @@ -2652,7 +2650,7 @@ QString RunsPlugin::startListStageIofXml30(int stage_id) QVariantList{"Time", start00.time().toString(Qt::ISODate)} } ); - append_list(xml_event, + append_list(xml_event, QVariantList{"Official", QVariantMap{{"type", "Director"}}, QVariantList{"Person", @@ -2663,7 +2661,7 @@ QString RunsPlugin::startListStageIofXml30(int stage_id) }, } ); - append_list(xml_event, + append_list(xml_event, QVariantList{"Official", QVariantMap{{"type", "MainReferee"}}, QVariantList{"Person", @@ -2764,14 +2762,14 @@ QString RunsPlugin::startListStageIofXml30(int stage_id) return qf::core::utils::HtmlUtils::fromXmlList(xml_root, opts); } -bool RunsPlugin::exportStartListStageIofXml30(int stage_id, const QString &file_name) +bool RunsPlugin::exportStartListStageIofXml30(int stage_id, const QString &file_name, bool with_vacants) { QFile f(file_name); if(!f.open(QIODevice::WriteOnly)) { qfError() << "Cannot open file" << f.fileName() << "for writing."; return false; } - QString str = startListStageIofXml30(stage_id); + QString str = startListStageIofXml30(stage_id, with_vacants); f.write(str.toUtf8()); qfInfo() << "exported:" << file_name; return true; diff --git a/quickevent/app/quickevent/plugins/Runs/src/runsplugin.h b/quickevent/app/quickevent/plugins/Runs/src/runsplugin.h index b2891e68f..6238a56dd 100644 --- a/quickevent/app/quickevent/plugins/Runs/src/runsplugin.h +++ b/quickevent/app/quickevent/plugins/Runs/src/runsplugin.h @@ -74,7 +74,7 @@ class RunsPlugin : public qf::gui::framework::Plugin Q_INVOKABLE QVariantMap printAwardsOptionsWithDialog(const QVariantMap &opts); - bool exportStartListStageIofXml30(int stage_id, const QString &file_name); + bool exportStartListStageIofXml30(int stage_id, const QString &file_name, bool with_vacants); bool exportStartListCurrentStageCsvSime(const QString &file_name, bool bibs, QString sql_where); bool exportStartListCurrentStageTvGraphics(const QString &file_name); @@ -121,7 +121,7 @@ class RunsPlugin : public qf::gui::framework::Plugin QString export_resultsHtmlStage(bool with_laps = false); void export_resultsHtmlStageWithLaps(); void export_resultsHtmlNStages(); - QString startListStageIofXml30(int stage_id); + QString startListStageIofXml30(int stage_id, bool with_vacants); QString resultsIofXml30Stage(int stage_id); int competitorForRun(int run_id); private: diff --git a/quickevent/app/quickevent/plugins/Runs/src/runswidget.cpp b/quickevent/app/quickevent/plugins/Runs/src/runswidget.cpp index 7b19effd1..b42403dc1 100644 --- a/quickevent/app/quickevent/plugins/Runs/src/runswidget.cpp +++ b/quickevent/app/quickevent/plugins/Runs/src/runswidget.cpp @@ -289,7 +289,12 @@ void RunsWidget::settleDownInPartWidget(::PartWidget *part_widget) { { auto *a = new qfw::Action(tr("&IOF-XML 3.0")); - connect(a, &qfw::Action::triggered, this, &RunsWidget::export_startList_stage_iofxml30); + connect(a, &qfw::Action::triggered, this, [this]() { export_startList_stage_iofxml30(false); }); + m_export_stlist_xml->addActionInto(a); + } + { + auto *a = new qfw::Action(tr("IOF-XML 3.0 with &vacants")); + connect(a, &qfw::Action::triggered, this, [this]() { export_startList_stage_iofxml30(true); }); m_export_stlist_xml->addActionInto(a); } } @@ -986,13 +991,13 @@ int RunsWidget::selectedStageId() return getPlugin()->selectedStageId(); } -void RunsWidget::export_startList_stage_iofxml30() +void RunsWidget::export_startList_stage_iofxml30(bool with_vacants) { int stage_id = selectedStageId(); QString fn = getSaveFileName(Event::START_LIST_IOFXML3_FILE, stage_id); if(fn.isEmpty()) return; - getPlugin()->exportStartListStageIofXml30(stage_id, fn); + getPlugin()->exportStartListStageIofXml30(stage_id, fn, with_vacants); } diff --git a/quickevent/app/quickevent/plugins/Runs/src/runswidget.h b/quickevent/app/quickevent/plugins/Runs/src/runswidget.h index 526e97d0a..c37820ada 100644 --- a/quickevent/app/quickevent/plugins/Runs/src/runswidget.h +++ b/quickevent/app/quickevent/plugins/Runs/src/runswidget.h @@ -47,7 +47,7 @@ class RunsWidget : public QFrame Q_INVOKABLE int selectedStageId(); public: - void export_startList_stage_iofxml30(); + void export_startList_stage_iofxml30(bool with_vacants); void export_startList_stage_csv_sime(); void export_startList_stage_tv_graphics(); diff --git a/quickevent/app/quickevent/src/appversion.h b/quickevent/app/quickevent/src/appversion.h index 5f48e9583..0da19b859 100644 --- a/quickevent/app/quickevent/src/appversion.h +++ b/quickevent/app/quickevent/src/appversion.h @@ -1,4 +1,4 @@ #pragma once -#define APP_VERSION "3.4.19" +#define APP_VERSION "3.4.20"