aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVidhu Kant Sharma <vidhukant@vidhukant.com>2023-08-30 16:48:26 +0530
committerVidhu Kant Sharma <vidhukant@vidhukant.com>2023-08-30 16:48:26 +0530
commit4f49ef89df3e9ca00a068a3fc796646b26245cf0 (patch)
treefc7f297335f0e3be2814c3dba309891a97f87d18
parent7a7847555ec3384b3462da6b90138cce3ca7cceb (diff)
added new table component for clients list
-rw-r--r--css/manage/_customer.scss53
-rw-r--r--src/app/manage/customer/list/address.rs37
-rw-r--r--src/app/manage/customer/list/list_item.rs38
-rw-r--r--src/app/manage/customer/list/mod.rs51
-rw-r--r--src/app/manage/customer/mod.rs49
5 files changed, 20 insertions, 208 deletions
diff --git a/css/manage/_customer.scss b/css/manage/_customer.scss
deleted file mode 100644
index f67bcbb..0000000
--- a/css/manage/_customer.scss
+++ /dev/null
@@ -1,53 +0,0 @@
-#manage-customer-page {
- //$h: calc(var(--nav-height) + calc(var(--main-padding) * 2));
- //height: calc(100vh - $h);
- width: 100%;
-
- .customers-list-wrapper {
- $header-height: 3rem;
- $list-item-height: 2.5rem;
- $pd: 0.7em;
- position: relative;
-
- .customers-list-header, .customers-list-item {
- display: grid;
- grid-template-columns: 5rem 2fr 1fr 1fr;
- padding: 0 $pd;
- align-items: center;
- }
-
- .customers-list-header {
- $br: $pd;
- background-color: var(--body-bg-alt);
- width: 100%;
- height: $header-height;
- position: absolute;
- top: 0;
- left: 0;
- border-bottom: 1px solid var(--link-fg);
- font-weight: bold;
- font-size: 1.2em;
- border-radius: $br $br 0 0;
- }
-
- .customers-list {
- border: 1px solid var(--body-bg-alt);
- min-height: 40rem;
- max-height: 75vh;
- overflow-y: scroll;
- width: 100%;
- position: absolute;
- top: $header-height;
- left: 0;
-
- .customers-list-item {
- grid-template-rows: $list-item-height;
- font-size: 1.2em;
- }
-
- .customers-list-item:nth-child(even) {
- background-color: var(--body-bg-alt);
- }
- }
- }
-}
diff --git a/src/app/manage/customer/list/address.rs b/src/app/manage/customer/list/address.rs
deleted file mode 100644
index 8498530..0000000
--- a/src/app/manage/customer/list/address.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-/* openbills-web - Web client for Libre Billing Software
- * Copyright (C) 2023 Vidhu Kant Sharma <vidhukant@vidhukant.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-use yew::prelude::*;
-
-use crate::models::customer;
-
-#[derive(Properties, PartialEq)]
-pub struct Props {
- pub address: customer::Address,
- pub title: String,
-}
-
-#[function_component(Address)]
-pub fn address(props: &Props) -> Html {
-
- html! {
- <div class={"customer-address"}>
- <span class={"title"}>{props.title.clone()}</span>
- <span>{props.address.address_text.clone()}</span>
- </div>
- }
-}
diff --git a/src/app/manage/customer/list/list_item.rs b/src/app/manage/customer/list/list_item.rs
deleted file mode 100644
index 26ac51d..0000000
--- a/src/app/manage/customer/list/list_item.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-/* openbills-web - Web client for Libre Billing Software
- * Copyright (C) 2023 Vidhu Kant Sharma <vidhukant@vidhukant.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-use yew::prelude::*;
-
-use crate::models::customer;
-
-#[derive(Properties, PartialEq)]
-pub struct Props {
- pub customer: customer::Customer,
- pub s_no: usize,
-}
-
-#[function_component(ListItem)]
-pub fn list_item(props: &Props) -> Html {
- html! {
- <div class={"customers-list-item"}>
- <span>{props.s_no}</span>
- <span>{props.customer.name.clone()}</span>
- <span>{props.customer.gstin.clone()}</span>
- <span class={"options"}></span>
- </div>
- }
-}
diff --git a/src/app/manage/customer/list/mod.rs b/src/app/manage/customer/list/mod.rs
deleted file mode 100644
index 00beb63..0000000
--- a/src/app/manage/customer/list/mod.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-/* openbills-web - Web client for Libre Billing Software
- * Copyright (C) 2023 Vidhu Kant Sharma <vidhukant@vidhukant.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-mod list_item;
-mod address;
-
-use yew::prelude::*;
-
-use crate::models::customer;
-
-#[derive(Properties, PartialEq)]
-pub struct Props {
- pub customers: Vec<customer::Customer>,
-}
-
-#[function_component(CustomersList)]
-pub fn customers_list(props: &Props) -> Html {
- let list_items: Html = props.customers
- .iter()
- .enumerate()
- .map(|(id, c)| html!(<list_item::ListItem key={c.id} s_no={id + 1} customer={c.clone()} />))
- .collect();
-
- html! {
- <div class={"customers-list-wrapper"}>
- <div class={"customers-list-header"}>
- <span>{"S. No"}</span>
- <span>{"Customer Name"}</span>
- <span>{"GSTIN"}</span>
- <span class={"options"}></span>
- </div>
- <div class={"customers-list"}>
- {list_items}
- </div>
- </div>
- }
-}
diff --git a/src/app/manage/customer/mod.rs b/src/app/manage/customer/mod.rs
index 0ae0f24..2f5d505 100644
--- a/src/app/manage/customer/mod.rs
+++ b/src/app/manage/customer/mod.rs
@@ -15,8 +15,6 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-mod list;
-
use yew::prelude::*;
use crate::models::customer;
@@ -54,43 +52,36 @@ pub fn manage_customer() -> Html {
c1s1.country = "India".to_string();
c1.add_shipping_address(c1s1);
- for _ in 0..20 {
+ for _ in 0..5000 {
customers.push(c1.clone());
}
+ let table_template = String::from("1fr 3fr 2fr");
+
+ let customers_table: Html = customers
+ .iter()
+ .enumerate()
+ .map(|(id, c)| html! (
+ <Row key={c.id} template={table_template.clone()}>
+ <Cell>{id + 1}</Cell>
+ <Cell>{c.name.clone()}</Cell>
+ <Cell>{c.gstin.clone()}</Cell>
+ </Row>
+ ))
+ .collect();
+
html! {
<div id={"manage-customer-page"}>
<p>{"To Add: Searching, Viewing, Editing, Deletion, Batch Deletion"}</p>
<Table>
- <Header template={"1fr 3fr 2fr 2fr"}>
- <Cell>
- {"S. No"}
- </Cell>
-
- <Cell>
- {"Customer Name"}
- </Cell>
-
- <Cell>
- {"GSTIN"}
- </Cell>
+ <Header template={table_template.clone()}>
+ <Cell>{"S. No"}</Cell>
+ <Cell>{"Customer Name"}</Cell>
+ <Cell>{"GSTIN"}</Cell>
</Header>
-
<Items>
- <Row template={"1fr 3fr 2fr 2fr"}>
- <Cell>
- {"S. No"}
- </Cell>
-
- <Cell>
- {"Customer Name"}
- </Cell>
-
- <Cell>
- {"GSTIN"}
- </Cell>
- </Row>
+ {customers_table}
</Items>
</Table>
</div>