fix: Fixed a bug that was rendering encompassing blocks after other widgets were rendered, thus overwriting the custom styles on each previously rendered widget
This commit is contained in:
+5
-2
@@ -19,6 +19,7 @@ use crate::ui::styles::ManagarrStyle;
|
|||||||
use crate::ui::theme::Theme;
|
use crate::ui::theme::Theme;
|
||||||
use crate::ui::utils::{
|
use crate::ui::utils::{
|
||||||
background_block, borderless_block, centered_rect, logo_block, title_block, title_block_centered,
|
background_block, borderless_block, centered_rect, logo_block, title_block, title_block_centered,
|
||||||
|
unstyled_title_block,
|
||||||
};
|
};
|
||||||
use crate::ui::widgets::input_box::InputBox;
|
use crate::ui::widgets::input_box::InputBox;
|
||||||
use crate::ui::widgets::popup::Size;
|
use crate::ui::widgets::popup::Size;
|
||||||
@@ -106,7 +107,9 @@ fn draw_header_row(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn draw_error(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
fn draw_error(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||||
let block = title_block("Error | <esc> to close").failure().bold();
|
let block = unstyled_title_block("Error | <esc> to close")
|
||||||
|
.failure()
|
||||||
|
.bold();
|
||||||
|
|
||||||
app.error.scroll_left_or_reset(
|
app.error.scroll_left_or_reset(
|
||||||
area.width as usize,
|
area.width as usize,
|
||||||
@@ -136,7 +139,7 @@ pub fn draw_popup(
|
|||||||
|
|
||||||
fn draw_tabs(f: &mut Frame<'_>, area: Rect, title: &str, tab_state: &TabState) -> Rect {
|
fn draw_tabs(f: &mut Frame<'_>, area: Rect, title: &str, tab_state: &TabState) -> Rect {
|
||||||
if title.is_empty() {
|
if title.is_empty() {
|
||||||
f.render_widget(layout_block(), area);
|
f.render_widget(layout_block().default(), area);
|
||||||
} else {
|
} else {
|
||||||
f.render_widget(title_block(title), area);
|
f.render_widget(title_block(title), area);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ fn draw_edit_collection_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>
|
|||||||
.clone()
|
.clone()
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
let title = format!("Edit - {collection_title}");
|
let title = format!("Edit - {collection_title}");
|
||||||
|
f.render_widget(title_block_centered(&title), area);
|
||||||
let yes_no_value = app.data.radarr_data.prompt_confirm;
|
let yes_no_value = app.data.radarr_data.prompt_confirm;
|
||||||
let selected_block = app.data.radarr_data.selected_block.get_active_block();
|
let selected_block = app.data.radarr_data.selected_block.get_active_block();
|
||||||
let highlight_yes_no = selected_block == ActiveRadarrBlock::EditCollectionConfirmPrompt;
|
let highlight_yes_no = selected_block == ActiveRadarrBlock::EditCollectionConfirmPrompt;
|
||||||
@@ -155,7 +156,6 @@ fn draw_edit_collection_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>
|
|||||||
.title("Cancel")
|
.title("Cancel")
|
||||||
.selected(!yes_no_value && highlight_yes_no);
|
.selected(!yes_no_value && highlight_yes_no);
|
||||||
|
|
||||||
f.render_widget(title_block_centered(&title), area);
|
|
||||||
f.render_widget(prompt_paragraph, paragraph_area);
|
f.render_widget(prompt_paragraph, paragraph_area);
|
||||||
f.render_widget(monitored_checkbox, monitored_area);
|
f.render_widget(monitored_checkbox, monitored_area);
|
||||||
f.render_widget(min_availability_drop_down_button, min_availability_area);
|
f.render_widget(min_availability_drop_down_button, min_availability_area);
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ fn draw_edit_indexer_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
|||||||
let help_paragraph = Paragraph::new(help_text).centered();
|
let help_paragraph = Paragraph::new(help_text).centered();
|
||||||
|
|
||||||
if edit_indexer_modal_option.is_some() {
|
if edit_indexer_modal_option.is_some() {
|
||||||
|
f.render_widget(block, area);
|
||||||
let edit_indexer_modal = edit_indexer_modal_option.as_ref().unwrap();
|
let edit_indexer_modal = edit_indexer_modal_option.as_ref().unwrap();
|
||||||
|
|
||||||
let [_, settings_area, _, buttons_area, help_area] = Layout::vertical([
|
let [_, settings_area, _, buttons_area, help_area] = Layout::vertical([
|
||||||
@@ -163,7 +164,6 @@ fn draw_edit_indexer_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
|||||||
.title("Cancel")
|
.title("Cancel")
|
||||||
.selected(!yes_no_value && highlight_yes_no);
|
.selected(!yes_no_value && highlight_yes_no);
|
||||||
|
|
||||||
f.render_widget(block, area);
|
|
||||||
f.render_widget(rss_checkbox, rss_area);
|
f.render_widget(rss_checkbox, rss_area);
|
||||||
f.render_widget(auto_search_checkbox, auto_search_area);
|
f.render_widget(auto_search_checkbox, auto_search_area);
|
||||||
f.render_widget(interactive_search_checkbox, interactive_search_area);
|
f.render_widget(interactive_search_checkbox, interactive_search_area);
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ fn draw_edit_indexer_settings_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area:
|
|||||||
let help_paragraph = Paragraph::new(help_text).centered();
|
let help_paragraph = Paragraph::new(help_text).centered();
|
||||||
|
|
||||||
if indexer_settings_option.is_some() {
|
if indexer_settings_option.is_some() {
|
||||||
|
f.render_widget(block, area);
|
||||||
let indexer_settings = indexer_settings_option.as_ref().unwrap();
|
let indexer_settings = indexer_settings_option.as_ref().unwrap();
|
||||||
|
|
||||||
let [_, settings_area, _, buttons_area, help_area] = Layout::vertical([
|
let [_, settings_area, _, buttons_area, help_area] = Layout::vertical([
|
||||||
@@ -162,7 +163,6 @@ fn draw_edit_indexer_settings_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area:
|
|||||||
.title("Cancel")
|
.title("Cancel")
|
||||||
.selected(!yes_no_value && highlight_yes_no);
|
.selected(!yes_no_value && highlight_yes_no);
|
||||||
|
|
||||||
f.render_widget(block, area);
|
|
||||||
f.render_widget(prefer_indexer_flags_checkbox, prefer_flags_area);
|
f.render_widget(prefer_indexer_flags_checkbox, prefer_flags_area);
|
||||||
f.render_widget(allow_hardcoded_subs_checkbox, allow_hardcoded_subs_area);
|
f.render_widget(allow_hardcoded_subs_checkbox, allow_hardcoded_subs_area);
|
||||||
f.render_widget(save_button, save_area);
|
f.render_widget(save_button, save_area);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use crate::models::servarr_data::modals::IndexerTestResultModalItem;
|
|||||||
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
|
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
|
||||||
use crate::models::Route;
|
use crate::models::Route;
|
||||||
use crate::ui::styles::ManagarrStyle;
|
use crate::ui::styles::ManagarrStyle;
|
||||||
use crate::ui::utils::{borderless_block, get_width_from_percentage, title_block};
|
use crate::ui::utils::{get_width_from_percentage, title_block};
|
||||||
use crate::ui::widgets::managarr_table::ManagarrTable;
|
use crate::ui::widgets::managarr_table::ManagarrTable;
|
||||||
use crate::ui::widgets::popup::Size;
|
use crate::ui::widgets::popup::Size;
|
||||||
use crate::ui::{draw_popup, DrawUi};
|
use crate::ui::{draw_popup, DrawUi};
|
||||||
@@ -71,7 +71,6 @@ fn draw_test_all_indexers_test_results(f: &mut Frame<'_>, app: &mut App<'_>, are
|
|||||||
app.data.radarr_data.indexer_test_all_results.as_mut(),
|
app.data.radarr_data.indexer_test_all_results.as_mut(),
|
||||||
test_results_row_mapping,
|
test_results_row_mapping,
|
||||||
)
|
)
|
||||||
.block(borderless_block())
|
|
||||||
.loading(is_loading)
|
.loading(is_loading)
|
||||||
.footer(Some(help_footer))
|
.footer(Some(help_footer))
|
||||||
.footer_alignment(Alignment::Center)
|
.footer_alignment(Alignment::Center)
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
|||||||
.centered();
|
.centered();
|
||||||
|
|
||||||
search_box.show_cursor(f, search_box_area);
|
search_box.show_cursor(f, search_box_area);
|
||||||
f.render_widget(layout_block(), results_area);
|
f.render_widget(layout_block().default(), results_area);
|
||||||
f.render_widget(search_box, search_box_area);
|
f.render_widget(search_box, search_box_area);
|
||||||
f.render_widget(help_paragraph, help_area);
|
f.render_widget(help_paragraph, help_area);
|
||||||
}
|
}
|
||||||
@@ -182,7 +182,7 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
|||||||
let error_message = Message::new("No movies found matching your query!");
|
let error_message = Message::new("No movies found matching your query!");
|
||||||
let error_message_popup = Popup::new(error_message).size(Size::Message);
|
let error_message_popup = Popup::new(error_message).size(Size::Message);
|
||||||
|
|
||||||
f.render_widget(layout_block(), results_area);
|
f.render_widget(layout_block().default(), results_area);
|
||||||
f.render_widget(error_message_popup, f.area());
|
f.render_widget(error_message_popup, f.area());
|
||||||
f.render_widget(help_paragraph, help_area);
|
f.render_widget(help_paragraph, help_area);
|
||||||
}
|
}
|
||||||
@@ -204,7 +204,7 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
|||||||
search_results_row_mapping,
|
search_results_row_mapping,
|
||||||
)
|
)
|
||||||
.loading(is_loading)
|
.loading(is_loading)
|
||||||
.block(layout_block())
|
.block(layout_block().default())
|
||||||
.headers([
|
.headers([
|
||||||
"✔",
|
"✔",
|
||||||
"Title",
|
"Title",
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ fn draw_edit_movie_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, are
|
|||||||
.overview
|
.overview
|
||||||
.clone();
|
.clone();
|
||||||
let title = format!("Edit - {movie_title}");
|
let title = format!("Edit - {movie_title}");
|
||||||
|
f.render_widget(title_block_centered(&title), area);
|
||||||
let yes_no_value = app.data.radarr_data.prompt_confirm;
|
let yes_no_value = app.data.radarr_data.prompt_confirm;
|
||||||
let selected_block = app.data.radarr_data.selected_block.get_active_block();
|
let selected_block = app.data.radarr_data.selected_block.get_active_block();
|
||||||
let highlight_yes_no = selected_block == ActiveRadarrBlock::EditMovieConfirmPrompt;
|
let highlight_yes_no = selected_block == ActiveRadarrBlock::EditMovieConfirmPrompt;
|
||||||
@@ -157,7 +158,6 @@ fn draw_edit_movie_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, are
|
|||||||
.title("Cancel")
|
.title("Cancel")
|
||||||
.selected(!yes_no_value && highlight_yes_no);
|
.selected(!yes_no_value && highlight_yes_no);
|
||||||
|
|
||||||
f.render_widget(title_block_centered(&title), area);
|
|
||||||
f.render_widget(prompt_paragraph, paragraph_area);
|
f.render_widget(prompt_paragraph, paragraph_area);
|
||||||
f.render_widget(monitored_checkbox, monitored_area);
|
f.render_widget(monitored_checkbox, monitored_area);
|
||||||
f.render_widget(min_availability_drop_down_button, min_availability_area);
|
f.render_widget(min_availability_drop_down_button, min_availability_area);
|
||||||
|
|||||||
@@ -105,7 +105,6 @@ fn draw_tasks_popup(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
|||||||
.primary()
|
.primary()
|
||||||
};
|
};
|
||||||
let tasks_table = ManagarrTable::new(Some(&mut app.data.radarr_data.tasks), tasks_row_mapping)
|
let tasks_table = ManagarrTable::new(Some(&mut app.data.radarr_data.tasks), tasks_row_mapping)
|
||||||
.block(borderless_block())
|
|
||||||
.loading(app.is_loading)
|
.loading(app.is_loading)
|
||||||
.margin(1)
|
.margin(1)
|
||||||
.footer(help_footer)
|
.footer(help_footer)
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ fn draw_edit_indexer_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
|||||||
let help_paragraph = Paragraph::new(help_text).centered();
|
let help_paragraph = Paragraph::new(help_text).centered();
|
||||||
|
|
||||||
if edit_indexer_modal_option.is_some() {
|
if edit_indexer_modal_option.is_some() {
|
||||||
|
f.render_widget(block, area);
|
||||||
let edit_indexer_modal = edit_indexer_modal_option.as_ref().unwrap();
|
let edit_indexer_modal = edit_indexer_modal_option.as_ref().unwrap();
|
||||||
|
|
||||||
let [_, settings_area, _, buttons_area, help_area] = Layout::vertical([
|
let [_, settings_area, _, buttons_area, help_area] = Layout::vertical([
|
||||||
@@ -163,7 +164,6 @@ fn draw_edit_indexer_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
|||||||
.title("Cancel")
|
.title("Cancel")
|
||||||
.selected(!yes_no_value && highlight_yes_no);
|
.selected(!yes_no_value && highlight_yes_no);
|
||||||
|
|
||||||
f.render_widget(block, area);
|
|
||||||
f.render_widget(rss_checkbox, rss_area);
|
f.render_widget(rss_checkbox, rss_area);
|
||||||
f.render_widget(auto_search_checkbox, auto_search_area);
|
f.render_widget(auto_search_checkbox, auto_search_area);
|
||||||
f.render_widget(interactive_search_checkbox, interactive_search_area);
|
f.render_widget(interactive_search_checkbox, interactive_search_area);
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ fn draw_edit_indexer_settings_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area:
|
|||||||
let help_paragraph = Paragraph::new(help_text).centered();
|
let help_paragraph = Paragraph::new(help_text).centered();
|
||||||
|
|
||||||
if indexer_settings_option.is_some() {
|
if indexer_settings_option.is_some() {
|
||||||
|
f.render_widget(block, area);
|
||||||
let indexer_settings = indexer_settings_option.as_ref().unwrap();
|
let indexer_settings = indexer_settings_option.as_ref().unwrap();
|
||||||
|
|
||||||
let [_, min_age_area, retention_area, max_size_area, rss_sync_area, _, buttons_area, help_area] =
|
let [_, min_age_area, retention_area, max_size_area, rss_sync_area, _, buttons_area, help_area] =
|
||||||
@@ -109,7 +110,6 @@ fn draw_edit_indexer_settings_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area:
|
|||||||
.title("Cancel")
|
.title("Cancel")
|
||||||
.selected(!yes_no_value && highlight_yes_no);
|
.selected(!yes_no_value && highlight_yes_no);
|
||||||
|
|
||||||
f.render_widget(block, area);
|
|
||||||
f.render_widget(save_button, save_area);
|
f.render_widget(save_button, save_area);
|
||||||
f.render_widget(cancel_button, cancel_area);
|
f.render_widget(cancel_button, cancel_area);
|
||||||
f.render_widget(help_paragraph, help_area);
|
f.render_widget(help_paragraph, help_area);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use crate::models::servarr_data::modals::IndexerTestResultModalItem;
|
|||||||
use crate::models::servarr_data::sonarr::sonarr_data::ActiveSonarrBlock;
|
use crate::models::servarr_data::sonarr::sonarr_data::ActiveSonarrBlock;
|
||||||
use crate::models::Route;
|
use crate::models::Route;
|
||||||
use crate::ui::styles::ManagarrStyle;
|
use crate::ui::styles::ManagarrStyle;
|
||||||
use crate::ui::utils::{borderless_block, get_width_from_percentage, title_block};
|
use crate::ui::utils::{get_width_from_percentage, title_block};
|
||||||
use crate::ui::widgets::managarr_table::ManagarrTable;
|
use crate::ui::widgets::managarr_table::ManagarrTable;
|
||||||
use crate::ui::widgets::popup::Size;
|
use crate::ui::widgets::popup::Size;
|
||||||
use crate::ui::{draw_popup, DrawUi};
|
use crate::ui::{draw_popup, DrawUi};
|
||||||
@@ -69,7 +69,6 @@ fn draw_test_all_indexers_test_results(f: &mut Frame<'_>, app: &mut App<'_>, are
|
|||||||
app.data.sonarr_data.indexer_test_all_results.as_mut(),
|
app.data.sonarr_data.indexer_test_all_results.as_mut(),
|
||||||
test_results_row_mapping,
|
test_results_row_mapping,
|
||||||
)
|
)
|
||||||
.block(borderless_block())
|
|
||||||
.loading(is_loading)
|
.loading(is_loading)
|
||||||
.footer(Some(help_footer))
|
.footer(Some(help_footer))
|
||||||
.footer_alignment(Alignment::Center)
|
.footer_alignment(Alignment::Center)
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ fn draw_add_series_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
|||||||
.centered();
|
.centered();
|
||||||
|
|
||||||
search_box.show_cursor(f, search_box_area);
|
search_box.show_cursor(f, search_box_area);
|
||||||
f.render_widget(layout_block(), results_area);
|
f.render_widget(layout_block().default(), results_area);
|
||||||
f.render_widget(search_box, search_box_area);
|
f.render_widget(search_box, search_box_area);
|
||||||
f.render_widget(help_paragraph, help_area);
|
f.render_widget(help_paragraph, help_area);
|
||||||
}
|
}
|
||||||
@@ -168,7 +168,7 @@ fn draw_add_series_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
|||||||
let error_message = Message::new("No series found matching your query!");
|
let error_message = Message::new("No series found matching your query!");
|
||||||
let error_message_popup = Popup::new(error_message).size(Size::Message);
|
let error_message_popup = Popup::new(error_message).size(Size::Message);
|
||||||
|
|
||||||
f.render_widget(layout_block(), results_area);
|
f.render_widget(layout_block().default(), results_area);
|
||||||
f.render_widget(error_message_popup, f.area());
|
f.render_widget(error_message_popup, f.area());
|
||||||
f.render_widget(help_paragraph, help_area);
|
f.render_widget(help_paragraph, help_area);
|
||||||
}
|
}
|
||||||
@@ -191,7 +191,7 @@ fn draw_add_series_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
|||||||
search_results_row_mapping,
|
search_results_row_mapping,
|
||||||
)
|
)
|
||||||
.loading(is_loading)
|
.loading(is_loading)
|
||||||
.block(layout_block())
|
.block(layout_block().default())
|
||||||
.headers([
|
.headers([
|
||||||
"✔", "Title", "Year", "Network", "Seasons", "Rating", "Genres",
|
"✔", "Title", "Year", "Network", "Seasons", "Rating", "Genres",
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -89,6 +89,8 @@ fn draw_edit_series_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, ar
|
|||||||
.clone()
|
.clone()
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
let title = format!("Edit - {series_title}");
|
let title = format!("Edit - {series_title}");
|
||||||
|
f.render_widget(title_block_centered(&title), area);
|
||||||
|
|
||||||
let yes_no_value = app.data.sonarr_data.prompt_confirm;
|
let yes_no_value = app.data.sonarr_data.prompt_confirm;
|
||||||
let selected_block = app.data.sonarr_data.selected_block.get_active_block();
|
let selected_block = app.data.sonarr_data.selected_block.get_active_block();
|
||||||
let highlight_yes_no = selected_block == ActiveSonarrBlock::EditSeriesConfirmPrompt;
|
let highlight_yes_no = selected_block == ActiveSonarrBlock::EditSeriesConfirmPrompt;
|
||||||
@@ -179,7 +181,6 @@ fn draw_edit_series_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, ar
|
|||||||
.title("Cancel")
|
.title("Cancel")
|
||||||
.selected(!yes_no_value && highlight_yes_no);
|
.selected(!yes_no_value && highlight_yes_no);
|
||||||
|
|
||||||
f.render_widget(title_block_centered(&title), area);
|
|
||||||
f.render_widget(prompt_paragraph, paragraph_area);
|
f.render_widget(prompt_paragraph, paragraph_area);
|
||||||
f.render_widget(monitored_checkbox, monitored_area);
|
f.render_widget(monitored_checkbox, monitored_area);
|
||||||
f.render_widget(season_folder_checkbox, season_folder_area);
|
f.render_widget(season_folder_checkbox, season_folder_area);
|
||||||
|
|||||||
@@ -104,7 +104,6 @@ fn draw_tasks_popup(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
|||||||
.primary()
|
.primary()
|
||||||
};
|
};
|
||||||
let tasks_table = ManagarrTable::new(Some(&mut app.data.sonarr_data.tasks), tasks_row_mapping)
|
let tasks_table = ManagarrTable::new(Some(&mut app.data.sonarr_data.tasks), tasks_row_mapping)
|
||||||
.block(borderless_block())
|
|
||||||
.loading(app.is_loading)
|
.loading(app.is_loading)
|
||||||
.margin(1)
|
.margin(1)
|
||||||
.footer(help_footer)
|
.footer(help_footer)
|
||||||
|
|||||||
+6
-3
@@ -24,7 +24,6 @@ pub fn background_block<'a>() -> Block<'a> {
|
|||||||
|
|
||||||
pub fn layout_block<'a>() -> Block<'a> {
|
pub fn layout_block<'a>() -> Block<'a> {
|
||||||
Block::new()
|
Block::new()
|
||||||
.default()
|
|
||||||
.borders(Borders::ALL)
|
.borders(Borders::ALL)
|
||||||
.border_type(BorderType::Rounded)
|
.border_type(BorderType::Rounded)
|
||||||
}
|
}
|
||||||
@@ -70,16 +69,20 @@ pub fn title_style(title: &str) -> Span<'_> {
|
|||||||
format!(" {title} ").bold()
|
format!(" {title} ").bold()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn title_block(title: &str) -> Block<'_> {
|
pub fn unstyled_title_block(title: &str) -> Block<'_> {
|
||||||
layout_block_with_title(title_style(title))
|
layout_block_with_title(title_style(title))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn title_block(title: &str) -> Block<'_> {
|
||||||
|
unstyled_title_block(title).default()
|
||||||
|
}
|
||||||
|
|
||||||
pub fn title_block_centered(title: &str) -> Block<'_> {
|
pub fn title_block_centered(title: &str) -> Block<'_> {
|
||||||
title_block(title).title_alignment(Alignment::Center)
|
title_block(title).title_alignment(Alignment::Center)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn logo_block<'a>() -> Block<'a> {
|
pub fn logo_block<'a>() -> Block<'a> {
|
||||||
layout_block().title(Span::styled(
|
layout_block().default().title(Span::styled(
|
||||||
" Managarr - A Servarr management TUI ",
|
" Managarr - A Servarr management TUI ",
|
||||||
Style::new().magenta().bold().italic(),
|
Style::new().magenta().bold().italic(),
|
||||||
))
|
))
|
||||||
|
|||||||
+14
-3
@@ -5,7 +5,7 @@ mod test {
|
|||||||
borderless_block, centered_rect, convert_to_minutes_hours_days, decorate_peer_style,
|
borderless_block, centered_rect, convert_to_minutes_hours_days, decorate_peer_style,
|
||||||
get_width_from_percentage, layout_block, layout_block_bottom_border, layout_block_top_border,
|
get_width_from_percentage, layout_block, layout_block_bottom_border, layout_block_top_border,
|
||||||
layout_block_top_border_with_title, layout_block_with_title, logo_block, style_block_highlight,
|
layout_block_top_border_with_title, layout_block_with_title, logo_block, style_block_highlight,
|
||||||
style_log_list_item, title_block, title_block_centered, title_style,
|
style_log_list_item, title_block, title_block_centered, title_style, unstyled_title_block,
|
||||||
};
|
};
|
||||||
use pretty_assertions::{assert_eq, assert_str_eq};
|
use pretty_assertions::{assert_eq, assert_str_eq};
|
||||||
use ratatui::layout::{Alignment, Rect};
|
use ratatui::layout::{Alignment, Rect};
|
||||||
@@ -19,7 +19,6 @@ mod test {
|
|||||||
assert_eq!(
|
assert_eq!(
|
||||||
layout_block(),
|
layout_block(),
|
||||||
Block::new()
|
Block::new()
|
||||||
.default()
|
|
||||||
.borders(Borders::ALL)
|
.borders(Borders::ALL)
|
||||||
.border_type(BorderType::Rounded)
|
.border_type(BorderType::Rounded)
|
||||||
);
|
);
|
||||||
@@ -34,7 +33,6 @@ mod test {
|
|||||||
.add_modifier(Modifier::BOLD),
|
.add_modifier(Modifier::BOLD),
|
||||||
);
|
);
|
||||||
let expected_block = Block::new()
|
let expected_block = Block::new()
|
||||||
.default()
|
|
||||||
.borders(Borders::ALL)
|
.borders(Borders::ALL)
|
||||||
.border_type(BorderType::Rounded)
|
.border_type(BorderType::Rounded)
|
||||||
.title(title_span.clone());
|
.title(title_span.clone());
|
||||||
@@ -103,6 +101,19 @@ mod test {
|
|||||||
assert_eq!(title_style("test"), expected_span);
|
assert_eq!(title_style("test"), expected_span);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_unstyled_title_block() {
|
||||||
|
let expected_block = Block::new()
|
||||||
|
.borders(Borders::ALL)
|
||||||
|
.border_type(BorderType::Rounded)
|
||||||
|
.title(Span::styled(
|
||||||
|
" test ",
|
||||||
|
Style::new().add_modifier(Modifier::BOLD),
|
||||||
|
));
|
||||||
|
|
||||||
|
assert_eq!(unstyled_title_block("test"), expected_block);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_title_block() {
|
fn test_title_block() {
|
||||||
let expected_block = Block::new()
|
let expected_block = Block::new()
|
||||||
|
|||||||
@@ -3,7 +3,9 @@ use super::message::Message;
|
|||||||
use super::popup::Size;
|
use super::popup::Size;
|
||||||
use crate::models::stateful_table::StatefulTable;
|
use crate::models::stateful_table::StatefulTable;
|
||||||
use crate::ui::styles::ManagarrStyle;
|
use crate::ui::styles::ManagarrStyle;
|
||||||
use crate::ui::utils::{centered_rect, layout_block_top_border, title_block_centered};
|
use crate::ui::utils::{
|
||||||
|
borderless_block, centered_rect, layout_block_top_border, title_block_centered,
|
||||||
|
};
|
||||||
use crate::ui::widgets::loading_block::LoadingBlock;
|
use crate::ui::widgets::loading_block::LoadingBlock;
|
||||||
use crate::ui::widgets::popup::Popup;
|
use crate::ui::widgets::popup::Popup;
|
||||||
use crate::ui::widgets::selectable_list::SelectableList;
|
use crate::ui::widgets::selectable_list::SelectableList;
|
||||||
@@ -68,7 +70,7 @@ where
|
|||||||
row_mapper,
|
row_mapper,
|
||||||
footer: None,
|
footer: None,
|
||||||
footer_alignment: Alignment::Left,
|
footer_alignment: Alignment::Left,
|
||||||
block: Block::new(),
|
block: borderless_block(),
|
||||||
margin: 0,
|
margin: 0,
|
||||||
is_loading: false,
|
is_loading: false,
|
||||||
highlight_rows: true,
|
highlight_rows: true,
|
||||||
|
|||||||
@@ -3,11 +3,12 @@ mod tests {
|
|||||||
use crate::models::stateful_list::StatefulList;
|
use crate::models::stateful_list::StatefulList;
|
||||||
use crate::models::stateful_table::{SortOption, StatefulTable};
|
use crate::models::stateful_table::{SortOption, StatefulTable};
|
||||||
use crate::models::{HorizontallyScrollableText, Scrollable};
|
use crate::models::{HorizontallyScrollableText, Scrollable};
|
||||||
|
use crate::ui::utils::borderless_block;
|
||||||
use crate::ui::widgets::managarr_table::ManagarrTable;
|
use crate::ui::widgets::managarr_table::ManagarrTable;
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
use ratatui::layout::{Alignment, Constraint};
|
use ratatui::layout::{Alignment, Constraint};
|
||||||
use ratatui::text::Text;
|
use ratatui::text::Text;
|
||||||
use ratatui::widgets::{Block, Cell, Row};
|
use ratatui::widgets::{Cell, Row};
|
||||||
use std::sync::atomic::AtomicUsize;
|
use std::sync::atomic::AtomicUsize;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@@ -26,7 +27,7 @@ mod tests {
|
|||||||
assert_eq!(managarr_table.constraints, Vec::new());
|
assert_eq!(managarr_table.constraints, Vec::new());
|
||||||
assert_eq!(managarr_table.footer, None);
|
assert_eq!(managarr_table.footer, None);
|
||||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||||
assert_eq!(managarr_table.block, Block::new());
|
assert_eq!(managarr_table.block, borderless_block());
|
||||||
assert_eq!(managarr_table.margin, 0);
|
assert_eq!(managarr_table.margin, 0);
|
||||||
assert!(!managarr_table.is_loading);
|
assert!(!managarr_table.is_loading);
|
||||||
assert!(managarr_table.highlight_rows);
|
assert!(managarr_table.highlight_rows);
|
||||||
@@ -62,7 +63,7 @@ mod tests {
|
|||||||
assert_eq!(managarr_table.constraints, Vec::new());
|
assert_eq!(managarr_table.constraints, Vec::new());
|
||||||
assert_eq!(managarr_table.footer, None);
|
assert_eq!(managarr_table.footer, None);
|
||||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||||
assert_eq!(managarr_table.block, Block::new());
|
assert_eq!(managarr_table.block, borderless_block());
|
||||||
assert_eq!(managarr_table.margin, 0);
|
assert_eq!(managarr_table.margin, 0);
|
||||||
assert!(!managarr_table.is_loading);
|
assert!(!managarr_table.is_loading);
|
||||||
assert!(managarr_table.highlight_rows);
|
assert!(managarr_table.highlight_rows);
|
||||||
@@ -98,7 +99,7 @@ mod tests {
|
|||||||
assert_eq!(managarr_table.constraints, Vec::new());
|
assert_eq!(managarr_table.constraints, Vec::new());
|
||||||
assert_eq!(managarr_table.footer, None);
|
assert_eq!(managarr_table.footer, None);
|
||||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||||
assert_eq!(managarr_table.block, Block::new());
|
assert_eq!(managarr_table.block, borderless_block());
|
||||||
assert_eq!(managarr_table.margin, 0);
|
assert_eq!(managarr_table.margin, 0);
|
||||||
assert!(!managarr_table.is_loading);
|
assert!(!managarr_table.is_loading);
|
||||||
assert!(managarr_table.highlight_rows);
|
assert!(managarr_table.highlight_rows);
|
||||||
@@ -131,7 +132,7 @@ mod tests {
|
|||||||
assert_eq!(managarr_table.constraints, Vec::new());
|
assert_eq!(managarr_table.constraints, Vec::new());
|
||||||
assert_eq!(managarr_table.footer, None);
|
assert_eq!(managarr_table.footer, None);
|
||||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||||
assert_eq!(managarr_table.block, Block::new());
|
assert_eq!(managarr_table.block, borderless_block());
|
||||||
assert_eq!(managarr_table.margin, 0);
|
assert_eq!(managarr_table.margin, 0);
|
||||||
assert!(!managarr_table.is_loading);
|
assert!(!managarr_table.is_loading);
|
||||||
assert!(managarr_table.highlight_rows);
|
assert!(managarr_table.highlight_rows);
|
||||||
@@ -164,7 +165,7 @@ mod tests {
|
|||||||
assert_eq!(managarr_table.table_headers, Vec::<String>::new());
|
assert_eq!(managarr_table.table_headers, Vec::<String>::new());
|
||||||
assert_eq!(managarr_table.footer, None);
|
assert_eq!(managarr_table.footer, None);
|
||||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||||
assert_eq!(managarr_table.block, Block::new());
|
assert_eq!(managarr_table.block, borderless_block());
|
||||||
assert_eq!(managarr_table.margin, 0);
|
assert_eq!(managarr_table.margin, 0);
|
||||||
assert!(!managarr_table.is_loading);
|
assert!(!managarr_table.is_loading);
|
||||||
assert!(managarr_table.highlight_rows);
|
assert!(managarr_table.highlight_rows);
|
||||||
|
|||||||
Reference in New Issue
Block a user