diff options
author | Vidhu Kant Sharma <vidhukant@vidhukant.com> | 2023-08-30 16:48:26 +0530 |
---|---|---|
committer | Vidhu Kant Sharma <vidhukant@vidhukant.com> | 2023-08-30 16:48:26 +0530 |
commit | 4f49ef89df3e9ca00a068a3fc796646b26245cf0 (patch) | |
tree | fc7f297335f0e3be2814c3dba309891a97f87d18 | |
parent | 7a7847555ec3384b3462da6b90138cce3ca7cceb (diff) |
added new table component for clients list
-rw-r--r-- | css/manage/_customer.scss | 53 | ||||
-rw-r--r-- | src/app/manage/customer/list/address.rs | 37 | ||||
-rw-r--r-- | src/app/manage/customer/list/list_item.rs | 38 | ||||
-rw-r--r-- | src/app/manage/customer/list/mod.rs | 51 | ||||
-rw-r--r-- | src/app/manage/customer/mod.rs | 49 |
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> |