feat(ui): Full Sonarr system tab support

Signed-off-by: Alex Clarke <alex.j.tusa@gmail.com>
This commit is contained in:
2024-12-04 17:41:30 -07:00
parent 2d251554ad
commit 00cdeee5c6
14 changed files with 598 additions and 134 deletions
-5
View File
@@ -34,14 +34,9 @@ mod collections;
mod downloads;
mod indexers;
mod library;
mod radarr_ui_utils;
mod root_folders;
mod system;
#[cfg(test)]
#[path = "radarr_ui_tests.rs"]
mod radarr_ui_tests;
pub(super) struct RadarrUi;
impl DrawUi for RadarrUi {
-46
View File
@@ -1,46 +0,0 @@
use ratatui::style::{Style, Stylize};
use ratatui::widgets::ListItem;
use crate::ui::styles::ManagarrStyle;
#[cfg(test)]
#[path = "radarr_ui_utils_tests.rs"]
mod radarr_ui_utils_tests;
pub(super) fn style_log_list_item(list_item: ListItem<'_>, level: String) -> ListItem<'_> {
match level.to_lowercase().as_str() {
"trace" => list_item.gray(),
"debug" => list_item.blue(),
"info" => list_item.style(Style::new().default()),
"warn" => list_item.style(Style::new().secondary()),
"error" => list_item.style(Style::new().failure()),
"fatal" => list_item.style(Style::new().failure().bold()),
_ => list_item.style(Style::new().default()),
}
}
pub(super) fn convert_to_minutes_hours_days(time: i64) -> String {
if time < 60 {
if time == 0 {
"now".to_owned()
} else if time == 1 {
format!("{time} minute")
} else {
format!("{time} minutes")
}
} else if time / 60 < 24 {
let hours = time / 60;
if hours == 1 {
format!("{hours} hour")
} else {
format!("{hours} hours")
}
} else {
let days = time / (60 * 24);
if days == 1 {
format!("{days} day")
} else {
format!("{days} days")
}
}
}
-70
View File
@@ -1,70 +0,0 @@
#[cfg(test)]
mod tests {
use super::super::*;
use pretty_assertions::assert_str_eq;
use ratatui::prelude::Text;
use ratatui::text::Span;
#[test]
fn test_determine_log_style_by_level() {
let list_item = ListItem::new(Text::from(Span::raw("test")));
assert_eq!(
style_log_list_item(list_item.clone(), "trace".to_string()),
list_item.clone().gray()
);
assert_eq!(
style_log_list_item(list_item.clone(), "debug".to_string()),
list_item.clone().blue()
);
assert_eq!(
style_log_list_item(list_item.clone(), "info".to_string()),
list_item.clone().style(Style::new().default())
);
assert_eq!(
style_log_list_item(list_item.clone(), "warn".to_string()),
list_item.clone().style(Style::new().secondary())
);
assert_eq!(
style_log_list_item(list_item.clone(), "error".to_string()),
list_item.clone().style(Style::new().failure())
);
assert_eq!(
style_log_list_item(list_item.clone(), "fatal".to_string()),
list_item.clone().style(Style::new().failure().bold())
);
assert_eq!(
style_log_list_item(list_item.clone(), "".to_string()),
list_item.style(Style::new().default())
);
}
#[test]
fn test_determine_log_style_by_level_case_insensitive() {
let list_item = ListItem::new(Text::from(Span::raw("test")));
assert_eq!(
style_log_list_item(list_item.clone(), "TrAcE".to_string()),
list_item.gray()
);
}
#[test]
fn test_convert_to_minutes_hours_days_minutes() {
assert_str_eq!(convert_to_minutes_hours_days(0), "now");
assert_str_eq!(convert_to_minutes_hours_days(1), "1 minute");
assert_str_eq!(convert_to_minutes_hours_days(2), "2 minutes");
}
#[test]
fn test_convert_to_minutes_hours_days_hours() {
assert_str_eq!(convert_to_minutes_hours_days(60), "1 hour");
assert_str_eq!(convert_to_minutes_hours_days(120), "2 hours");
}
#[test]
fn test_convert_to_minutes_hours_days_days() {
assert_str_eq!(convert_to_minutes_hours_days(1440), "1 day");
assert_str_eq!(convert_to_minutes_hours_days(2880), "2 days");
}
}
+3 -2
View File
@@ -15,10 +15,11 @@ use crate::app::App;
use crate::models::radarr_models::RadarrTask;
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
use crate::models::servarr_models::QueueEvent;
use crate::ui::radarr_ui::radarr_ui_utils::{convert_to_minutes_hours_days, style_log_list_item};
use crate::ui::radarr_ui::system::system_details_ui::SystemDetailsUi;
use crate::ui::styles::ManagarrStyle;
use crate::ui::utils::layout_block_top_border;
use crate::ui::utils::{
convert_to_minutes_hours_days, layout_block_top_border, style_log_list_item,
};
use crate::ui::widgets::loading_block::LoadingBlock;
use crate::ui::widgets::managarr_table::ManagarrTable;
use crate::ui::widgets::selectable_list::SelectableList;
+1 -2
View File
@@ -9,13 +9,12 @@ use crate::app::App;
use crate::models::radarr_models::RadarrTask;
use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, SYSTEM_DETAILS_BLOCKS};
use crate::models::Route;
use crate::ui::radarr_ui::radarr_ui_utils::style_log_list_item;
use crate::ui::radarr_ui::system::{
draw_queued_events, draw_system_ui_layout, extract_task_props, TASK_TABLE_CONSTRAINTS,
TASK_TABLE_HEADERS,
};
use crate::ui::styles::ManagarrStyle;
use crate::ui::utils::{borderless_block, title_block};
use crate::ui::utils::{borderless_block, style_log_list_item, title_block};
use crate::ui::widgets::confirmation_prompt::ConfirmationPrompt;
use crate::ui::widgets::loading_block::LoadingBlock;
use crate::ui::widgets::managarr_table::ManagarrTable;