Updated UI to have contextual help with tables so the UI doesn't feel so crowded

This commit is contained in:
2023-08-08 10:50:05 -06:00
parent 8120debe81
commit 05b8f85dfb
8 changed files with 97 additions and 30 deletions
+21 -1
View File
@@ -17,7 +17,7 @@ use crate::ui::utils::{
layout_block_top_border, layout_button_paragraph, layout_button_paragraph_borderless, logo_block,
style_button_highlight, style_default_bold, style_failure, style_help, style_highlight,
style_primary, style_secondary, style_system_function, title_block, title_block_centered,
vertical_chunks_with_margin,
vertical_chunks, vertical_chunks_with_margin,
};
mod radarr_ui;
@@ -217,6 +217,7 @@ pub struct TableProps<'a, T> {
pub content: &'a mut StatefulTable<T>,
pub table_headers: Vec<&'a str>,
pub constraints: Vec<Constraint>,
pub help: Option<String>,
}
fn draw_table<'a, B, T, F>(
@@ -234,8 +235,27 @@ fn draw_table<'a, B, T, F>(
content,
table_headers,
constraints,
help,
} = table_props;
let content_area = if let Some(help_string) = help {
let chunks = vertical_chunks(
vec![Constraint::Min(0), Constraint::Length(3)],
content_area,
);
let mut help_text = Text::from(format!(" {}", help_string));
help_text.patch_style(style_help());
let help_paragraph = Paragraph::new(help_text)
.block(layout_block_top_border())
.alignment(Alignment::Left);
f.render_widget(help_paragraph, chunks[1]);
chunks[0]
} else {
content_area
};
if !content.items.is_empty() {
let rows = content.items.iter().map(row_mapper);
+2 -1
View File
@@ -84,7 +84,7 @@ fn draw_add_movie_search<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, area:
| ActiveRadarrBlock::AddMovieSelectMonitor
| ActiveRadarrBlock::AddMovieSelectMinimumAvailability
| ActiveRadarrBlock::AddMovieSelectQualityProfile => {
let mut help_text = Text::from("<esc> edit search");
let mut help_text = Text::from("<enter> details | <esc> edit search");
help_text.patch_style(style_help());
let help_paragraph = Paragraph::new(help_text)
.block(borderless_block())
@@ -113,6 +113,7 @@ fn draw_add_movie_search<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, area:
Constraint::Percentage(14),
Constraint::Percentage(30),
],
help: None,
},
|movie| {
let (hours, minutes) = convert_runtime(movie.runtime.as_u64().unwrap());
@@ -118,6 +118,11 @@ fn draw_collection_details<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, cont
Constraint::Percentage(18),
Constraint::Percentage(30),
],
help: app
.data
.radarr_data
.main_tabs
.get_active_tab_contextual_help(),
},
|movie| {
let (hours, minutes) = convert_runtime(movie.runtime.as_u64().unwrap());
+15
View File
@@ -143,6 +143,11 @@ fn draw_library<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, area: Rect) {
Constraint::Percentage(12),
Constraint::Percentage(12),
],
help: app
.data
.radarr_data
.main_tabs
.get_active_tab_contextual_help(),
},
|movie| {
let (hours, minutes) = convert_runtime(movie.runtime.as_u64().unwrap());
@@ -298,6 +303,11 @@ fn draw_downloads<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, area: Rect) {
Constraint::Percentage(17),
Constraint::Percentage(13),
],
help: app
.data
.radarr_data
.main_tabs
.get_active_tab_contextual_help(),
},
|download_record| {
let DownloadRecord {
@@ -352,6 +362,11 @@ fn draw_collections<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, area: Rect)
"Quality Profile",
],
constraints: iter::repeat(Constraint::Ratio(1, 5)).take(5).collect(),
help: app
.data
.radarr_data
.main_tabs
.get_active_tab_contextual_help(),
},
|collection| {
let number_of_movies = collection.movies.clone().unwrap_or_default().len();
+20
View File
@@ -220,6 +220,11 @@ fn draw_movie_history<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, content_a
Constraint::Percentage(14),
Constraint::Percentage(21),
],
help: app
.data
.radarr_data
.movie_info_tabs
.get_active_tab_contextual_help(),
},
|movie_history_item| {
let MovieHistoryItem {
@@ -268,6 +273,11 @@ fn draw_movie_cast<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, content_area
content: &mut app.data.radarr_data.movie_cast,
constraints: iter::repeat(Constraint::Ratio(1, 2)).take(2).collect(),
table_headers: vec!["Cast Member", "Character"],
help: app
.data
.radarr_data
.movie_info_tabs
.get_active_tab_contextual_help(),
},
|cast_member| {
let Credit {
@@ -295,6 +305,11 @@ fn draw_movie_crew<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, content_area
content: &mut app.data.radarr_data.movie_crew,
constraints: iter::repeat(Constraint::Ratio(1, 3)).take(3).collect(),
table_headers: vec!["Crew Member", "Job", "Department"],
help: app
.data
.radarr_data
.movie_info_tabs
.get_active_tab_contextual_help(),
},
|crew_member| {
let Credit {
@@ -346,6 +361,11 @@ fn draw_movie_releases<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, content_
table_headers: vec![
"Source", "Age", "", "Title", "Indexer", "Size", "Peers", "Language", "Quality",
],
help: app
.data
.radarr_data
.movie_info_tabs
.get_active_tab_contextual_help(),
},
|release| {
let Release {