From 4116699b01b097a8ed8f31e113a23e0ca42d6b6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Wed, 6 Aug 2025 12:08:08 +0200 Subject: [PATCH] Add sort results by title --- src/manage/ManageScreen.cpp | 8 ++++++-- src/manage/ResultsManager.cpp | 13 +++++++++++++ src/manage/ResultsManager.h | 2 ++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/manage/ManageScreen.cpp b/src/manage/ManageScreen.cpp index d9f65fc..7c757d5 100644 --- a/src/manage/ManageScreen.cpp +++ b/src/manage/ManageScreen.cpp @@ -28,7 +28,7 @@ namespace platform { maxTitle = results.maxTitleSize(); header_lengths = { 3, 10, maxModel, 11, 10, 12, 2, 3, 7, maxTitle }; header_labels = { " #", "Date", "Model", "Score Name", "Score", "Platform", "SD", "C/P", "Time", "Title" }; - sort_fields = { "Date", "Model", "Score", "Time" }; + sort_fields = { "Date", "Model", "Score", "Time", "Title" }; updateSize(rows, cols); // Initializes the paginator for each output type (experiments, datasets, result) for (int i = 0; i < static_cast(OutputType::Count); i++) { @@ -346,9 +346,10 @@ namespace platform { { std::vector> sortOptions = { {"date", 'd', false}, + {"model", 'm', false}, {"score", 's', false}, {"time", 't', false}, - {"model", 'm', false}, + {"title", 'i', false}, {"ascending+", '+', false}, {"descending-", '-', false} }; @@ -379,6 +380,9 @@ namespace platform { case 'm': sort_field = SortField::MODEL; break; + case 'i': + sort_field = SortField::TITLE; + break; case '+': sort_type = SortType::ASC; break; diff --git a/src/manage/ResultsManager.cpp b/src/manage/ResultsManager.cpp index dadd4ea..042b2d0 100644 --- a/src/manage/ResultsManager.cpp +++ b/src/manage/ResultsManager.cpp @@ -88,6 +88,16 @@ namespace platform { return a.getDuration() > b.getDuration(); }); } + void ResultsManager::sortTitle(SortType type) + { + if (empty()) + return; + sort(files.begin(), files.end(), [type](const Result& a, const Result& b) { + if (type == SortType::ASC) + return a.getTitle() < b.getTitle(); + return a.getTitle() > b.getTitle(); + }); + } void ResultsManager::sortScore(SortType type) { if (empty()) @@ -119,6 +129,9 @@ namespace platform { case SortField::DURATION: sortDuration(type); break; + case SortField::TITLE: + sortTitle(type); + break; } } bool ResultsManager::empty() const diff --git a/src/manage/ResultsManager.h b/src/manage/ResultsManager.h index f891c44..6a9c679 100644 --- a/src/manage/ResultsManager.h +++ b/src/manage/ResultsManager.h @@ -15,6 +15,7 @@ namespace platform { MODEL = 1, SCORE = 2, DURATION = 3, + TITLE = 4, }; class ResultsManager { public: @@ -24,6 +25,7 @@ namespace platform { void sortDate(SortType type); void sortScore(SortType type); void sortModel(SortType type); + void sortTitle(SortType type); void sortDuration(SortType type); int maxModelSize() const { return maxModel; }; int maxTitleSize() const { return maxTitle; };