summaryrefslogtreecommitdiffstats
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/components/buy.rs0
-rw-r--r--src/components/container.rs2
-rw-r--r--src/components/inventory.rs43
-rw-r--r--src/components/mod.rs2
-rw-r--r--src/components/product_overview.rs25
-rw-r--r--src/components/unit_overview.rs21
6 files changed, 74 insertions, 19 deletions
diff --git a/src/components/buy.rs b/src/components/buy.rs
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/components/buy.rs
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! {
- <li class="bg-green-400/40 p-2 first:rounded-l-full last:rounded-r-full">
+ <li class="bg-green-400/40 p-2 text-nowrap first:rounded-l-full last:rounded-r-full">
<button on:click=move |_| {
use_navigate()(path, NavigateOptions::default());
}>{name}</button>
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! {
+ <Container
+ header="Inventory"
+ buttons=vec![
+ (view! { <IconP icon=icondata_io::IoClipboard text="Inventory" /> }, "inventory"),
+ (view! { <IconP icon=icondata_io::IoPricetags text="Consume" /> }, "consume"),
+ (view! { <IconP icon=icondata_io::IoStorefront text="Buy" /> }, "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! {
+ <p>
+ {format!(
+ "You have {products_num} product{plural_s} \
+ in stock with a value \
+ of {products_value} {products_currency}.",
+ )}
+ </p>
+ }
+ }
+ }
+ }
+ </Container>
+ }
+}
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! {
<Container
- header="Inventory"
+ header="Products"
buttons=vec![
- (view! { <IconP icon=icondata_io::IoClipboard text="Inventory" /> }, "inventory"),
- (view! { <IconP icon=icondata_io::IoPricetags text="Consume" /> }, "consume"),
- (view! { <IconP icon=icondata_io::IoStorefront text="Buy" /> }, "buy"),
+ (view! { <IconP icon=icondata_io::IoClipboard text="Show products" /> }, "products"),
+ (view! { <IconP icon=icondata_io::IoPricetags text="Create product" /> }, "create-product"),
+ (view! { <IconP icon=icondata_io::IoPricetags text="Associate barcode with product" /> }, "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! {
- <p>
- {format!(
- "You have {products_num} product{plural_s} \
- in stock with a value \
- of {products_value} {products_currency}.",
- )}
- </p>
+ <p>{format!("You have {} products", products.len())}</p>
}
}
}
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! {
+ <Container
+ header="Units"
+ buttons=vec![
+ (view! { <IconP icon=icondata_io::IoClipboard text="Show unit" /> }, "units"),
+ (view! { <IconP icon=icondata_io::IoClipboard text="Create unit" /> }, "create-unit"),
+ (view! { <IconP icon=icondata_io::IoPricetags text="Create unit property" /> }, "create-unit-property"),
+ ]
+ >
+ {
+ "You have units"
+ }
+ </Container>
+ }
+}