import React, { useState, useEffect } from 'react'; import { Button, Drawer, Typography, Grid, Paper, IconButton, FormControl, Input, FormHelperText, } from '@mui/material'; import DeleteIcon from '@mui/icons-material/Delete'; import {getAttachments, AddEditAttachments} from './api'; const ImageDrawer = ({ item, open, setOpen }) => { const [imagePaths, setImagePaths] = useState([]); const [selectedFiles, setSelectedFiles] = useState([]); const [errors, setErrors] = useState({ file: null }); const toggleDrawer = (open) => () => { setOpen(open); }; // Handle file upload const handleFileChange = (event) => { const files = Array.from(event.target.files); const fileURLs = files.map(file => URL.createObjectURL(file)); setImagePaths((prev) => [...prev, ...fileURLs]); setSelectedFiles((prev) => [...prev, ...files]); setErrors({ file: null }); // Clear errors }; // Handle delete image const handleDeleteImage = (image, index) => { setImagePaths((prev) => prev.filter((img, idx) => img !== image)); setSelectedFiles((prev) => prev.filter((_, idx) => idx !== index)); // Ensure file array is in sync }; const getImageName = (file) => { if(!file) return ""; const name = file.name; if(name.indexOf('_') > 0) { const parts = name.split('_'); return parts[parts.length - 1].split('.')[0]; } else { return name; } }; const handUpload = async () => { }; const handleSubmit = async () => { if (selectedFiles) { await AddEditAttachments({id: item.id , attachments: selectedFiles[0], imagePaths:imagePaths}); if(item.id) { const attachments = await getAttachments(item.id); if(attachments && attachments.length>0) { const _attachments = attachments.map(c=> c.attachments) setImagePaths(_attachments); } } } }; useEffect(async() => { if(item.id) { const attachments = await getAttachments(item.id); if(attachments && attachments.length>0) { const _attachments = attachments.map(c=> c.attachments) setImagePaths(_attachments); } } }, [item]) return (
Workorder Images Upload Images {errors.file && {errors.file}} {imagePaths.map((image, index) => ( {/* Set to 6 to allow 2 items per row */} {`Image
{getImageName(selectedFiles[index])} {/* Display the extracted image name */} handleDeleteImage(image, index)} aria-label="delete" >
))}
); }; export default ImageDrawer;