From 39819430fa47172c1a3a36218339f6baf86f8983 Mon Sep 17 00:00:00 2001 From: Vidhu Kant Sharma Date: Tue, 27 Sep 2022 21:42:51 +0530 Subject: added edit option for items and brands --- src/components/editors/brand-editor.js | 19 +++--- src/components/editors/item-editor.js | 90 +++++++++++++++------------ src/components/editors/scss/brand-editor.scss | 2 +- src/components/tables/brand-table.js | 6 +- src/components/tables/client-table.js | 2 +- src/components/tables/item-table.js | 2 +- 6 files changed, 68 insertions(+), 53 deletions(-) (limited to 'src/components') diff --git a/src/components/editors/brand-editor.js b/src/components/editors/brand-editor.js index 801a790..26f4cca 100644 --- a/src/components/editors/brand-editor.js +++ b/src/components/editors/brand-editor.js @@ -15,13 +15,13 @@ * along with this program. If not, see . */ -import { Brand, saveBrand } from './../../classes/brand' +import { Brand, saveBrand, editBrand } from './../../classes/brand' import './scss/brand-editor.scss' import { useState, useEffect } from 'react'; const BrandEditor = (props) => { - const [name, setName] = useState(""); + const [name, setName] = useState(props.brand.Name); const handleSubmit = (e) => { e.preventDefault(); @@ -29,13 +29,15 @@ const BrandEditor = (props) => { const brand = new Brand(); brand.Name = name; - // TODO: Save is for new brands. implement modification too - saveBrand(brand, handleSuccess, handleFail); + props.editing + ? editBrand(brand, handleSuccess, handleFail) + : saveBrand(brand, handleSuccess, handleFail); } const handleSuccess = () => { clearAll(); props.callback(); + props.editing && props.hide(); } const handleFail = () => { @@ -47,8 +49,8 @@ const BrandEditor = (props) => { } const handleCancel = () => { - // TODO: hide this component or something clearAll(); + props.editing && props.hide(); } const validateFloatInput = (e, callback) => { @@ -57,7 +59,7 @@ const BrandEditor = (props) => { } return ( -
+

{props.heading}

- + + {props.editing && + + } diff --git a/src/components/editors/item-editor.js b/src/components/editors/item-editor.js index 6c5e976..e2d9d94 100644 --- a/src/components/editors/item-editor.js +++ b/src/components/editors/item-editor.js @@ -15,22 +15,22 @@ * along with this program. If not, see . */ -import { Item, saveItem } from './../../classes/item' -import { Brand, getAllBrands } from './../../classes/brand' -import './scss/item-editor.scss' +import { Item, saveItem, editItem } from './../../classes/item'; +import { Brand, getAllBrands } from './../../classes/brand'; +import './scss/item-editor.scss'; import { useState, useEffect } from 'react'; const ItemEditor = (props) => { - const [name, setName] = useState(""); - const [desc, setDesc] = useState(""); - const [HSN, setHSN] = useState(""); - const [unit, setUnit] = useState(""); - const [unitPrice, setUnitPrice] = useState(0.00); - const [gstP, setGSTP] = useState(0.00); - const [minQty, setMinQty] = useState(0.00); - const [maxQty, setMaxQty] = useState(0.00); - const [brand, setBrand] = useState(new Brand()); + const [name, setName] = useState(props.item.Name); + const [desc, setDesc] = useState(props.item.Description); + const [HSN, setHSN] = useState(props.item.HSN); + const [unit, setUnit] = useState(props.item.UnitOfMeasure); + const [unitPrice, setUnitPrice] = useState(props.item.UnitPrice); + const [gstP, setGSTP] = useState(props.item.GSTPercentage); + const [minQty, setMinQty] = useState(props.item.MinQuantity); + const [maxQty, setMaxQty] = useState(props.item.MaxQuantity); + const [brand, setBrand] = useState(props.item.Brand); const [savedBrands, setSavedBrands] = useState([]); // get saved brands from API @@ -48,19 +48,22 @@ const ItemEditor = (props) => { item.Description = desc; item.HSN = HSN; item.UnitOfMeasure = unit; - item.UnitPrice = unitPrice; - item.GSTPercentage = gstP; - item.MinQuantity = minQty; - item.MaxQuantity = maxQty; + item.UnitPrice = parseFloat(unitPrice); + item.GSTPercentage = parseFloat(gstP); + item.MinQuantity = parseFloat(minQty); + item.MaxQuantity = parseFloat(maxQty); item.Brand = brand; // TODO: Save is for new items. implement modification too - saveItem(item, handleSuccess, handleFail); + props.editing + ? editItem(item, handleSuccess, handleFail) + : saveItem(item, handleSuccess, handleFail); } const handleSuccess = () => { clearAll(); props.callback(); + props.editing && props.hide(); } const handleFail = () => { @@ -85,73 +88,80 @@ const ItemEditor = (props) => { } const handleCancel = () => { - // TODO: hide this component or something clearAll(); - } - - const validateFloatInput = (e, callback) => { - const f = parseFloat(e.target.value); - f && callback(f) + props.editing && props.hide(); } return ( -
+

{props.heading}

{savedBrands && savedBrands.length > 0 && diff --git a/src/components/editors/scss/brand-editor.scss b/src/components/editors/scss/brand-editor.scss index 05b05a7..b9230a4 100644 --- a/src/components/editors/scss/brand-editor.scss +++ b/src/components/editors/scss/brand-editor.scss @@ -17,6 +17,6 @@ @import "editor"; -.brand-editor .buttons { +.brand-editor .buttons.narrow { width: 9.5rem; } diff --git a/src/components/tables/brand-table.js b/src/components/tables/brand-table.js index 4b361a1..db8272c 100644 --- a/src/components/tables/brand-table.js +++ b/src/components/tables/brand-table.js @@ -19,8 +19,8 @@ import './scss/brand-table.scss'; import { deleteBrand } from './../../classes/brand'; const BrandTable = (props) => { - const handleEdit = (i) => { - alert("editing coming soon") + const handleEdit = (b) => { + props.setBrandToEdit(b) } const handleDelete = (b) => { @@ -39,7 +39,7 @@ const BrandTable = (props) => { return (
{props.brands && props.brands.map(i => -
+

{i.Name}

handleEdit(i)}/> diff --git a/src/components/tables/client-table.js b/src/components/tables/client-table.js index 466316a..ffbf5e8 100644 --- a/src/components/tables/client-table.js +++ b/src/components/tables/client-table.js @@ -20,7 +20,7 @@ import { deleteClient } from './../../classes/client'; const ClientTable = (props) => { const handleEdit = (i) => { - alert("editing coming soon") + props.setItemToEdit(i) } const handleDelete = (c) => { diff --git a/src/components/tables/item-table.js b/src/components/tables/item-table.js index e42b272..208fd9c 100644 --- a/src/components/tables/item-table.js +++ b/src/components/tables/item-table.js @@ -22,7 +22,7 @@ import { faPencil, faTrashCan } from '@fortawesome/free-solid-svg-icons' const ItemTable = (props) => { const handleEdit = (i) => { - alert("editing coming soon") + props.setItemToEdit(i) } const handleDelete = (i) => { -- cgit v1.2.3