summaryrefslogtreecommitdiff
path: root/src/model/Sport.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/model/Sport.h')
-rw-r--r--src/model/Sport.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/model/Sport.h b/src/model/Sport.h
new file mode 100644
index 0000000..147f6e8
--- /dev/null
+++ b/src/model/Sport.h
@@ -0,0 +1,92 @@
+
+#ifndef ITAT_CHALLANGE_OLYMPICS_SPORT_H
+#define ITAT_CHALLANGE_OLYMPICS_SPORT_H
+
+
+#include <set>
+
+#include <QJsonObject>
+#include <QJsonDocument>
+#include <QString>
+
+using namespace std;
+
+
+class Sport {
+
+public:
+
+ Sport(QJsonObject discipline) {
+ this->discipline = discipline;
+ }
+
+ set<QString> getCategories();
+ QJsonArray getCompetitorsByCategory(QString category);
+ QJsonArray getCompetitorsWithMedal();
+
+ // filter to change the current competitor array
+ void lastName(QJsonArray &competitors);
+ void filterByName(QJsonArray &competitors, QString name);
+ void filterByCountry(QJsonArray &competitors, QString nocShort);
+
+ // sort functions to change the order of the current competitor array
+ void sortByName(QJsonArray &competitors);
+ void sortByCountry(QJsonArray &competitors);
+ void sortByResult(QJsonArray &competitors);
+ void reverseOrder(QJsonArray &competitors);
+
+ // statistic function(s)
+ void addRelativeToFirst(QJsonArray &competitors);
+
+ void setDiscipline(QJsonObject discipline) {
+ this->discipline = QJsonObject(discipline);
+ }
+
+private:
+
+ /*
+ * Analysis of provided competitor objects:
+ *
+ * Attributes:
+ * - code
+ * - noc (national olympics comittee)
+ * - name (sometimes the country name? mostly the competitors name)
+ * - order
+ * [- results] (only if the results are out!)
+ *
+ *
+ * Analysis of provided result objects:
+ *
+ * Attributes:
+ * - position
+ * - mark
+ * - medalType
+ * - irk
+ * [- winnerLoserTie] (only if provided in the discipline?)
+ *
+ * Analysis of where to find the medal winners:
+ *
+ * Search for ... in category name.
+ * - "Bronze"
+ * - "Gold"
+ * - "Final"
+ *
+ * ! ATTENTION !
+ * When searching for "Final" there might be "Final A", "Final B", etc.
+ * The results will only be in ONE of these categories!
+ * -> which is good... cause then we can count occurences.
+ */
+ QJsonObject discipline;
+
+ void filterCompetitors(QJsonArray &competitors, QString attribute, QString filter);
+ void sortCompetitors(QJsonArray &competitors, function<bool (const QJsonValue &left, const QJsonValue &right)> compare);
+
+ bool validateDiscipline();
+ QJsonObject createCompetitorWithMedals(QJsonObject medalComp);
+
+ float calcRelativeStat(QString ref, QString val);
+
+};
+
+
+#endif //ITAT_CHALLANGE_OLYMPICS_SPORT_H