From 170c1a58ebd8b6ff1dceb5f46146f76b601c91ad Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Sun, 8 Feb 2026 15:49:01 +0000 Subject: task-085: factor out Viewable impl for TransactionsView --- .../transactions_view/view_transactions_view.rs | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 schist_desktop_gui/src/gui/components/transactions_view/view_transactions_view.rs (limited to 'schist_desktop_gui/src/gui/components/transactions_view') diff --git a/schist_desktop_gui/src/gui/components/transactions_view/view_transactions_view.rs b/schist_desktop_gui/src/gui/components/transactions_view/view_transactions_view.rs new file mode 100644 index 0000000..37b6655 --- /dev/null +++ b/schist_desktop_gui/src/gui/components/transactions_view/view_transactions_view.rs @@ -0,0 +1,41 @@ +use iced::{ + alignment, + widget::{column, row, Container}, + Element, Length, +}; + +use crate::{ + gui::components::{AccountNavigationEntry, Text}, + style::SPACING_LG, + traits::Viewable, +}; + +use super::{Message, TransactionsView}; + +impl<'a> Viewable<'a, Message> for TransactionsView { + fn view(&'a self) -> Element<'a, Message> { + let navigation = self.navigation.view().map(Message::NavigationMessage); + let main_content = column![ + Text::default("Hello, transactions!").as_element(), + Text::default(&format!( + "{} transactions in this account.", + self.navigation.active_option.clone().map_or( + 0, + |AccountNavigationEntry { account, .. }| self + .transactions_by_account_id + .get(&account.id) + .map_or(0, |transactions| transactions.len()) + ) + )) + .as_element(), + ]; + row![ + Container::new(navigation).width(Length::FillPortion(1)), + Container::new(main_content).width(Length::FillPortion(3)), + ] + .align_y(alignment::Vertical::Center) + .height(Length::Fill) + .spacing(SPACING_LG) + .into() + } +} -- cgit v1.2.3