Implemented the final widget for confirmation prompts!

This commit is contained in:
2024-02-14 14:13:00 -07:00
parent cf14483338
commit 32a8a4de76
14 changed files with 450 additions and 404 deletions
+33 -48
View File
@@ -16,11 +16,12 @@ use crate::ui::radarr_ui::system::{
};
use crate::ui::styles::ManagarrStyle;
use crate::ui::utils::{borderless_block, title_block};
use crate::ui::widgets::confirmation_prompt::ConfirmationPrompt;
use crate::ui::widgets::loading_block::LoadingBlock;
use crate::ui::widgets::managarr_table::ManagarrTable;
use crate::ui::widgets::popup::{Popup, Size};
use crate::ui::widgets::selectable_list::SelectableList;
use crate::ui::{draw_popup_over, draw_prompt_box, DrawUi};
use crate::ui::{draw_popup_over, DrawUi};
#[cfg(test)]
#[path = "system_details_ui_tests.rs"]
@@ -106,62 +107,46 @@ fn draw_logs_popup(f: &mut Frame<'_>, app: &mut App<'_>) {
}
fn draw_tasks_popup(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
let tasks_popup_table = |f: &mut Frame<'_>, app: &mut App<'_>, area: Rect| {
let help_footer = Some(build_context_clue_string(&SYSTEM_TASKS_CONTEXT_CLUES));
let tasks_row_mapping = |task: &Task| {
let task_props = extract_task_props(task);
let help_footer = Some(build_context_clue_string(&SYSTEM_TASKS_CONTEXT_CLUES));
let tasks_row_mapping = |task: &Task| {
let task_props = extract_task_props(task);
Row::new(vec![
Cell::from(task_props.name),
Cell::from(task_props.interval),
Cell::from(task_props.last_execution),
Cell::from(task_props.last_duration),
Cell::from(task_props.next_execution),
])
.primary()
};
let tasks_table = ManagarrTable::new(Some(&mut app.data.radarr_data.tasks), tasks_row_mapping)
.block(borderless_block())
.loading(app.is_loading)
.margin(1)
.footer(help_footer)
.footer_alignment(Alignment::Center)
.headers(TASK_TABLE_HEADERS)
.constraints(TASK_TABLE_CONSTRAINTS);
f.render_widget(title_block("Tasks"), area);
f.render_widget(tasks_table, area);
Row::new(vec![
Cell::from(task_props.name),
Cell::from(task_props.interval),
Cell::from(task_props.last_execution),
Cell::from(task_props.last_duration),
Cell::from(task_props.next_execution),
])
.primary()
};
let tasks_table = ManagarrTable::new(Some(&mut app.data.radarr_data.tasks), tasks_row_mapping)
.block(borderless_block())
.loading(app.is_loading)
.margin(1)
.footer(help_footer)
.footer_alignment(Alignment::Center)
.headers(TASK_TABLE_HEADERS)
.constraints(TASK_TABLE_CONSTRAINTS);
f.render_widget(title_block("Tasks"), area);
f.render_widget(tasks_table, area);
if matches!(
app.get_current_route(),
Route::Radarr(ActiveRadarrBlock::SystemTaskStartConfirmPrompt, _)
) {
draw_popup_over(
f,
app,
area,
tasks_popup_table,
draw_start_task_prompt,
Size::Prompt,
)
} else {
tasks_popup_table(f, app, area);
}
}
fn draw_start_task_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
draw_prompt_box(
f,
area,
"Start Task",
format!(
let prompt = format!(
"Do you want to manually start this task: {}?",
app.data.radarr_data.tasks.current_selection().name
)
.as_str(),
app.data.radarr_data.prompt_confirm,
);
);
let confirmation_prompt = ConfirmationPrompt::new()
.title("Start Task")
.prompt(&prompt)
.yes_no_value(app.data.radarr_data.prompt_confirm);
f.render_widget(Popup::new(confirmation_prompt).size(Size::Prompt), f.size());
}
}
fn draw_updates_popup(f: &mut Frame<'_>, app: &mut App<'_>) {