From 3a0e91bda1e93afa33dd182c2e820c94b3e94593 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Sat, 25 Oct 2025 02:15:31 +0200 Subject: feat(treewide): Add further buttons The register product > associate barcode > buy barcode workflow is now usable. The only missing features for an MVP are unit and unit property creation. --- src/components/buy.rs | 0 src/components/container.rs | 2 +- src/components/inventory.rs | 43 ++++++++++++++++++++++++++++++++++++++ src/components/mod.rs | 2 ++ src/components/product_overview.rs | 25 +++++++--------------- src/components/unit_overview.rs | 21 +++++++++++++++++++ 6 files changed, 74 insertions(+), 19 deletions(-) create mode 100644 src/components/buy.rs create mode 100644 src/components/inventory.rs create mode 100644 src/components/unit_overview.rs (limited to 'src/components') diff --git a/src/components/buy.rs b/src/components/buy.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/components/container.rs b/src/components/container.rs index 83b9584..d6d2f03 100644 --- a/src/components/container.rs +++ b/src/components/container.rs @@ -31,7 +31,7 @@ pub fn Container( .into_iter() .map(|(name, path)| { view! { -
  • +
  • diff --git a/src/components/inventory.rs b/src/components/inventory.rs new file mode 100644 index 0000000..275dd0b --- /dev/null +++ b/src/components/inventory.rs @@ -0,0 +1,43 @@ +use leptos::{IntoView, component, view}; + +use crate::{ + api::products_in_storage_wrapped, + components::{async_fetch::AsyncFetch, container::Container, icon_p::IconP}, +}; + +#[component] +pub fn Inventory() -> impl IntoView { + view! { + }, "inventory"), + (view! { }, "consume"), + (view! { }, "buy"), + ] + > + { + AsyncFetch! { + @map_error_in_producer + fetcher = products_in_storage_wrapped(), + producer = |products| { + let products_num = products.len(); + let plural_s = if products_num == 1 { "" } else { "s" }; + let products_value = 2; + let products_currency = "EUR"; + + view! { +

    + {format!( + "You have {products_num} product{plural_s} \ + in stock with a value \ + of {products_value} {products_currency}.", + )} +

    + } + } + } + } +
    + } +} diff --git a/src/components/mod.rs b/src/components/mod.rs index efc4842..2c3d79a 100644 --- a/src/components/mod.rs +++ b/src/components/mod.rs @@ -10,9 +10,11 @@ pub mod input_placeholder; pub mod select_placeholder; // Specific +pub mod inventory; pub mod product_overview; pub mod recipies; pub mod site_header; +pub mod unit_overview; fn get_id() -> u32 { static ID: AtomicU32 = AtomicU32::new(0); diff --git a/src/components/product_overview.rs b/src/components/product_overview.rs index 5413dc1..bf81624 100644 --- a/src/components/product_overview.rs +++ b/src/components/product_overview.rs @@ -1,7 +1,7 @@ use leptos::{IntoView, component, view}; use crate::{ - api::get_products, + api::products_registered_wrapped, components::{async_fetch::AsyncFetch, container::Container, icon_p::IconP}, }; @@ -9,31 +9,20 @@ use crate::{ pub fn ProductOverview() -> impl IntoView { view! { }, "inventory"), - (view! { }, "consume"), - (view! { }, "buy"), + (view! { }, "products"), + (view! { }, "create-product"), + (view! { }, "associate-barcode-product"), ] > { AsyncFetch! { @map_error_in_producer - fetcher = get_products(), + fetcher = products_registered_wrapped(), producer = |products| { - let products_num = products.len(); - let plural_s = if products_num == 1 { "" } else { "s" }; - let products_value = 2; - let products_currency = "EUR"; - view! { -

    - {format!( - "You have {products_num} product{plural_s} \ - in stock with a value \ - of {products_value} {products_currency}.", - )} -

    +

    {format!("You have {} products", products.len())}

    } } } diff --git a/src/components/unit_overview.rs b/src/components/unit_overview.rs new file mode 100644 index 0000000..25e5675 --- /dev/null +++ b/src/components/unit_overview.rs @@ -0,0 +1,21 @@ +use leptos::{IntoView, component, view}; + +use crate::components::{container::Container, icon_p::IconP}; + +#[component] +pub fn UnitOverview() -> impl IntoView { + view! { + }, "units"), + (view! { }, "create-unit"), + (view! { }, "create-unit-property"), + ] + > + { + "You have units" + } + + } +} -- cgit 1.4.1