From ec96bc52d619b75c86e9ca6405f146d5a7e3c383 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Tue, 6 Sep 2022 05:11:32 +0800 Subject: [PATCH] replay: add shortcuts for seeking to the next info, warning, and critical alerts (#25576) old-commit-hash: 75c434bde708b15f392cea68f897a1450d4d8b78 --- tools/replay/consoleui.cc | 11 ++++++++++- tools/replay/replay.cc | 7 +++++-- tools/replay/replay.h | 3 +++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/tools/replay/consoleui.cc b/tools/replay/consoleui.cc index 6b419ca9d8..5f165ac312 100644 --- a/tools/replay/consoleui.cc +++ b/tools/replay/consoleui.cc @@ -18,7 +18,10 @@ const std::initializer_list> keyboard_shortc {"space", "Pause/Resume"}, {"e", "Next Engagement"}, {"d", "Next Disengagement"}, - {"t", "Next User Tag"} + {"t", "Next User Tag"}, + {"i", "Next Info"}, + {"w", "Next Warning"}, + {"c", "Next Critical"}, }, { {"enter", "Enter seek request"}, @@ -344,6 +347,12 @@ void ConsoleUI::handleKey(char c) { replay->seekToFlag(FindFlag::nextDisEngagement); } else if (c == 't') { replay->seekToFlag(FindFlag::nextUserFlag); + } else if (c == 'i') { + replay->seekToFlag(FindFlag::nextInfo); + } else if (c == 'w') { + replay->seekToFlag(FindFlag::nextWarning); + } else if (c == 'c') { + replay->seekToFlag(FindFlag::nextCritical); } else if (c == 'm') { replay->seekTo(+60, true); } else if (c == 'M') { diff --git a/tools/replay/replay.cc b/tools/replay/replay.cc index ed8dea6121..3e482b5474 100644 --- a/tools/replay/replay.cc +++ b/tools/replay/replay.cc @@ -166,8 +166,11 @@ std::optional Replay::find(FindFlag flag) { } else if (flag == FindFlag::nextDisEngagement && end_ts > cur_ts) { return end_ts; } - } else if (type == TimelineType::UserFlag) { - if (flag == FindFlag::nextUserFlag && start_ts > cur_ts) { + } else if (start_ts > cur_ts) { + if ((flag == FindFlag::nextUserFlag && type == TimelineType::UserFlag) || + (flag == FindFlag::nextInfo && type == TimelineType::AlertInfo) || + (flag == FindFlag::nextWarning && type == TimelineType::AlertWarning) || + (flag == FindFlag::nextCritical && type == TimelineType::AlertCritical)) { return start_ts; } } diff --git a/tools/replay/replay.h b/tools/replay/replay.h index e4217736d5..e86c453f7e 100644 --- a/tools/replay/replay.h +++ b/tools/replay/replay.h @@ -26,6 +26,9 @@ enum class FindFlag { nextEngagement, nextDisEngagement, nextUserFlag, + nextInfo, + nextWarning, + nextCritical }; enum class TimelineType { None, Engaged, AlertInfo, AlertWarning, AlertCritical, UserFlag };