diff --git a/lib/json b/lib/json index 8c391e0..c883fb0 160000 --- a/lib/json +++ b/lib/json @@ -1 +1 @@ -Subproject commit 8c391e04fe4195d8be862c97f38cfe10e2a3472e +Subproject commit c883fb0f17cbdf75545bddcc551e21a924a31b05 diff --git a/src/commands/b_manage.cpp b/src/commands/b_manage.cpp index 1d4ffb1..c3efaca 100644 --- a/src/commands/b_manage.cpp +++ b/src/commands/b_manage.cpp @@ -10,11 +10,13 @@ void manageArguments(argparse::ArgumentParser& program, int argc, char** argv) { program.add_argument("-m", "--model").default_value("any").help("Filter results of the selected model)"); program.add_argument("-s", "--score").default_value("any").help("Filter results of the score name supplied"); + program.add_argument("--platform").default_value("any").help("Filter results of the selected platform"); program.add_argument("--complete").help("Show only results with all datasets").default_value(false).implicit_value(true); program.add_argument("--partial").help("Show only partial results").default_value(false).implicit_value(true); program.add_argument("--compare").help("Compare with best results").default_value(false).implicit_value(true); try { program.parse_args(argc, argv); + auto platform = program.get("platform"); auto model = program.get("model"); auto score = program.get("score"); auto complete = program.get("complete"); @@ -47,13 +49,14 @@ int main(int argc, char** argv) manageArguments(program, argc, argv); std::string model = program.get("model"); std::string score = program.get("score"); + std::string platform = program.get("platform"); auto complete = program.get("complete"); auto partial = program.get("partial"); auto compare = program.get("compare"); auto [rows, cols] = numRowsCols(); if (complete) partial = false; - auto manager = platform::ManageScreen(rows, cols, model, score, complete, partial, compare); + auto manager = platform::ManageScreen(rows, cols, model, score, platform, complete, partial, compare); manager.doMenu(); return 0; } diff --git a/src/manage/ManageScreen.cpp b/src/manage/ManageScreen.cpp index c470ca2..1220b44 100644 --- a/src/manage/ManageScreen.cpp +++ b/src/manage/ManageScreen.cpp @@ -18,8 +18,8 @@ namespace platform { const std::string STATUS_OK = "Ok."; const std::string STATUS_COLOR = Colors::GREEN(); - ManageScreen::ManageScreen(int rows, int cols, const std::string& model, const std::string& score, bool complete, bool partial, bool compare) : - rows{ rows }, cols{ cols }, complete{ complete }, partial{ partial }, compare{ compare }, didExcel(false), results(ResultsManager(model, score, complete, partial)) + ManageScreen::ManageScreen(int rows, int cols, const std::string& model, const std::string& score, const std::string& platform, bool complete, bool partial, bool compare) : + rows{ rows }, cols{ cols }, complete{ complete }, partial{ partial }, compare{ compare }, didExcel(false), results(ResultsManager(model, score, platform, complete, partial)) { results.load(); openExcel = false; diff --git a/src/manage/ManageScreen.h b/src/manage/ManageScreen.h index 9024028..7dc645a 100644 --- a/src/manage/ManageScreen.h +++ b/src/manage/ManageScreen.h @@ -14,7 +14,7 @@ namespace platform { }; class ManageScreen { public: - ManageScreen(int rows, int cols, const std::string& model, const std::string& score, bool complete, bool partial, bool compare); + ManageScreen(int rows, int cols, const std::string& model, const std::string& score, const std::string& platform, bool complete, bool partial, bool compare); ~ManageScreen() = default; void doMenu(); private: diff --git a/src/manage/ResultsManager.cpp b/src/manage/ResultsManager.cpp index 69cf92f..f4b722a 100644 --- a/src/manage/ResultsManager.cpp +++ b/src/manage/ResultsManager.cpp @@ -3,8 +3,8 @@ #include "ResultsManager.h" namespace platform { - ResultsManager::ResultsManager(const std::string& model, const std::string& score, bool complete, bool partial) : - path(Paths::results()), model(model), scoreName(score), complete(complete), partial(partial), maxModel(0), maxTitle(0) + ResultsManager::ResultsManager(const std::string& model, const std::string& score, const std::string& platform, bool complete, bool partial) : + path(Paths::results()), model(model), scoreName(score), platform(platform), complete(complete), partial(partial), maxModel(0), maxTitle(0) { } void ResultsManager::load() @@ -17,7 +17,11 @@ namespace platform { auto result = Result(); result.load(path, filename); bool addResult = true; - if (model != "any" && result.getModel() != model || scoreName != "any" && scoreName != result.getScoreName() || complete && !result.isComplete() || partial && result.isComplete()) + if (platform != "any" && result.getPlatform() != platform + || model != "any" && result.getModel() != model + || scoreName != "any" && scoreName != result.getScoreName() + || complete && !result.isComplete() + || partial && result.isComplete()) addResult = false; if (addResult) { files.push_back(result); diff --git a/src/manage/ResultsManager.h b/src/manage/ResultsManager.h index a49cb71..647e00e 100644 --- a/src/manage/ResultsManager.h +++ b/src/manage/ResultsManager.h @@ -18,7 +18,7 @@ namespace platform { }; class ResultsManager { public: - ResultsManager(const std::string& model, const std::string& score, bool complete, bool partial); + ResultsManager(const std::string& model, const std::string& score, const std::string& platform, bool complete, bool partial); void load(); // Loads the list of results void sortResults(SortField field, SortType type); // Sorts the list of results void sortDate(SortType type); @@ -38,6 +38,7 @@ namespace platform { std::string path; std::string model; std::string scoreName; + std::string platform; bool complete; bool partial; int maxModel; diff --git a/src/results/Result.h b/src/results/Result.h index 6d361cd..ad94745 100644 --- a/src/results/Result.h +++ b/src/results/Result.h @@ -26,6 +26,7 @@ namespace platform { std::string getTitle() const { return data["title"].get(); }; double getDuration() const { return data["duration"]; }; std::string getModel() const { return data["model"].get(); }; + std::string getPlatform() const { return data["platform"].get(); }; std::string getScoreName() const { return data["score_name"].get(); }; bool isComplete() const { return complete; }; json getData() const { return data; }