This commit is contained in:
insvrgent
2025-02-12 19:32:13 +07:00
parent 1512f8271d
commit 1c8490b9ab
7 changed files with 113 additions and 43 deletions

View File

@@ -265,7 +265,7 @@ const Item = ({
</button>
)} */}
</div>
{itemDescription?.length &&
{itemDescription && itemDescription != 'undefined' && itemDescription?.length &&
<div>
<p style={{color: '#5f5f5f', fontSize: '3.2vw', padding: '5px'}}>{itemDescription}</p>
</div>

View File

@@ -78,10 +78,11 @@ const ItemConfig = ({
}, [textareaRef.current]);
const handleCreate = () => {
handleCreateItem(itemName, itemPrice, selectedImage, previewUrl);
handleCreateItem(itemName, itemPrice, selectedImage, itemDescription);
};
const handleUpdate = () => {
handleUpdateItem(itemName, itemPrice, selectedImage, previewUrl);
console.log(itemDescription)
handleUpdateItem(itemName, itemPrice, selectedImage, itemDescription);
};
return (
@@ -189,7 +190,7 @@ const ItemConfig = ({
resize: 'none', // Prevent manual resize that could cause overflow
}}
placeholder="Tambah deskripsi..."
value={initialDescription}
value={itemDescription}
onChange={(e)=>setItemDescription(e.target.value)}
onFocus={(e) => e.target.style.borderColor = '#60d37e'}
onBlur={(e) => e.target.style.borderColor = '#ccc'}

View File

@@ -166,7 +166,8 @@ const ItemLister = ({
setPreviewUrl(previewUrl);
};
const onCreateItem = async (itemName, itemPrice, selectedImage, previewUrl) => {
const onCreateItem = async (itemName, itemPrice, selectedImage, previewUrl, description) => {
console.log(description)
if (isEdit)
setItemsToCreate((prevItems) => [
...prevItems,
@@ -180,7 +181,7 @@ const ItemLister = ({
},
]);
else {
const newItem = await handleCreateItem(itemTypeId, itemName, itemPrice, selectedImage);
const newItem = await handleCreateItem(itemTypeId, itemName, itemPrice, selectedImage, description);
console.log(newItem)
if (newItem) {
@@ -220,12 +221,12 @@ const ItemLister = ({
);
setisEditItem(0);
};
const onUpdateItem = (itemId, name, price, image) => {
const onUpdateItem = (itemId, name, price, image, description) => {
if (isEdit)
setItemsToUpdate((prev) => [...prev, { itemId, name, price, image }]);
setItemsToUpdate((prev) => [...prev, { itemId, name, price, image, description }]);
else {
console.log(itemId, name, price, image)
handleUpdateItem(itemId, name, price, image);
console.log(itemId, name, price, image, description)
handleUpdateItem(itemId, name, price, image, description);
const itemIndex = items.findIndex((item) => item.itemId === itemId);
if (itemIndex === -1) return; // Item not found
@@ -339,12 +340,13 @@ const ItemLister = ({
const handleSaveType = async () => {
try {
console.log(isVisible);
console.log(typeNameInputRef)
if (itemTypeId) {
// Call the updateItemType function
const updatedItemType = await updateItemType(
shopId,
itemTypeId,
typeNameInputRef.current.value,
editedTypeName,
previewUrl,
selectedImage,
isVisible
@@ -356,7 +358,7 @@ const ItemLister = ({
if (itemType.itemTypeId === itemTypeId) {
return {
...itemType,
name: updatedItemType.name || typeNameInputRef.current.value, // Update name if provided
name: updatedItemType.name, // Update name if provided
image: updatedItemType.image || itemType.image, // Update image if provided
visibility: updatedItemType.visibility !== undefined ? updatedItemType.visibility : isVisible, // Update visibility if provided
};
@@ -365,6 +367,7 @@ const ItemLister = ({
});
});
console.log(itemsToUpdate)
// Iterate through itemsToUpdate and call the API
for (const {
itemId,
@@ -372,6 +375,7 @@ const ItemLister = ({
name,
price,
image,
description
} of itemsToUpdate) {
if (newAvailability != undefined) {
await executeUpdateAvailability(
@@ -405,7 +409,7 @@ const ItemLister = ({
else {
// Call the handleUpdateItem function
const updatedItem = await handleUpdateItem(itemId, name, price, image);
const updatedItem = await handleUpdateItem(itemId, name, price, image, description);
// Update shopItems state
setShopItems((prevShopItems) => {
@@ -432,8 +436,8 @@ const ItemLister = ({
}
}
console.log(itemsToCreate)
for (const { name, price, selectedImage } of itemsToCreate) {
const newItem = await handleCreateItem(itemTypeId, name, price, selectedImage);
for (const { name, price, selectedImage, description } of itemsToCreate) {
const newItem = await handleCreateItem(itemTypeId, name, price, selectedImage, description);
console.log(newItem)
if (newItem) {
setShopItems((prevShopItems) => {
@@ -471,10 +475,10 @@ const ItemLister = ({
]);
// Loop through itemsToCreate and create each item
for (const { name, price, selectedImage } of itemsToCreate) {
for (const { name, price, selectedImage, description } of itemsToCreate) {
// Call handleCreateItem to create a new item
const newItem = await handleCreateItem(newItemType.itemTypeId, name, price, selectedImage);
const newItem = await handleCreateItem(newItemType.itemTypeId, name, price, selectedImage, description);
// If the item was created successfully, update the shopItems state
if (newItem) {
setShopItems((prevShopItems) =>
@@ -541,7 +545,6 @@ const ItemLister = ({
<div className={styles["title-container"]}>
{isEdit && <ItemType blank={true} imageUrl={previewUrl} />}
<input
ref={typeNameInputRef}
className={`${styles.title} ${isEdit ? styles.border : styles.noborder
}`}
value={editedTypeName}
@@ -839,7 +842,7 @@ const ItemLister = ({
imageUrl={item.image}
imageFile={item.selectedImage}
cancelEdit={() => editItem(0)}
handleUpdateItem={(name, price, image) => { updateItemInCreate(item.itemId, name, price, image); setRandomKey(randomKey + 1); console.log(image) }
handleUpdateItem={(name, price, image, description) => { updateItemInCreate(item.itemId, name, price, image, description); setRandomKey(randomKey + 1); console.log(image) }
}
/>
)}
@@ -907,8 +910,8 @@ const ItemLister = ({
onRemoveClick={() => handleRemoveClick(item.itemId)}
isBeingEdit={isEditItem == item.itemId}
isAvailable={item.availability}
handleUpdateItem={(name, price, image) =>
updateItemInCreate(item.itemId, name, price, image)
handleUpdateItem={(name, price, image, description) =>
updateItemInCreate(item.itemId, name, price, image, description)
}
/>
</div>
@@ -939,8 +942,9 @@ const ItemLister = ({
}
cancelEdit={() => editItem(0)}
handleCreateItem={onCreateItem}
handleUpdateItem={(name, price, image) => {
onUpdateItem(item.itemId, name, price, image);
handleUpdateItem={(name, price, image, description) => {
console.log(description)
onUpdateItem(item.itemId, name, price, image, description);
setRandomKey(randomKey + 1); console.log(image);
}
}
@@ -1002,6 +1006,7 @@ const ItemLister = ({
name={item.name}
price={item.price}
qty={item.qty}
description={item.description}
imageUrl={
itemTypeId ? getImageUrl(item.image) : item.image
}
@@ -1010,8 +1015,8 @@ const ItemLister = ({
onRemoveClick={() => handleRemoveClick(item.itemId)}
isBeingEdit={isEditItem == item.itemId}
isAvailable={item.availability}
handleUpdateItem={(name, price, image) =>
onUpdateItem(item.itemId, name, price, image)
handleUpdateItem={(name, price, image, description) =>
onUpdateItem(item.itemId, name, price, image, description)
}
/>
</div>

View File

@@ -61,9 +61,9 @@ export default function ItemType({
<div
className={
styles[
namee
? "item-type"
: rectangular
namee
? "item-type"
: rectangular
? "item-type-rectangular"
: "item-type-nomargin"
]
@@ -79,11 +79,66 @@ export default function ItemType({
top: selected ? "-10px" : "initial",
}}
>
<img
src={previewUrl}
alt={namee}
className={styles["item-type-image"]}
/>
{imageUrl != 'uploads/assets/All.png' ?
<img
src={previewUrl}
alt={namee}
className={styles["item-type-image"]}
/>
:<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100%" height="100%" viewBox="0 0 800.000000 800.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.16, written by Peter Selinger 2001-2019
</metadata>
<g transform="translate(0.000000,800.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M3708 7165 c-3 -4 -44 -10 -90 -15 -266 -28 -530 -91 -753 -180 -11
-4 -42 -16 -70 -26 -27 -9 -129 -57 -225 -106 -186 -94 -188 -95 -262 -145
-26 -18 -52 -33 -58 -33 -5 0 -24 -13 -42 -28 -18 -16 -53 -43 -78 -61 -124
-88 -157 -114 -217 -168 -87 -78 -244 -236 -318 -318 -56 -63 -84 -99 -166
-215 -18 -25 -47 -62 -66 -83 -18 -20 -33 -42 -33 -47 0 -6 -12 -29 -27 -53
-15 -23 -32 -49 -38 -59 -30 -49 -194 -380 -209 -423 -10 -27 -22 -59 -26 -70
-81 -203 -137 -426 -177 -700 -20 -137 -23 -692 -5 -830 24 -184 59 -380 73
-407 5 -10 9 -23 9 -30 0 -25 78 -266 130 -403 25 -65 193 -392 237 -460 171
-264 379 -510 591 -701 59 -52 114 -102 123 -110 9 -7 19 -14 23 -14 7 0 110
-75 173 -125 17 -14 52 -37 78 -51 26 -13 61 -35 79 -49 17 -13 42 -28 56 -34
14 -6 32 -15 40 -21 8 -5 67 -35 130 -66 63 -30 122 -59 130 -64 8 -4 33 -15
55 -23 22 -8 83 -31 135 -50 94 -36 219 -71 410 -117 51 -12 201 -37 305 -50
92 -12 651 -12 740 0 39 6 102 14 140 19 210 28 511 109 663 177 29 13 57 24
62 24 19 0 251 111 357 170 53 30 88 51 118 70 17 11 43 27 59 36 30 16 103
70 164 120 18 14 50 38 72 53 21 14 66 52 99 84 33 31 64 57 67 57 17 0 293
299 337 363 16 23 38 53 51 67 19 21 118 164 151 218 6 9 25 38 43 64 17 26
32 54 32 62 0 8 4 17 9 20 13 8 181 354 181 372 0 5 11 36 24 69 52 132 121
391 146 545 6 41 17 95 23 120 8 31 12 168 12 430 0 326 -3 402 -18 495 -10
61 -22 133 -27 160 -7 45 -22 107 -52 220 -6 22 -35 114 -65 205 -49 149 -97
255 -240 533 -17 35 -81 136 -145 231 -29 41 -149 203 -175 235 -39 47 -342
350 -383 384 -63 51 -297 222 -331 242 -19 11 -65 39 -104 62 -63 38 -193 104
-361 184 -89 42 -370 133 -519 167 -192 44 -230 51 -340 64 -109 12 -697 23
-707 13z m-553 -1586 c12 -23 15 -87 15 -359 l0 -332 -31 -29 -31 -29 -335 0
-335 0 -29 29 -29 29 0 334 1 333 26 30 26 30 326 5 c179 3 339 1 354 -4 15
-4 34 -21 42 -37z m1201 31 c50 -27 54 -57 54 -386 0 -251 -3 -310 -15 -334
-31 -61 -28 -60 -390 -60 -298 0 -332 2 -351 18 -42 34 -44 48 -44 382 0 347
1 354 56 383 31 16 658 13 690 -3z m1267 -31 c15 -27 17 -65 17 -359 l0 -328
-31 -31 -31 -31 -328 0 c-218 0 -337 4 -353 11 -53 24 -57 52 -57 390 0 327 3
354 47 375 23 11 660 22 693 11 14 -4 33 -21 43 -38z m-2504 -1203 c49 -26 51
-42 51 -389 0 -296 -2 -324 -19 -353 -30 -49 -65 -54 -386 -54 -274 0 -289 1
-325 21 -21 12 -43 32 -49 46 -7 16 -11 134 -11 350 l0 327 32 33 32 33 323 0
c261 0 329 -3 352 -14z m1237 -2 c52 -35 54 -49 54 -379 0 -348 -2 -360 -69
-394 -38 -20 -57 -21 -327 -21 -320 0 -355 5 -385 54 -17 29 -19 56 -19 356 1
251 4 330 14 349 27 49 39 50 384 51 283 0 326 -2 348 -16z m1233 2 c49 -26
51 -43 51 -386 0 -285 -2 -322 -17 -349 -33 -56 -61 -61 -384 -61 -271 0 -292
1 -329 20 -69 35 -70 40 -70 394 l0 316 36 40 36 40 325 0 c261 0 329 -3 352
-14z m-2475 -1226 c53 -20 56 -41 56 -389 0 -227 -3 -328 -12 -346 -24 -53
-40 -55 -387 -55 l-320 0 -36 31 -35 31 0 335 0 335 34 34 34 34 320 0 c180 0
332 -4 346 -10z m1243 -7 c50 -33 53 -57 53 -388 0 -254 -3 -311 -15 -335 -30
-58 -43 -60 -389 -60 -223 0 -323 3 -341 12 -53 24 -55 39 -55 394 l0 326 34
34 34 34 326 0 c291 0 330 -2 353 -17z m1227 7 c53 -20 56 -40 56 -396 l0
-326 -34 -34 -34 -34 -326 0 c-358 0 -360 0 -392 61 -21 42 -21 637 1 679 30
58 40 59 387 60 178 0 328 -4 342 -10z"/>
</g>
</svg>
}
{blank && rectangular && (
<div className={styles["item-type-image-container"]}>
<input

View File

@@ -132,7 +132,7 @@ const ItemTypeLister = ({
<ItemType
name={"semua"}
onClick={() => onFilterChange(0)}
imageUrl={getImageUrl("uploads/assets/All.png")}
imageUrl={"uploads/assets/All.png"}
/>
)}
{itemTypes &&

View File

@@ -72,7 +72,8 @@ export async function createItem(
name,
price,
selectedImage,
itemTypeId
itemTypeId,
description
) {
try {
console.log(selectedImage);
@@ -80,6 +81,7 @@ export async function createItem(
formData.append("name", name);
formData.append("price", price);
formData.append("image", selectedImage);
formData.append("description", description);
formData.append("itemTypeId", itemTypeId);
const response = await fetch(`${API_BASE_URL}/item/create/${shopId}`, {
@@ -108,15 +110,20 @@ export async function updateItem(
name,
price,
selectedImage,
isVisible
description
) {
try {
console.log(selectedImage);
console.log(
itemId,
name,
price,
selectedImage,
description);
const formData = new FormData();
formData.append("name", name);
formData.append("price", price);
formData.append("image", selectedImage);
formData.append("isVisible", isVisible);
formData.append("description", description);
const response = await fetch(`${API_BASE_URL}/item/set-item/${itemId}`, {
method: "PUT",

View File

@@ -266,18 +266,20 @@ function CafePage({
itemTypeID,
name,
price,
selectedImage
selectedImage,
description
) =>
createItem(
shopId,
name,
price,
selectedImage,
itemTypeID
itemTypeID,
description
)
}
handleUpdateItem={(itemId, name, price, selectedImage) =>
updateItem(itemId, name, price, selectedImage)
handleUpdateItem={(itemId, name, price, selectedImage, description) =>
updateItem(itemId, name, price, selectedImage, description)
}
/>
))}