From 708862c94bd119ca7e86540fbc68595a6256c9e3 Mon Sep 17 00:00:00 2001 From: Vidhu Kant Sharma Date: Mon, 26 Sep 2022 23:57:18 +0530 Subject: created very basic client editor --- src/App.js | 2 + src/App.scss | 5 ++ src/classes/client.js | 66 +++++++++++++++ src/components/editors/address-editor.js | 87 ++++++++++++++++++++ src/components/editors/client-editor.js | 97 ++++++++++++++++++++++ src/components/editors/contact-editor.js | 66 +++++++++++++++ src/components/editors/item-editor.js | 2 +- src/components/editors/scss/_editor.scss | 105 ++++++++++++++++++++++++ src/components/editors/scss/address-editor.scss | 65 +++++++++++++++ src/components/editors/scss/client-editor.scss | 28 +++++++ src/components/editors/scss/colors.scss | 24 ++++++ src/components/editors/scss/contact-editor.scss | 51 ++++++++++++ src/components/editors/scss/item-editor.scss | 76 ++--------------- src/components/tables/client-table.js | 82 ++++++++++++++++++ src/components/tables/item-table.js | 6 +- src/views/manage/clients.js | 48 +++++++++++ src/views/manage/items.js | 4 +- src/views/manage/scss/management-page.scss | 4 + 18 files changed, 748 insertions(+), 70 deletions(-) create mode 100644 src/classes/client.js create mode 100644 src/components/editors/address-editor.js create mode 100644 src/components/editors/client-editor.js create mode 100644 src/components/editors/contact-editor.js create mode 100644 src/components/editors/scss/_editor.scss create mode 100644 src/components/editors/scss/address-editor.scss create mode 100644 src/components/editors/scss/client-editor.scss create mode 100644 src/components/editors/scss/colors.scss create mode 100644 src/components/editors/scss/contact-editor.scss create mode 100644 src/components/tables/client-table.js create mode 100644 src/views/manage/clients.js create mode 100644 src/views/manage/scss/management-page.scss diff --git a/src/App.js b/src/App.js index d75d8e5..91beeb6 100644 --- a/src/App.js +++ b/src/App.js @@ -18,6 +18,7 @@ import './App.scss'; import { BrowserRouter, Route, Routes } from "react-router-dom"; import ManageItemsPage from './views/manage/items'; +import ManageClientsPage from './views/manage/clients'; const App = () => { return ( @@ -25,6 +26,7 @@ const App = () => {
}/> + }/> 404}/>
diff --git a/src/App.scss b/src/App.scss index 81bde15..4955af6 100644 --- a/src/App.scss +++ b/src/App.scss @@ -39,3 +39,8 @@ main { padding: 0.7rem 0.5rem; box-sizing: border-box; } + +hr { + border: none; + border-top: 1px solid #bd93f9; +} diff --git a/src/classes/client.js b/src/classes/client.js new file mode 100644 index 0000000..524d0ce --- /dev/null +++ b/src/classes/client.js @@ -0,0 +1,66 @@ +/* OpenBills-web - Web based libre billing software + * Copyright (C) 2022 Vidhu Kant Sharma + + * 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 . + */ + +import axios from "axios"; + +export class Address { + constructor() { + this.Text = ""; + this.City = ""; + this.State = ""; + this.PostalCode = ""; + this.Country = ""; + } +} + +export class Contact { + constructor() { + this.Name = ""; + this.Phones = []; + this.Emails = []; + this.Website = ""; + } +} + +export class Client { + constructor() { + this.Id = null; + this.Name = ""; + this.Contact = new Contact(); + this.GSTIN = ""; + this.BillingAddress = new Address(); + this.ShippingAddress = []; + } +} + +export const saveClient = (item, ok, fail) => { + axios.post("/client/new", item) + .then(res => { console.log(res);ok()}) + .catch((err) => fail()) +} + +export const deleteClient = (id, ok, fail) => { + axios.delete(`/client/${id}`) + .then(res => ok()) + .catch((err) => fail()) +} + +export const getAllClients = (ok, fail) => { + axios.get("/client/all") + .then(res => ok(res.data)) + .catch(err => fail()) +} diff --git a/src/components/editors/address-editor.js b/src/components/editors/address-editor.js new file mode 100644 index 0000000..d2b015f --- /dev/null +++ b/src/components/editors/address-editor.js @@ -0,0 +1,87 @@ +/* OpenBills-web - Web based libre billing software + * Copyright (C) 2022 Vidhu Kant Sharma + + * 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 . + */ + +import { Address } from './../../classes/client'; +import './scss/address-editor.scss'; + +import { useState } from 'react'; + +const AddressEditor = (props) => { + const [country, setCountry] = useState(""); + const [state, setState] = useState(""); + const [city, setCity] = useState(""); + const [address, setAddress] = useState(""); + const [postalCode, setPostalCode] = useState(""); + + return ( +
+

{props.heading}

+ +
+
+ + + + + +
+ +
+