feat(sonarr): add a scrollable overview popup to series details
A series' overview renders as one line of a description box that does not scroll, so a long overview overflows with no way to read the rest. Pressing v on the series details Seasons tab now opens a popup holding the full overview. The popup owns its own ScrollableText, built fresh from the series' overview when it opens and torn down on Esc so a reopened popup starts at the top. Scrolling mutates only that owned state. The background paragraph renders the Series record's overview, which carries no scroll offset, so it cannot scroll along with the popup. Cite the existing view keybinding from the series details context clues and give the popup its own clue set so it does not inherit the hints of the view underneath. Enrich the shared series fixture to a multi-paragraph overview, and the raw response fixture that encodes the same series, so a scrolled popup is distinguishable from an unscrolled one.
This commit is contained in:
57 files changed
+1454
-62
No files matched your search
@@ -2,7 +2,7 @@
|
||||
mod tests {
|
||||
use crate::models::servarr_data::sonarr::sonarr_data::{
|
||||
ADD_SERIES_BLOCKS, ActiveSonarrBlock, DELETE_SERIES_BLOCKS, EDIT_SERIES_BLOCKS,
|
||||
EPISODE_DETAILS_BLOCKS, SEASON_DETAILS_BLOCKS, SERIES_DETAILS_BLOCKS,
|
||||
EPISODE_DETAILS_BLOCKS, SEASON_DETAILS_BLOCKS, SERIES_DETAILS_BLOCKS, SERIES_OVERVIEW_BLOCKS,
|
||||
};
|
||||
use crate::models::{
|
||||
servarr_data::sonarr::sonarr_data::LIBRARY_BLOCKS, sonarr_models::SeriesStatus,
|
||||
@@ -27,6 +27,7 @@ mod tests {
|
||||
library_ui_blocks.extend(DELETE_SERIES_BLOCKS);
|
||||
library_ui_blocks.extend(EDIT_SERIES_BLOCKS);
|
||||
library_ui_blocks.extend(SERIES_DETAILS_BLOCKS);
|
||||
library_ui_blocks.extend(SERIES_OVERVIEW_BLOCKS);
|
||||
library_ui_blocks.extend(SEASON_DETAILS_BLOCKS);
|
||||
library_ui_blocks.extend(EPISODE_DETAILS_BLOCKS);
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ mod episode_details_ui;
|
||||
#[path = "library_ui_tests.rs"]
|
||||
mod library_ui_tests;
|
||||
mod season_details_ui;
|
||||
mod series_overview_ui;
|
||||
|
||||
pub(super) struct LibraryUi;
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, SERIES
|
||||
use crate::models::sonarr_models::{Season, SeasonStatistics, SonarrHistoryItem};
|
||||
use crate::ui::sonarr_ui::library::episode_details_ui::EpisodeDetailsUi;
|
||||
use crate::ui::sonarr_ui::library::season_details_ui::SeasonDetailsUi;
|
||||
use crate::ui::sonarr_ui::library::series_overview_ui::SeriesOverviewUi;
|
||||
use crate::ui::sonarr_ui::sonarr_ui_utils::create_history_event_details;
|
||||
use crate::ui::styles::ManagarrStyle;
|
||||
use crate::ui::utils::{
|
||||
@@ -40,6 +41,7 @@ impl DrawUi for SeriesDetailsUi {
|
||||
};
|
||||
SeasonDetailsUi::accepts(route)
|
||||
|| EpisodeDetailsUi::accepts(route)
|
||||
|| SeriesOverviewUi::accepts(route)
|
||||
|| SERIES_DETAILS_BLOCKS.contains(&active_sonarr_block)
|
||||
}
|
||||
|
||||
@@ -107,6 +109,10 @@ impl DrawUi for SeriesDetailsUi {
|
||||
if SeasonDetailsUi::accepts(route) {
|
||||
SeasonDetailsUi::draw(f, app, area);
|
||||
}
|
||||
|
||||
if SeriesOverviewUi::accepts(route) {
|
||||
SeriesOverviewUi::draw(f, app, area);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ mod tests {
|
||||
use crate::app::App;
|
||||
use crate::models::servarr_data::sonarr::sonarr_data::{
|
||||
ActiveSonarrBlock, EPISODE_DETAILS_BLOCKS, SEASON_DETAILS_BLOCKS, SERIES_DETAILS_BLOCKS,
|
||||
SERIES_OVERVIEW_BLOCKS,
|
||||
};
|
||||
use crate::ui::DrawUi;
|
||||
use crate::ui::sonarr_ui::library::series_details_ui::SeriesDetailsUi;
|
||||
@@ -15,6 +16,7 @@ mod tests {
|
||||
let mut blocks = SERIES_DETAILS_BLOCKS.clone().to_vec();
|
||||
blocks.extend(SEASON_DETAILS_BLOCKS);
|
||||
blocks.extend(EPISODE_DETAILS_BLOCKS);
|
||||
blocks.extend(SERIES_OVERVIEW_BLOCKS);
|
||||
|
||||
ActiveSonarrBlock::iter().for_each(|active_sonarr_block| {
|
||||
if blocks.contains(&active_sonarr_block) {
|
||||
@@ -28,6 +30,7 @@ mod tests {
|
||||
mod snapshot_tests {
|
||||
use crate::models::stateful_table::StatefulTable;
|
||||
use crate::ui::ui_test_utils::test_utils::TerminalSize;
|
||||
use pretty_assertions::assert_str_eq;
|
||||
use rstest::rstest;
|
||||
|
||||
use super::*;
|
||||
@@ -134,5 +137,43 @@ mod tests {
|
||||
|
||||
insta::assert_snapshot!(output);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_series_details_ui_renders_series_overview_over_series_details() {
|
||||
let mut app = App::test_default_fully_populated();
|
||||
app.push_navigation_stack(ActiveSonarrBlock::SeriesDetails.into());
|
||||
app.push_navigation_stack(ActiveSonarrBlock::SeriesOverview.into());
|
||||
|
||||
let output = render_to_string_with_app(TerminalSize::Large, &mut app, |f, app| {
|
||||
SeriesDetailsUi::draw(f, app, f.area());
|
||||
});
|
||||
|
||||
insta::assert_snapshot!(output);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_scrolling_the_series_overview_does_not_scroll_the_series_details_background() {
|
||||
let mut app = App::test_default_fully_populated();
|
||||
app.push_navigation_stack(ActiveSonarrBlock::SeriesDetails.into());
|
||||
let before = render_to_string_with_app(TerminalSize::Large, &mut app, |f, app| {
|
||||
SeriesDetailsUi::draw(f, app, f.area());
|
||||
});
|
||||
|
||||
app
|
||||
.data
|
||||
.sonarr_data
|
||||
.series_overview_modal
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.overview
|
||||
.offset = 3;
|
||||
|
||||
let after = render_to_string_with_app(TerminalSize::Large, &mut app, |f, app| {
|
||||
SeriesDetailsUi::draw(f, app, f.area());
|
||||
});
|
||||
|
||||
assert_str_eq!(before, after);
|
||||
assert_contains!(before, "Overview: Blah blah blah");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
use crate::app::App;
|
||||
use crate::models::Route;
|
||||
use crate::models::servarr_data::sonarr::sonarr_data::SERIES_OVERVIEW_BLOCKS;
|
||||
use crate::models::sonarr_models::Series;
|
||||
use crate::ui::styles::{primary_style, unmonitored_style};
|
||||
use crate::ui::utils::title_block_centered;
|
||||
use crate::ui::widgets::loading_block::LoadingBlock;
|
||||
use crate::ui::widgets::popup::Size;
|
||||
use crate::ui::{DrawUi, draw_popup};
|
||||
use ratatui::Frame;
|
||||
use ratatui::layout::Rect;
|
||||
use ratatui::style::Style;
|
||||
use ratatui::text::{Line, Span, Text};
|
||||
use ratatui::widgets::{Paragraph, Wrap};
|
||||
|
||||
#[cfg(test)]
|
||||
#[path = "series_overview_ui_tests.rs"]
|
||||
mod series_overview_ui_tests;
|
||||
|
||||
pub(super) struct SeriesOverviewUi;
|
||||
|
||||
impl DrawUi for SeriesOverviewUi {
|
||||
fn accepts(route: Route) -> bool {
|
||||
let Route::Sonarr(active_sonarr_block, _) = route else {
|
||||
return false;
|
||||
};
|
||||
SERIES_OVERVIEW_BLOCKS.contains(&active_sonarr_block)
|
||||
}
|
||||
|
||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||
if app.data.sonarr_data.series_overview_modal.is_some() {
|
||||
let draw_series_overview_popup = |f: &mut Frame<'_>, app: &mut App<'_>, popup_area: Rect| {
|
||||
draw_series_overview(f, app, popup_area);
|
||||
};
|
||||
|
||||
draw_popup(f, app, draw_series_overview_popup, Size::Large);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn draw_series_overview(f: &mut Frame<'_>, app: &App<'_>, area: Rect) {
|
||||
let block = title_block_centered("Overview");
|
||||
|
||||
match app.data.sonarr_data.series_overview_modal.as_ref() {
|
||||
Some(series_overview_modal) if !app.is_loading => {
|
||||
let style = if app.data.sonarr_data.series.is_empty() {
|
||||
primary_style()
|
||||
} else {
|
||||
style_from_series(app.data.sonarr_data.series.current_selection())
|
||||
};
|
||||
let overview = &series_overview_modal.overview;
|
||||
let text = Text::from(
|
||||
overview
|
||||
.items
|
||||
.iter()
|
||||
.map(|line| overview_line(line, style))
|
||||
.collect::<Vec<Line<'static>>>(),
|
||||
);
|
||||
|
||||
let paragraph = Paragraph::new(text)
|
||||
.block(block)
|
||||
.wrap(Wrap { trim: false })
|
||||
.scroll((overview.offset, 0));
|
||||
|
||||
f.render_widget(paragraph, area);
|
||||
}
|
||||
_ => f.render_widget(
|
||||
LoadingBlock::new(
|
||||
app.is_loading || app.data.sonarr_data.series_overview_modal.is_none(),
|
||||
block,
|
||||
),
|
||||
area,
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
fn style_from_series(series: &Series) -> Style {
|
||||
if !series.monitored {
|
||||
return unmonitored_style();
|
||||
}
|
||||
|
||||
primary_style()
|
||||
}
|
||||
|
||||
fn overview_line(line: &str, style: Style) -> Line<'static> {
|
||||
Line::from(Span::styled(line.trim_end().to_owned(), style))
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use pretty_assertions::assert_eq;
|
||||
use ratatui::style::Modifier;
|
||||
use ratatui::text::Line;
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::app::App;
|
||||
use crate::models::servarr_data::sonarr::sonarr_data::{
|
||||
ActiveSonarrBlock, SERIES_OVERVIEW_BLOCKS,
|
||||
};
|
||||
use crate::models::sonarr_models::Series;
|
||||
use crate::ui::DrawUi;
|
||||
use crate::ui::sonarr_ui::library::series_overview_ui::{
|
||||
SeriesOverviewUi, overview_line, style_from_series,
|
||||
};
|
||||
use crate::ui::styles::{primary_style, unmonitored_style};
|
||||
use crate::ui::ui_test_utils::test_utils::render_to_string_with_app;
|
||||
|
||||
#[test]
|
||||
fn test_series_overview_ui_accepts() {
|
||||
ActiveSonarrBlock::iter().for_each(|active_sonarr_block| {
|
||||
if SERIES_OVERVIEW_BLOCKS.contains(&active_sonarr_block) {
|
||||
assert!(SeriesOverviewUi::accepts(active_sonarr_block.into()));
|
||||
} else {
|
||||
assert!(!SeriesOverviewUi::accepts(active_sonarr_block.into()));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_style_from_series_monitored() {
|
||||
let series = Series {
|
||||
monitored: true,
|
||||
..Series::default()
|
||||
};
|
||||
|
||||
let style = style_from_series(&series);
|
||||
|
||||
assert_eq!(style, primary_style());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_style_from_series_unmonitored() {
|
||||
let series = Series {
|
||||
monitored: false,
|
||||
..Series::default()
|
||||
};
|
||||
|
||||
let style = style_from_series(&series);
|
||||
|
||||
assert_eq!(style, unmonitored_style());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_overview_line_does_not_split_a_label_from_a_colon_in_the_prose() {
|
||||
let line = overview_line(
|
||||
"It was filmed in Madison, Wisconsin: a city the crew never really left.",
|
||||
primary_style(),
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
span_contents(&line),
|
||||
vec!["It was filmed in Madison, Wisconsin: a city the crew never really left."]
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_overview_line_renders_the_prose_without_bolding_it() {
|
||||
let line = overview_line("Overview: a prose line", primary_style());
|
||||
|
||||
assert_eq!(line.spans.len(), 1);
|
||||
assert!(!line.spans[0].style.add_modifier.contains(Modifier::BOLD));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_overview_line_applies_the_given_style() {
|
||||
let line = overview_line("an unmonitored series", unmonitored_style());
|
||||
|
||||
assert_eq!(line.spans[0].style.fg, unmonitored_style().fg);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_overview_line_trims_a_trailing_carriage_return() {
|
||||
let line = overview_line(
|
||||
"The first season took seven years to finish.\r",
|
||||
primary_style(),
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
span_contents(&line),
|
||||
vec!["The first season took seven years to finish."]
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_overview_line_renders_a_carriage_return_only_line_as_blank() {
|
||||
let line = overview_line("\r", primary_style());
|
||||
|
||||
assert_eq!(span_contents(&line), vec![""]);
|
||||
}
|
||||
|
||||
fn span_contents(line: &Line<'_>) -> Vec<String> {
|
||||
line
|
||||
.spans
|
||||
.iter()
|
||||
.map(|span| span.content.to_string())
|
||||
.collect()
|
||||
}
|
||||
|
||||
mod snapshot_tests {
|
||||
use crate::models::ScrollableText;
|
||||
use crate::models::servarr_data::sonarr::modals::SeriesOverviewModal;
|
||||
use crate::models::stateful_table::StatefulTable;
|
||||
use crate::ui::ui_test_utils::test_utils::TerminalSize;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_series_overview_ui_renders() {
|
||||
let mut app = App::test_default_fully_populated();
|
||||
app.push_navigation_stack(ActiveSonarrBlock::SeriesOverview.into());
|
||||
|
||||
let output = render_to_string_with_app(TerminalSize::Large, &mut app, |f, app| {
|
||||
SeriesOverviewUi::draw(f, app, f.area());
|
||||
});
|
||||
|
||||
insta::assert_snapshot!(output);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_series_overview_ui_renders_loading() {
|
||||
let mut app = App::test_default_fully_populated();
|
||||
app.is_loading = true;
|
||||
app.push_navigation_stack(ActiveSonarrBlock::SeriesOverview.into());
|
||||
|
||||
let output = render_to_string_with_app(TerminalSize::Large, &mut app, |f, app| {
|
||||
SeriesOverviewUi::draw(f, app, f.area());
|
||||
});
|
||||
|
||||
insta::assert_snapshot!(output);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_series_overview_ui_renders_scrolled() {
|
||||
let mut app = App::test_default_fully_populated();
|
||||
app.push_navigation_stack(ActiveSonarrBlock::SeriesOverview.into());
|
||||
app
|
||||
.data
|
||||
.sonarr_data
|
||||
.series_overview_modal
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.overview
|
||||
.offset = 2;
|
||||
|
||||
let output = render_to_string_with_app(TerminalSize::Large, &mut app, |f, app| {
|
||||
SeriesOverviewUi::draw(f, app, f.area());
|
||||
});
|
||||
|
||||
insta::assert_snapshot!(output);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_series_overview_ui_renders_a_series_with_no_overview() {
|
||||
let mut app = App::test_default_fully_populated();
|
||||
app.push_navigation_stack(ActiveSonarrBlock::SeriesOverview.into());
|
||||
app.data.sonarr_data.series_overview_modal = Some(SeriesOverviewModal {
|
||||
overview: ScrollableText::with_string(String::new()),
|
||||
});
|
||||
|
||||
let output = render_to_string_with_app(TerminalSize::Large, &mut app, |f, app| {
|
||||
SeriesOverviewUi::draw(f, app, f.area());
|
||||
});
|
||||
|
||||
insta::assert_snapshot!(output);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_series_overview_ui_renders_nothing_when_the_series_overview_modal_is_undefined() {
|
||||
let mut app = App::test_default_fully_populated();
|
||||
app.push_navigation_stack(ActiveSonarrBlock::SeriesOverview.into());
|
||||
app.data.sonarr_data.series_overview_modal = None;
|
||||
|
||||
let output = render_to_string_with_app(TerminalSize::Large, &mut app, |f, app| {
|
||||
SeriesOverviewUi::draw(f, app, f.area());
|
||||
});
|
||||
|
||||
insta::assert_snapshot!(output);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_series_overview_ui_renders_with_zero_series() {
|
||||
let mut app = App::test_default_fully_populated();
|
||||
app.data.sonarr_data.series = StatefulTable::default();
|
||||
app.push_navigation_stack(ActiveSonarrBlock::SeriesOverview.into());
|
||||
|
||||
let output = render_to_string_with_app(TerminalSize::Large, &mut app, |f, app| {
|
||||
SeriesOverviewUi::draw(f, app, f.area());
|
||||
});
|
||||
|
||||
assert_contains!(output, "Blah blah blah");
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -11,9 +11,9 @@ expression: output
|
||||
╭───────────────────────────────────────────── Edit - Test ─────────────────────────────────────────────╮
|
||||
│ Blah blah blah │
|
||||
│ │
|
||||
│ It was filmed in Madison, Wisconsin: a city the crew never really left. │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ The first season took seven years to finish. │
|
||||
│ │
|
||||
│ ╭───╮ │
|
||||
│ Monitored: │ ✔ │ │
|
||||
|
||||
+3
-3
@@ -7,13 +7,13 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO ╭───────────────────────────────────────────── Edit - Test ─────────────────────────────────────────────╮ │
|
||||
│Status: Continuing │ Blah blah blah │ │
|
||||
│Genres: cool, famil│ │ │
|
||||
│Rating: 84% │ │ │
|
||||
│Rating: 84% │ It was filmed in Madison, Wisconsin: a city the crew never really left. │ │
|
||||
│Year: 2022 │ │ │
|
||||
│Runtime: 63 minutes│ │ │
|
||||
│Runtime: 63 minutes│ The first season took seven years to finish. │ │
|
||||
│Path: /nfs/tv/Test │ │ │
|
||||
│Quality Profile: Bl│ ╭───╮ │ │
|
||||
│Language Profile: E│ Monitored: │ ✔ │ │ │
|
||||
|
||||
+2
-2
@@ -11,9 +11,9 @@ expression: output
|
||||
╭───────────────────────────────────────────── Edit - Test ─────────────────────────────────────────────╮
|
||||
│ Blah blah blah │
|
||||
│ │
|
||||
│ It was filmed in Madison, Wisconsin: a city the crew never really left. │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ The first season took seven years to finish. │
|
||||
│ │
|
||||
│ ╭───╮ │
|
||||
│ Monitored: │ ✔ │ │
|
||||
|
||||
+3
-3
@@ -7,13 +7,13 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO ╭───────────────────────────────────────────── Edit - Test ─────────────────────────────────────────────╮ │
|
||||
│Status: Continuing │ Blah blah blah │ │
|
||||
│Genres: cool, famil│ │ │
|
||||
│Rating: 84% │ │ │
|
||||
│Rating: 84% │ It was filmed in Madison, Wisconsin: a city the crew never really left. │ │
|
||||
│Year: 2022 │ │ │
|
||||
│Runtime: 63 minutes│ │ │
|
||||
│Runtime: 63 minutes│ The first season took seven years to finish. │ │
|
||||
│Path: /nfs/tv/Test │ │ │
|
||||
│Quality Profile: Bl│ ╭───╮ │ │
|
||||
│Language Profile: E│ Monitored: │ ✔ │ │ │
|
||||
|
||||
+2
-2
@@ -11,9 +11,9 @@ expression: output
|
||||
╭───────────────────────────────────────────── Edit - Test ─────────────────────────────────────────────╮
|
||||
│ Blah blah blah │
|
||||
│ │
|
||||
│ It was filmed in Madison, Wisconsin: a city the crew never really left. │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ The first season took seven years to finish. │
|
||||
│ │
|
||||
│ ╭───╮ │
|
||||
│ Monitored: │ ✔ │ │
|
||||
|
||||
+3
-3
@@ -7,13 +7,13 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO ╭───────────────────────────────────────────── Edit - Test ─────────────────────────────────────────────╮ │
|
||||
│Status: Continuing │ Blah blah blah │ │
|
||||
│Genres: cool, famil│ │ │
|
||||
│Rating: 84% │ │ │
|
||||
│Rating: 84% │ It was filmed in Madison, Wisconsin: a city the crew never really left. │ │
|
||||
│Year: 2022 │ │ │
|
||||
│Runtime: 63 minutes│ │ │
|
||||
│Runtime: 63 minutes│ The first season took seven years to finish. │ │
|
||||
│Path: /nfs/tv/Test │ │ │
|
||||
│Quality Profile: Bl│ ╭───╮ │ │
|
||||
│Language Profile: E│ Monitored: │ ✔ │ │ │
|
||||
|
||||
+2
-2
@@ -11,9 +11,9 @@ expression: output
|
||||
╭───────────────────────────────────────────── Edit - Test ─────────────────────────────────────────────╮
|
||||
│ Blah blah blah │
|
||||
│ │
|
||||
│ It was filmed in Madison, Wisconsin: a city the crew never really left. │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ The first season took seven years to finish. │
|
||||
│ │
|
||||
│ ╭───╮ │
|
||||
│ Monitored: │ ✔ │ │
|
||||
|
||||
+3
-3
@@ -7,13 +7,13 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO ╭───────────────────────────────────────────── Edit - Test ─────────────────────────────────────────────╮ │
|
||||
│Status: Continuing │ Blah blah blah │ │
|
||||
│Genres: cool, famil│ │ │
|
||||
│Rating: 84% │ │ │
|
||||
│Rating: 84% │ It was filmed in Madison, Wisconsin: a city the crew never really left. │ │
|
||||
│Year: 2022 │ │ │
|
||||
│Runtime: 63 minutes│ │ │
|
||||
│Runtime: 63 minutes│ The first season took seven years to finish. │ │
|
||||
│Path: /nfs/tv/Test │ │ │
|
||||
│Quality Profile: Bl│ ╭───╮ │ │
|
||||
│Language Profile: E│ Monitored: │ ✔ │ │ │
|
||||
|
||||
+2
-2
@@ -11,9 +11,9 @@ expression: output
|
||||
╭───────────────────────────────────────────── Edit - Test ─────────────────────────────────────────────╮
|
||||
│ Blah blah blah │
|
||||
│ │
|
||||
│ It was filmed in Madison, Wisconsin: a city the crew never really left. │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ The first season took seven years to finish. │
|
||||
│ │
|
||||
│ ╭───╮ │
|
||||
│ Monitored: │ ✔ │ │
|
||||
|
||||
+3
-3
@@ -7,13 +7,13 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO ╭───────────────────────────────────────────── Edit - Test ─────────────────────────────────────────────╮ │
|
||||
│Status: Continuing │ Blah blah blah │ │
|
||||
│Genres: cool, famil│ │ │
|
||||
│Rating: 84% │ │ │
|
||||
│Rating: 84% │ It was filmed in Madison, Wisconsin: a city the crew never really left. │ │
|
||||
│Year: 2022 │ │ │
|
||||
│Runtime: 63 minutes│ │ │
|
||||
│Runtime: 63 minutes│ The first season took seven years to finish. │ │
|
||||
│Path: /nfs/tv/Test │ │ │
|
||||
│Quality Profile: Bl│ ╭───╮ │ │
|
||||
│Language Profile: E│ Monitored: │ ✔ │ │ │
|
||||
|
||||
+2
-2
@@ -11,9 +11,9 @@ expression: output
|
||||
╭───────────────────────────────────────────── Edit - Test ─────────────────────────────────────────────╮
|
||||
│ Blah blah blah │
|
||||
│ │
|
||||
│ It was filmed in Madison, Wisconsin: a city the crew never really left. │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ The first season took seven years to finish. │
|
||||
│ │
|
||||
│ ╭───╮ │
|
||||
│ Monitored: │ ✔ │ │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
=> Test 2022 HBO Continuin TV-MA Standard Bluray-1080p English 59.51 GB 🏷
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ expression: output
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blah │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HBO │
|
||||
│Status: Continuing │
|
||||
│Genres: cool, family, fun │
|
||||
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
---
|
||||
source: src/ui/sonarr_ui/library/series_details_ui_tests.rs
|
||||
expression: output
|
||||
---
|
||||
|
||||
|
||||
|
||||
╭ Test ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
|
||||
│Title: Test │
|
||||
│Overview: Blah blah blahIt was filmed in Madison, Wisconsin: a city the crew never really left.The first season took seven years to finish. │
|
||||
│Network: HB╭─────────────────────────────────────────────────────── Overview ───────────────────────────────────────────────────────╮ │
|
||||
│Status: Con│Blah blah blah │ │
|
||||
│Genres: coo│ │ │
|
||||
│Rating: 84%│It was filmed in Madison, Wisconsin: a city the crew never really left. │ │
|
||||
│Year: 2022 │ │ │
|
||||
│Runtime: 63│The first season took seven years to finish. │ │
|
||||
│Path: /nfs/│ │ │
|
||||
│Quality Pro│ │ │
|
||||
│Language Pr│ │ │
|
||||
│Monitored: │ │ │
|
||||
│Size on Dis│ │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
│╭ Series D│ │───────────╮│
|
||||
││ Seasons ││ │ ││
|
||||
││──────────│ │───────────││
|
||||
││ Monitor│ │ ││
|
||||
││=> 🏷 │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ │ │ ││
|
||||
││ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ││
|
||||
││ ││
|
||||
││ ││
|
||||
│╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯│
|
||||
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
---
|
||||
source: src/ui/sonarr_ui/library/series_overview_ui_tests.rs
|
||||
expression: output
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
╭─────────────────────────────────────────────────────── Overview ───────────────────────────────────────────────────────╮
|
||||
│Blah blah blah │
|
||||
│ │
|
||||
│It was filmed in Madison, Wisconsin: a city the crew never really left. │
|
||||
│ │
|
||||
│The first season took seven years to finish. │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
---
|
||||
source: src/ui/sonarr_ui/library/series_overview_ui_tests.rs
|
||||
expression: output
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
╭─────────────────────────────────────────────────────── Overview ───────────────────────────────────────────────────────╮
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
---
|
||||
source: src/ui/sonarr_ui/library/series_overview_ui_tests.rs
|
||||
expression: output
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
╭─────────────────────────────────────────────────────── Overview ───────────────────────────────────────────────────────╮
|
||||
│ │
|
||||
│ │
|
||||
│ Loading ... │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
---
|
||||
source: src/ui/sonarr_ui/library/series_overview_ui_tests.rs
|
||||
expression: output
|
||||
---
|
||||
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
---
|
||||
source: src/ui/sonarr_ui/library/series_overview_ui_tests.rs
|
||||
expression: output
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
╭─────────────────────────────────────────────────────── Overview ───────────────────────────────────────────────────────╮
|
||||
│It was filmed in Madison, Wisconsin: a city the crew never really left. │
|
||||
│ │
|
||||
│The first season took seven years to finish. │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
||||
Reference in new issue
Block a user