- now parsing discipline and status of category
This commit is contained in:
parent
035a2edcdf
commit
9d8e1c7c42
13 changed files with 199 additions and 63 deletions
|
@ -38,6 +38,7 @@ SOURCES += \
|
||||||
sources/brproviderdr.cpp \
|
sources/brproviderdr.cpp \
|
||||||
sources/brprovidervl.cpp \
|
sources/brprovidervl.cpp \
|
||||||
sources/brresult.cpp \
|
sources/brresult.cpp \
|
||||||
|
sources/brresultdetails.cpp \
|
||||||
sources/brround.cpp \
|
sources/brround.cpp \
|
||||||
sources/brseason.cpp \
|
sources/brseason.cpp \
|
||||||
sources/brserverconnector.cpp \
|
sources/brserverconnector.cpp \
|
||||||
|
@ -58,6 +59,7 @@ HEADERS += \
|
||||||
headers/brproviderdr.h \
|
headers/brproviderdr.h \
|
||||||
headers/brprovidervl.h \
|
headers/brprovidervl.h \
|
||||||
headers/brresult.h \
|
headers/brresult.h \
|
||||||
|
headers/brresultdetails.h \
|
||||||
headers/brround.h \
|
headers/brround.h \
|
||||||
headers/brseason.h \
|
headers/brseason.h \
|
||||||
headers/brserverconnector.h \
|
headers/brserverconnector.h \
|
||||||
|
|
|
@ -13,15 +13,34 @@ class BRCategory : public BRWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(QString name READ getName NOTIFY metadataChanged)
|
Q_PROPERTY(QString name READ getName NOTIFY metadataChanged)
|
||||||
|
Q_PROPERTY(BRDiscipline discipline READ getDiscipline NOTIFY metadataChanged)
|
||||||
|
Q_PROPERTY(BRCategoryStatus status READ getStatus NOTIFY metadataChanged)
|
||||||
Q_PROPERTY(BRRound* currentRound READ getCurrentRound WRITE setCurrentRound NOTIFY currentRoundChanged)
|
Q_PROPERTY(BRRound* currentRound READ getCurrentRound WRITE setCurrentRound NOTIFY currentRoundChanged)
|
||||||
Q_PROPERTY(QList<QObject*> rounds READ getRoundsQML NOTIFY roundsChanged)
|
Q_PROPERTY(QList<QObject*> rounds READ getRoundsQML NOTIFY roundsChanged)
|
||||||
public:
|
public:
|
||||||
friend class BRProvider;
|
friend class BRProvider;
|
||||||
friend class BRCompetition;
|
friend class BRCompetition;
|
||||||
|
|
||||||
|
enum BRDiscipline {
|
||||||
|
UnknownDiscipline = -1,
|
||||||
|
Speed,
|
||||||
|
Lead,
|
||||||
|
Boulder,
|
||||||
|
Combined
|
||||||
|
};
|
||||||
|
|
||||||
|
enum BRCategoryStatus {
|
||||||
|
UnknownStatus = -1,
|
||||||
|
Registration,
|
||||||
|
Startlist,
|
||||||
|
Result
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const BRCategory* category;
|
const BRCategory* category;
|
||||||
QString name;
|
QString name;
|
||||||
|
BRDiscipline discipline;
|
||||||
|
BRCategoryStatus status;
|
||||||
BRRound* currentRound;
|
BRRound* currentRound;
|
||||||
QList<BRRound*> rounds;
|
QList<BRRound*> rounds;
|
||||||
} BRCategoryData;
|
} BRCategoryData;
|
||||||
|
@ -29,6 +48,8 @@ public:
|
||||||
Q_INVOKABLE BRWidget::BRWidgetStatusCode load() override;
|
Q_INVOKABLE BRWidget::BRWidgetStatusCode load() override;
|
||||||
Q_INVOKABLE BRCompetition* getCompetition() const;
|
Q_INVOKABLE BRCompetition* getCompetition() const;
|
||||||
Q_INVOKABLE QString getName();
|
Q_INVOKABLE QString getName();
|
||||||
|
Q_INVOKABLE BRDiscipline getDiscipline();
|
||||||
|
Q_INVOKABLE BRCategoryStatus getStatus();
|
||||||
Q_INVOKABLE BRRound* getCurrentRound() const;
|
Q_INVOKABLE BRRound* getCurrentRound() const;
|
||||||
Q_INVOKABLE void setCurrentRound(BRRound* round);
|
Q_INVOKABLE void setCurrentRound(BRRound* round);
|
||||||
Q_INVOKABLE QList<BRRound*> getRounds() const;
|
Q_INVOKABLE QList<BRRound*> getRounds() const;
|
||||||
|
@ -44,6 +65,8 @@ private:
|
||||||
BRRound* currentRound;
|
BRRound* currentRound;
|
||||||
|
|
||||||
QString name;
|
QString name;
|
||||||
|
BRDiscipline discipline;
|
||||||
|
BRCategoryStatus status;
|
||||||
QList<BRRound*> rounds;
|
QList<BRRound*> rounds;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
|
@ -15,7 +15,6 @@ class BRCompetition : public BRWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(QString name READ getName NOTIFY metadataChanged)
|
Q_PROPERTY(QString name READ getName NOTIFY metadataChanged)
|
||||||
Q_PROPERTY(QString discipline READ getDiscipline NOTIFY metadataChanged)
|
|
||||||
Q_PROPERTY(QDate startDate READ getStartDate NOTIFY metadataChanged)
|
Q_PROPERTY(QDate startDate READ getStartDate NOTIFY metadataChanged)
|
||||||
Q_PROPERTY(QDate endDate READ getEndDate NOTIFY metadataChanged)
|
Q_PROPERTY(QDate endDate READ getEndDate NOTIFY metadataChanged)
|
||||||
Q_PROPERTY(QString dateSpan READ getDateSpan NOTIFY metadataChanged)
|
Q_PROPERTY(QString dateSpan READ getDateSpan NOTIFY metadataChanged)
|
||||||
|
@ -31,18 +30,9 @@ public:
|
||||||
friend class BRProvider;
|
friend class BRProvider;
|
||||||
friend class BRLeague;
|
friend class BRLeague;
|
||||||
|
|
||||||
enum BRDiscipline {
|
|
||||||
Unknown = -1,
|
|
||||||
Boulder,
|
|
||||||
Lead,
|
|
||||||
Speed
|
|
||||||
};
|
|
||||||
Q_ENUM(BRDiscipline)
|
|
||||||
|
|
||||||
typedef struct BRCompetitionData {
|
typedef struct BRCompetitionData {
|
||||||
const BRCompetition* competition;
|
const BRCompetition* competition;
|
||||||
QString name;
|
QString name;
|
||||||
BRDiscipline discipline;
|
|
||||||
QDate startDate;
|
QDate startDate;
|
||||||
QDate endDate;
|
QDate endDate;
|
||||||
QUrl eventWebsiteUrl;
|
QUrl eventWebsiteUrl;
|
||||||
|
@ -56,7 +46,6 @@ public:
|
||||||
Q_INVOKABLE BRWidget::BRWidgetStatusCode load() override;
|
Q_INVOKABLE BRWidget::BRWidgetStatusCode load() override;
|
||||||
|
|
||||||
Q_INVOKABLE QString getName();
|
Q_INVOKABLE QString getName();
|
||||||
Q_INVOKABLE BRDiscipline getDiscipline();
|
|
||||||
Q_INVOKABLE QDate getStartDate();
|
Q_INVOKABLE QDate getStartDate();
|
||||||
Q_INVOKABLE QDate getEndDate();
|
Q_INVOKABLE QDate getEndDate();
|
||||||
Q_INVOKABLE QString getDateSpan();
|
Q_INVOKABLE QString getDateSpan();
|
||||||
|
@ -80,7 +69,6 @@ private:
|
||||||
|
|
||||||
// metadata
|
// metadata
|
||||||
QString name;
|
QString name;
|
||||||
BRDiscipline discipline;
|
|
||||||
QDate startDate;
|
QDate startDate;
|
||||||
QDate endDate;
|
QDate endDate;
|
||||||
BRLeague* league;
|
BRLeague* league;
|
||||||
|
|
|
@ -22,7 +22,7 @@ protected:
|
||||||
BRLeague::BRLeagueData parseLeagueData(QVariantMap leagueProperties, QVariantMap rawData);
|
BRLeague::BRLeagueData parseLeagueData(QVariantMap leagueProperties, QVariantMap rawData);
|
||||||
|
|
||||||
BRWidget::BRWidgetStatusCode getWidgetData(BRCompetition::BRCompetitionData* competitionData) override;
|
BRWidget::BRWidgetStatusCode getWidgetData(BRCompetition::BRCompetitionData* competitionData) override;
|
||||||
BRCompetition::BRCompetitionData parseCompetitionData(QVariantMap rawData, BRWidget::BRFederation federation);
|
BRCompetition::BRCompetitionData parseCompetitionData(QVariantMap rawData, QVariantList globalCategoriesList, BRWidget::BRFederation federation);
|
||||||
void parseCompetitionData(BRCompetition::BRCompetitionData* competitionData, QVariantMap rawData, BRWidget::BRFederation federation);
|
void parseCompetitionData(BRCompetition::BRCompetitionData* competitionData, QVariantMap rawData, BRWidget::BRFederation federation);
|
||||||
|
|
||||||
BRCup::BRCupData parseCupData(QVariantList categoriesList, QVariantMap rawData, BRWidget::BRFederation federation);
|
BRCup::BRCupData parseCupData(QVariantList categoriesList, QVariantMap rawData, BRWidget::BRFederation federation);
|
||||||
|
|
|
@ -21,9 +21,9 @@ protected:
|
||||||
void parseLeagueData(BRLeague::BRLeagueData* leagueData, QVariantMap rawData);
|
void parseLeagueData(BRLeague::BRLeagueData* leagueData, QVariantMap rawData);
|
||||||
|
|
||||||
BRWidget::BRWidgetStatusCode getWidgetData(BRCompetition::BRCompetitionData* competitionData) override;
|
BRWidget::BRWidgetStatusCode getWidgetData(BRCompetition::BRCompetitionData* competitionData) override;
|
||||||
BRCompetition::BRCompetitionData parseCompetitionData(QVariantMap rawData, BRWidget::BRFederation federation);
|
BRCompetition::BRCompetitionData parseCompetitionData(QVariantMap rawData, QVariantList globalCategoriesList, BRWidget::BRFederation federation);
|
||||||
|
|
||||||
BRCup::BRCupData parseCupData(QVariantMap rawData);
|
BRCup::BRCupData parseCupData(QVariantMap rawData, QVariantList globalCategoriesList);
|
||||||
|
|
||||||
BRCategory::BRCategoryData parseCategoryData(QVariantMap rawData);
|
BRCategory::BRCategoryData parseCategoryData(QVariantMap rawData);
|
||||||
void parseCategoryData(BRCategory::BRCategoryData* categoryData, QVariantMap rawData);
|
void parseCategoryData(BRCategory::BRCategoryData* categoryData, QVariantMap rawData);
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
#include "brwidget.h"
|
#include "brwidget.h"
|
||||||
|
#include "brresultdetails.h"
|
||||||
|
|
||||||
class BRAthlete;
|
class BRAthlete;
|
||||||
|
|
||||||
|
@ -11,6 +12,7 @@ class BRResult : public BRWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(int rank READ getRank NOTIFY metadataChanged)
|
Q_PROPERTY(int rank READ getRank NOTIFY metadataChanged)
|
||||||
|
Q_PROPERTY(BRResultDetails* details READ getDetails NOTIFY metadataChanged)
|
||||||
Q_PROPERTY(BRAthlete* athlete READ getAthlete NOTIFY metadataChanged)
|
Q_PROPERTY(BRAthlete* athlete READ getAthlete NOTIFY metadataChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -20,12 +22,14 @@ public:
|
||||||
const BRResult* result;
|
const BRResult* result;
|
||||||
|
|
||||||
int rank;
|
int rank;
|
||||||
|
BRResultDetails* data;
|
||||||
BRAthlete* athlete;
|
BRAthlete* athlete;
|
||||||
} BRResultData;
|
} BRResultData;
|
||||||
|
|
||||||
BRWidget::BRWidgetStatusCode load() override;
|
BRWidget::BRWidgetStatusCode load() override;
|
||||||
|
|
||||||
Q_INVOKABLE int getRank() const;
|
Q_INVOKABLE int getRank() const;
|
||||||
|
Q_INVOKABLE BRResultDetails* getDetails() const;
|
||||||
Q_INVOKABLE BRAthlete* getAthlete() const;
|
Q_INVOKABLE BRAthlete* getAthlete() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -33,6 +37,7 @@ private:
|
||||||
void setData(BRResultData data);
|
void setData(BRResultData data);
|
||||||
|
|
||||||
int rank;
|
int rank;
|
||||||
|
BRResultDetails* details;
|
||||||
BRAthlete* athlete;
|
BRAthlete* athlete;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
13
headers/brresultdetails.h
Normal file
13
headers/brresultdetails.h
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#ifndef BRRESULTDATA_H
|
||||||
|
#define BRRESULTDATA_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
class BRResultDetails : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
BRResultDetails();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // BRRESULTDATA_H
|
|
@ -5,6 +5,7 @@
|
||||||
BRCategory::BRCategory(BRProvider* provider, BRWidget::BRFederation federation, int id, BRCategoryData initialData) : BRWidget(provider, federation, id)
|
BRCategory::BRCategory(BRProvider* provider, BRWidget::BRFederation federation, int id, BRCategoryData initialData) : BRWidget(provider, federation, id)
|
||||||
{
|
{
|
||||||
this->currentRound = nullptr;
|
this->currentRound = nullptr;
|
||||||
|
this->discipline = UnknownDiscipline;
|
||||||
this->setData(initialData);
|
this->setData(initialData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +17,14 @@ QString BRCategory::getName() {
|
||||||
return this->name;
|
return this->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BRCategory::BRDiscipline BRCategory::getDiscipline() {
|
||||||
|
return this->discipline;
|
||||||
|
}
|
||||||
|
|
||||||
|
BRCategory::BRCategoryStatus BRCategory::getStatus() {
|
||||||
|
return this->status;
|
||||||
|
}
|
||||||
|
|
||||||
BRRound* BRCategory::getCurrentRound() const {
|
BRRound* BRCategory::getCurrentRound() const {
|
||||||
return this->currentRound;
|
return this->currentRound;
|
||||||
}
|
}
|
||||||
|
@ -40,6 +49,8 @@ BRCategory::BRCategoryData BRCategory::getData() {
|
||||||
BRCategory::BRCategoryData data {
|
BRCategory::BRCategoryData data {
|
||||||
this,
|
this,
|
||||||
this->name,
|
this->name,
|
||||||
|
this->discipline,
|
||||||
|
this->status,
|
||||||
this->currentRound,
|
this->currentRound,
|
||||||
this->rounds
|
this->rounds
|
||||||
};
|
};
|
||||||
|
@ -49,6 +60,8 @@ BRCategory::BRCategoryData BRCategory::getData() {
|
||||||
|
|
||||||
void BRCategory::setData(BRCategoryData data) {
|
void BRCategory::setData(BRCategoryData data) {
|
||||||
this->name = data.name;
|
this->name = data.name;
|
||||||
|
this->discipline = data.discipline;
|
||||||
|
this->status = data.status;
|
||||||
emit this->metadataChanged();
|
emit this->metadataChanged();
|
||||||
|
|
||||||
if(this->currentRound != data.currentRound) {
|
if(this->currentRound != data.currentRound) {
|
||||||
|
|
|
@ -21,10 +21,6 @@ QString BRCompetition::getName() {
|
||||||
return this->name;
|
return this->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
BRCompetition::BRDiscipline BRCompetition::getDiscipline() {
|
|
||||||
return this->discipline;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDate BRCompetition::getStartDate() {
|
QDate BRCompetition::getStartDate() {
|
||||||
return this->startDate;
|
return this->startDate;
|
||||||
}
|
}
|
||||||
|
@ -105,7 +101,6 @@ BRWidget::BRWidgetStatusCode BRCompetition::load() {
|
||||||
BRCompetitionData newData {
|
BRCompetitionData newData {
|
||||||
this,
|
this,
|
||||||
this->name,
|
this->name,
|
||||||
this->discipline,
|
|
||||||
this->startDate,
|
this->startDate,
|
||||||
this->endDate,
|
this->endDate,
|
||||||
this->eventWebsiteUrl,
|
this->eventWebsiteUrl,
|
||||||
|
@ -128,7 +123,6 @@ BRWidget::BRWidgetStatusCode BRCompetition::load() {
|
||||||
|
|
||||||
void BRCompetition::setData(BRCompetition::BRCompetitionData data) {
|
void BRCompetition::setData(BRCompetition::BRCompetitionData data) {
|
||||||
this->name = data.name;
|
this->name = data.name;
|
||||||
this->discipline = data.discipline;
|
|
||||||
this->startDate = data.startDate;
|
this->startDate = data.startDate;
|
||||||
this->endDate = data.endDate;
|
this->endDate = data.endDate;
|
||||||
this->eventWebsiteUrl = data.eventWebsiteUrl;
|
this->eventWebsiteUrl = data.eventWebsiteUrl;
|
||||||
|
|
|
@ -182,7 +182,7 @@ BRLeague::BRLeagueData BRProviderDr::parseLeagueData(QVariantMap leaguePropertie
|
||||||
|
|
||||||
// check if this competition is part of this league
|
// check if this competition is part of this league
|
||||||
if(leagueProperties["leagueIDs"].toList().contains(competitionMap["cat_id"].toInt())) {
|
if(leagueProperties["leagueIDs"].toList().contains(competitionMap["cat_id"].toInt())) {
|
||||||
BRCompetition* competition = this->getCompetition(federation, competitionVar.toMap()["WetId"].toInt(), this->parseCompetitionData(competitionMap, federation));
|
BRCompetition* competition = this->getCompetition(federation, competitionVar.toMap()["WetId"].toInt(), this->parseCompetitionData(competitionMap, rawData["cats"].toList(), federation));
|
||||||
data.competitions.append(competition);
|
data.competitions.append(competition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -233,22 +233,14 @@ BRWidget::BRWidgetStatusCode BRProviderDr::getWidgetData(BRCompetition::BRCompet
|
||||||
return BRWidget::Success;
|
return BRWidget::Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
BRCompetition::BRCompetitionData BRProviderDr::parseCompetitionData(QVariantMap rawData, BRWidget::BRFederation federation) {
|
BRCompetition::BRCompetitionData BRProviderDr::parseCompetitionData(QVariantMap rawData, QVariantList globalCategoriesList, BRWidget::BRFederation federation) {
|
||||||
// Load competition data from calendar
|
// Load competition data from calendar
|
||||||
BRCompetition::BRCompetitionData data;
|
BRCompetition::BRCompetitionData data;
|
||||||
QMap<QString, BRCompetition::BRDiscipline> disciplineTranslations = {
|
|
||||||
{"boulder", BRCompetition::Boulder},
|
|
||||||
{"lead", BRCompetition::Lead},
|
|
||||||
{"speed", BRCompetition::Speed}
|
|
||||||
};
|
|
||||||
|
|
||||||
data.name = rawData["name"].toString();
|
data.name = rawData["name"].toString();
|
||||||
|
|
||||||
qDebug() << "-- Parsing competition: " << data.name;
|
qDebug() << "-- Parsing competition: " << data.name;
|
||||||
|
|
||||||
if(disciplineTranslations.contains(rawData["discipline"].toString()))
|
|
||||||
data.discipline = disciplineTranslations[rawData["discipline"].toString()];
|
|
||||||
|
|
||||||
if(rawData.contains("date"))
|
if(rawData.contains("date"))
|
||||||
data.startDate = QDate::fromString(rawData["date"].toString(), "yyyy-MM-dd");
|
data.startDate = QDate::fromString(rawData["date"].toString(), "yyyy-MM-dd");
|
||||||
if(rawData.contains("date_end"))
|
if(rawData.contains("date_end"))
|
||||||
|
@ -273,11 +265,30 @@ BRCompetition::BRCompetitionData BRProviderDr::parseCompetitionData(QVariantMap
|
||||||
// load categories
|
// load categories
|
||||||
QVariantList categoriesList = rawData["cats"].toList();
|
QVariantList categoriesList = rawData["cats"].toList();
|
||||||
data.categories.clear();
|
data.categories.clear();
|
||||||
|
|
||||||
for(QVariant categoryVar : categoriesList) {
|
for(QVariant categoryVar : categoriesList) {
|
||||||
BRCategory::BRCategoryData categoryData;
|
QVariantMap categoryMap = categoryVar.toMap();
|
||||||
categoryData.currentRound = nullptr;
|
|
||||||
categoryData.name = categoryVar.toMap()["name"].toString();
|
// parse discipline
|
||||||
BRCategory* category = this->getCategory(federation, categoryVar.toMap()["GrpId"].toInt(), categoryData);
|
QString discipline;
|
||||||
|
if(rawData.contains("discipline"))
|
||||||
|
// all categories have the same discipline
|
||||||
|
discipline = rawData["discipline"].toString();
|
||||||
|
else
|
||||||
|
// categories discipline may differ
|
||||||
|
// search category in global categories list
|
||||||
|
for(QVariant globalCategoryVar : globalCategoriesList) {
|
||||||
|
QVariantMap globalCategoryMap = globalCategoryVar.toMap();
|
||||||
|
if(categoryMap["GrpId"].toInt() == globalCategoryMap["GrpId"].toInt()) {
|
||||||
|
// TODO: sex / gender
|
||||||
|
discipline = globalCategoryMap["discipline"].toString();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
categoryMap.insert("discipline", discipline);
|
||||||
|
|
||||||
|
BRCategory* category = this->getCategory(federation, categoryMap["GrpId"].toInt(), this->parseCategoryData(categoryMap));
|
||||||
data.categories.append(category);
|
data.categories.append(category);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -297,19 +308,30 @@ void BRProviderDr::parseCompetitionData(BRCompetition::BRCompetitionData* compet
|
||||||
// for that, all categories are recreated
|
// for that, all categories are recreated
|
||||||
QVariantList categoriesList = rawData["categorys"].toList();
|
QVariantList categoriesList = rawData["categorys"].toList();
|
||||||
|
|
||||||
// delete old categories
|
// store old categories
|
||||||
|
QMap<int, BRCategory*> oldCategories;
|
||||||
for(BRCategory* category : competitionData->categories)
|
for(BRCategory* category : competitionData->categories)
|
||||||
category->deleteLater();
|
if(!oldCategories.contains(category->getId()))
|
||||||
|
oldCategories.insert(category->getId(), category);
|
||||||
|
|
||||||
competitionData->categories.clear();
|
competitionData->categories.clear();
|
||||||
|
|
||||||
for(QVariant categoryVar : categoriesList) {
|
for(QVariant categoryVar : categoriesList) {
|
||||||
QVariantMap categoryMap = categoryVar.toMap();
|
QVariantMap categoryMap = categoryVar.toMap();
|
||||||
|
int categoryId = categoryMap["GrpId"].toInt();
|
||||||
|
|
||||||
BRCategory::BRCategoryData categoryData;
|
BRCategory::BRCategoryData categoryData;
|
||||||
categoryData.name = categoryMap["name"].toString();
|
categoryData.name = categoryMap["name"].toString();
|
||||||
|
|
||||||
|
// restore data that is not available in competition view of the API
|
||||||
|
if(oldCategories.contains(categoryId)) {
|
||||||
|
categoryData.status = oldCategories[categoryId]->getStatus();
|
||||||
|
categoryData.discipline = oldCategories[categoryId]->getDiscipline();
|
||||||
|
}
|
||||||
|
|
||||||
categoryData.currentRound = nullptr;
|
categoryData.currentRound = nullptr;
|
||||||
|
|
||||||
qDebug() << "Loading category: " << categoryData.name;
|
qDebug() << "Loading category: " << categoryData.name << " with discipline: " << categoryData.discipline;
|
||||||
|
|
||||||
QVariantMap roundList;
|
QVariantMap roundList;
|
||||||
// check if route_names are given:
|
// check if route_names are given:
|
||||||
|
@ -338,7 +360,7 @@ void BRProviderDr::parseCompetitionData(BRCompetition::BRCompetitionData* compet
|
||||||
if(categoryData.currentRound == nullptr && categoryData.rounds.length() > 0)
|
if(categoryData.currentRound == nullptr && categoryData.rounds.length() > 0)
|
||||||
categoryData.currentRound = categoryData.rounds[0];
|
categoryData.currentRound = categoryData.rounds[0];
|
||||||
|
|
||||||
BRCategory* category = this->getCategory(federation, categoryMap["GrpId"].toInt(), categoryData);
|
BRCategory* category = this->getCategory(federation, categoryId, categoryData);
|
||||||
competitionData->categories.append(category);
|
competitionData->categories.append(category);
|
||||||
|
|
||||||
// restore current category and load its reults
|
// restore current category and load its reults
|
||||||
|
@ -379,7 +401,10 @@ void BRProviderDr::parseCompetitionData(BRCompetition::BRCompetitionData* compet
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// load round results
|
// delete old categories
|
||||||
|
for(int categoryId : oldCategories.keys()) {
|
||||||
|
oldCategories[categoryId]->deleteLater();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -391,6 +416,8 @@ BRCup::BRCupData BRProviderDr::parseCupData(QVariantList categoriesList, QVarian
|
||||||
|
|
||||||
data.name = rawData["name"].toString();
|
data.name = rawData["name"].toString();
|
||||||
|
|
||||||
|
qDebug() << "- Parsing Cup: " << data.name;
|
||||||
|
|
||||||
// parse categories
|
// parse categories
|
||||||
for(QVariant categoryName : rawData["cats"].toList()) {
|
for(QVariant categoryName : rawData["cats"].toList()) {
|
||||||
// find category name in cats:
|
// find category name in cats:
|
||||||
|
@ -398,10 +425,7 @@ BRCup::BRCupData BRProviderDr::parseCupData(QVariantList categoriesList, QVarian
|
||||||
for(QVariant categoryVar : categoriesList) {
|
for(QVariant categoryVar : categoriesList) {
|
||||||
QVariantMap categoryMap = categoryVar.toMap();
|
QVariantMap categoryMap = categoryVar.toMap();
|
||||||
if(categoryMap["rkey"].toString() == categoryName.toString()) {
|
if(categoryMap["rkey"].toString() == categoryName.toString()) {
|
||||||
|
BRCategory* category = this->getCategory(federation, rawData["GrpId"].toInt(), this->parseCategoryData(categoryMap));
|
||||||
BRCategory::BRCategoryData categoryData;
|
|
||||||
categoryData.name = rawData["name"].toString();
|
|
||||||
BRCategory* category = this->getCategory(federation, rawData["GrpId"].toInt(), categoryData);
|
|
||||||
data.categories.append(category);
|
data.categories.append(category);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -413,11 +437,37 @@ BRCup::BRCupData BRProviderDr::parseCupData(QVariantList categoriesList, QVarian
|
||||||
|
|
||||||
BRCategory::BRCategoryData BRProviderDr::parseCategoryData(QVariantMap rawData) {
|
BRCategory::BRCategoryData BRProviderDr::parseCategoryData(QVariantMap rawData) {
|
||||||
BRCategory::BRCategoryData data;
|
BRCategory::BRCategoryData data;
|
||||||
// TODO: status
|
// TODO: gender
|
||||||
// TODO: sex
|
|
||||||
// TODO: load routes
|
data.name = rawData["name"].toString();
|
||||||
// TODO: athletes
|
data.currentRound = nullptr;
|
||||||
this->parseCategoryData(&data, rawData);
|
|
||||||
|
QMap<int, BRCategory::BRCategoryStatus> statusTranslations = {
|
||||||
|
{4, BRCategory::Registration},
|
||||||
|
{2, BRCategory::Startlist},
|
||||||
|
{1, BRCategory::Result},
|
||||||
|
{0, BRCategory::Result}
|
||||||
|
};
|
||||||
|
|
||||||
|
QMap<QString, BRCategory::BRDiscipline> disciplineTranslations = {
|
||||||
|
{"boulder", BRCategory::Boulder},
|
||||||
|
{"lead", BRCategory::Lead},
|
||||||
|
{"speed", BRCategory::Speed}
|
||||||
|
};
|
||||||
|
|
||||||
|
if(disciplineTranslations.contains(rawData["discipline"].toString()))
|
||||||
|
data.discipline = disciplineTranslations[rawData["discipline"].toString()];
|
||||||
|
else
|
||||||
|
data.discipline = BRCategory::UnknownDiscipline;
|
||||||
|
|
||||||
|
// parse status
|
||||||
|
if(rawData.contains("status") && statusTranslations.contains(rawData["status"].toInt()))
|
||||||
|
data.status = statusTranslations[rawData["status"].toInt()];
|
||||||
|
else
|
||||||
|
data.status = BRCategory::UnknownStatus;
|
||||||
|
|
||||||
|
qDebug() << "-- Parsing category: " << data.name << " with discipline: " << data.discipline << " and status: " << data.status;
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -114,7 +114,7 @@ void BRProviderVl::parseLeagueData(BRLeague::BRLeagueData* data, QVariantMap raw
|
||||||
QVariantMap competitionMap = competitionVar.toMap();
|
QVariantMap competitionMap = competitionVar.toMap();
|
||||||
|
|
||||||
qDebug() << "- Adding competition: " << competitionMap["event"].toString();
|
qDebug() << "- Adding competition: " << competitionMap["event"].toString();
|
||||||
BRCompetition* competition = this->getCompetition(federation, competitionVar.toMap()["event_id"].toInt(), this->parseCompetitionData(competitionMap, federation));
|
BRCompetition* competition = this->getCompetition(federation, competitionVar.toMap()["event_id"].toInt(), this->parseCompetitionData(competitionMap, rawData["d_cats"].toList(), federation));
|
||||||
data->competitions.append(competition);
|
data->competitions.append(competition);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ void BRProviderVl::parseLeagueData(BRLeague::BRLeagueData* data, QVariantMap raw
|
||||||
|
|
||||||
for(QVariant cupVar : cupsVar) {
|
for(QVariant cupVar : cupsVar) {
|
||||||
QVariantMap cupMap = cupVar.toMap();
|
QVariantMap cupMap = cupVar.toMap();
|
||||||
BRCup* cup = this->getCup(federation, cupMap["cup_id"].toInt(), this->parseCupData(cupMap));
|
BRCup* cup = this->getCup(federation, cupMap["cup_id"].toInt(), this->parseCupData(cupMap, rawData["d_cats"].toList()));
|
||||||
data->cups.append(cup);
|
data->cups.append(cup);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -172,18 +172,11 @@ BRWidget::BRWidgetStatusCode BRProviderVl::getWidgetData(BRCompetition::BRCompet
|
||||||
return BRWidget::Success;
|
return BRWidget::Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
BRCompetition::BRCompetitionData BRProviderVl::parseCompetitionData(QVariantMap rawData, BRWidget::BRFederation federation) {
|
BRCompetition::BRCompetitionData BRProviderVl::parseCompetitionData(QVariantMap rawData, QVariantList globalCategoriesList, BRWidget::BRFederation federation) {
|
||||||
|
|
||||||
QMap<QString, BRCompetition::BRDiscipline> disciplineTranslations = {
|
|
||||||
{"boulder", BRCompetition::Boulder},
|
|
||||||
{"lead", BRCompetition::Lead},
|
|
||||||
{"speed", BRCompetition::Speed}
|
|
||||||
};
|
|
||||||
|
|
||||||
BRCompetition::BRCompetitionData data;
|
BRCompetition::BRCompetitionData data;
|
||||||
|
|
||||||
data.name = rawData["event"].toString();
|
data.name = rawData["event"].toString();
|
||||||
data.discipline = BRCompetition::Unknown;
|
|
||||||
|
|
||||||
data.startDate = QDate::fromString(rawData["starts_at"].toString().split(" ")[0], "yyyy-MM-dd");
|
data.startDate = QDate::fromString(rawData["starts_at"].toString().split(" ")[0], "yyyy-MM-dd");
|
||||||
data.endDate = QDate::fromString(rawData["ends_at"].toString().split(" ")[0], "yyyy-MM-dd");
|
data.endDate = QDate::fromString(rawData["ends_at"].toString().split(" ")[0], "yyyy-MM-dd");
|
||||||
|
@ -200,7 +193,16 @@ BRCompetition::BRCompetitionData BRProviderVl::parseCompetitionData(QVariantMap
|
||||||
QVariantList categoriesList = rawData["d_cats"].toList();
|
QVariantList categoriesList = rawData["d_cats"].toList();
|
||||||
for(QVariant categoryVar : categoriesList) {
|
for(QVariant categoryVar : categoriesList) {
|
||||||
QVariantMap categoryMap = categoryVar.toMap();
|
QVariantMap categoryMap = categoryVar.toMap();
|
||||||
qDebug() << "-- Adding category: " << categoryMap["name"].toString();
|
|
||||||
|
// search category in global categories list
|
||||||
|
for(QVariant globalCategoryVar : globalCategoriesList) {
|
||||||
|
QVariantMap globalCategoryMap = globalCategoryVar.toMap();
|
||||||
|
if(categoryMap["id"].toInt() == globalCategoryMap["id"].toInt()) {
|
||||||
|
categoryMap.insert("discipline", globalCategoryMap["discipline"].toString());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BRCategory* category = this->getCategory(federation, categoryMap["id"].toInt(), this->parseCategoryData(categoryMap));
|
BRCategory* category = this->getCategory(federation, categoryMap["id"].toInt(), this->parseCategoryData(categoryMap));
|
||||||
data.categories.append(category);
|
data.categories.append(category);
|
||||||
}
|
}
|
||||||
|
@ -211,7 +213,7 @@ BRCompetition::BRCompetitionData BRProviderVl::parseCompetitionData(QVariantMap
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BRCup::BRCupData BRProviderVl::parseCupData(QVariantMap rawData) {
|
BRCup::BRCupData BRProviderVl::parseCupData(QVariantMap rawData, QVariantList globalCategoriesList) {
|
||||||
BRCup::BRCupData data;
|
BRCup::BRCupData data;
|
||||||
|
|
||||||
data.name = rawData["cup"].toString();
|
data.name = rawData["cup"].toString();
|
||||||
|
@ -223,9 +225,18 @@ BRCup::BRCupData BRProviderVl::parseCupData(QVariantMap rawData) {
|
||||||
QVariantMap categoryMap = categoryVar.toMap();
|
QVariantMap categoryMap = categoryVar.toMap();
|
||||||
|
|
||||||
int categoryId = categoryMap["ranking_url"].toString().split("/").last().toInt();
|
int categoryId = categoryMap["ranking_url"].toString().split("/").last().toInt();
|
||||||
|
|
||||||
|
// search category in global categories list
|
||||||
|
for(QVariant globalCategoryVar : globalCategoriesList) {
|
||||||
|
QVariantMap globalCategoryMap = globalCategoryVar.toMap();
|
||||||
|
if(categoryId == globalCategoryMap["id"].toInt()) {
|
||||||
|
categoryMap.insert("discipline", globalCategoryMap["discipline"].toString());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BRCategory* category = this->getCategory(BRWidget::IFSC, categoryId, this->parseCategoryData(categoryMap));
|
BRCategory* category = this->getCategory(BRWidget::IFSC, categoryId, this->parseCategoryData(categoryMap));
|
||||||
data.categories.append(category);
|
data.categories.append(category);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
|
@ -235,10 +246,38 @@ BRCup::BRCupData BRProviderVl::parseCupData(QVariantMap rawData) {
|
||||||
|
|
||||||
BRCategory::BRCategoryData BRProviderVl::parseCategoryData(QVariantMap rawData) {
|
BRCategory::BRCategoryData BRProviderVl::parseCategoryData(QVariantMap rawData) {
|
||||||
// TODO: status
|
// TODO: status
|
||||||
// TODO: sex
|
|
||||||
BRCategory::BRCategoryData data;
|
BRCategory::BRCategoryData data;
|
||||||
|
|
||||||
data.name = rawData["name"].toString();
|
data.name = rawData["name"].toString();
|
||||||
|
// TODO: gender
|
||||||
|
|
||||||
|
// parse status and discipline
|
||||||
|
QMap<QString, BRCategory::BRCategoryStatus> statusTranslations = {
|
||||||
|
{"registration_pending", BRCategory::Registration},
|
||||||
|
{"registration_active", BRCategory::Registration},
|
||||||
|
// TODO {2, BRCategory::Startlist},
|
||||||
|
{"active", BRCategory::Result},
|
||||||
|
{"finished", BRCategory::Result}
|
||||||
|
};
|
||||||
|
|
||||||
|
QMap<QString, BRCategory::BRDiscipline> disciplineTranslations = {
|
||||||
|
{"Boulder", BRCategory::Boulder},
|
||||||
|
{"Lead", BRCategory::Lead},
|
||||||
|
{"Speed", BRCategory::Speed}
|
||||||
|
};
|
||||||
|
|
||||||
|
if(disciplineTranslations.contains(rawData["discipline"].toString()))
|
||||||
|
data.discipline = disciplineTranslations[rawData["discipline"].toString()];
|
||||||
|
else
|
||||||
|
data.discipline = BRCategory::UnknownDiscipline;
|
||||||
|
|
||||||
|
if(statusTranslations.contains(rawData["status"].toString()))
|
||||||
|
data.status = statusTranslations[rawData["status"].toString()];
|
||||||
|
else
|
||||||
|
data.status = BRCategory::UnknownStatus;
|
||||||
|
|
||||||
|
qDebug() << "-- Parsing category: " << data.name << " with discipline: " << data.discipline << " and status: " << data.status;
|
||||||
|
|
||||||
data.currentRound = nullptr;
|
data.currentRound = nullptr;
|
||||||
|
|
||||||
// load rounds
|
// load rounds
|
||||||
|
|
|
@ -14,6 +14,9 @@ BRAthlete* BRResult::getAthlete() const {
|
||||||
return this->athlete;
|
return this->athlete;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BRResultDetails* BRResult::getDetails() const {
|
||||||
|
return this->details;
|
||||||
|
}
|
||||||
|
|
||||||
void BRResult::setData(BRResultData data) {
|
void BRResult::setData(BRResultData data) {
|
||||||
this->rank = data.rank;
|
this->rank = data.rank;
|
||||||
|
|
6
sources/brresultdetails.cpp
Normal file
6
sources/brresultdetails.cpp
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#include "../headers/brresultdetails.h"
|
||||||
|
|
||||||
|
BRResultDetails::BRResultDetails()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue