From 1056421dd45b7e9af6f63a95026cb069cfa34e29 Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Fri, 9 Jan 2026 18:13:36 +0000 Subject: improves balance format/style --- schist_core/schist_models/src/bucket.rs | 13 ++++++++++ .../src/gui/components/bucket_name_and_balance.rs | 28 +++++++++++++--------- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/schist_core/schist_models/src/bucket.rs b/schist_core/schist_models/src/bucket.rs index a28aa8f..67ed31e 100644 --- a/schist_core/schist_models/src/bucket.rs +++ b/schist_core/schist_models/src/bucket.rs @@ -1,3 +1,5 @@ +use std::ops::Div; + use derive_builder::Builder; use diesel::prelude::*; use serde::{Deserialize, Serialize}; @@ -34,3 +36,14 @@ impl Bucket { .all(|t| t.bucket_id.is_none_or(|id| id != self.id)) } } + +impl Bucket { + pub fn pretty_balance_per_100(&self) -> String { + let abs_balance_per_100 = self.balance.unwrap_or(0).div(100).abs(); + if self.balance.is_none_or(|balance| balance >= 0) { + abs_balance_per_100.to_string() + } else { + format!("({abs_balance_per_100})") + } + } +} diff --git a/schist_desktop_gui/src/gui/components/bucket_name_and_balance.rs b/schist_desktop_gui/src/gui/components/bucket_name_and_balance.rs index b08729c..8a5a16e 100644 --- a/schist_desktop_gui/src/gui/components/bucket_name_and_balance.rs +++ b/schist_desktop_gui/src/gui/components/bucket_name_and_balance.rs @@ -1,7 +1,10 @@ -use iced::{widget::row, Element}; +use iced::{ + widget::{row, text}, + Element, Length, +}; use schist_models::Bucket; -use crate::gui::components::{navigation, Text}; +use crate::gui::components::navigation; #[derive(Clone, Debug, PartialEq)] pub struct BucketNameAndBalance { @@ -16,16 +19,19 @@ impl BucketNameAndBalance { impl<'a> From<&'a BucketNameAndBalance> for Element<'a, navigation::Message> { fn from(bucket_name_and_balance: &'a BucketNameAndBalance) -> Self { + let balance_style = if bucket_name_and_balance + .bucket + .balance + .is_none_or(|balance| balance >= 0) + { + text::default + } else { + text::danger + }; + row![ - Text::new(&bucket_name_and_balance.bucket.name).as_element(), - Text::new( - &bucket_name_and_balance - .bucket - .balance - .unwrap_or(0) - .to_string() - ) - .as_element(), + text(bucket_name_and_balance.bucket.name.clone()).width(Length::Fill), + text(bucket_name_and_balance.bucket.pretty_balance_per_100()).style(balance_style), ] .into() } -- cgit v1.2.3