{"version":3,"file":"AttachmentUploader.aOHyNZPM.js","sources":["../../src/components/attachments/AttachmentUploader.jsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\r\nimport { Button, IconButton, Paper, Switch, Tooltip, Typography } from \"@mui/material\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport ProgressBar from \"src/components/layout/Progress/ProgressBar\";\r\nimport { useUserData } from \"src/context/userContext\";\r\nimport { attachment_upload } from \"./AttachmentFunctions\";\r\nimport { pumiFi_attachment_upload } from \"src/data/pumiFi/pumiFiClass\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport { aikaPvmStringLong } from \"src/components/js/statics1\";\r\nimport { CloseIcon } from \"src/components/icons/ActionIcons\";\r\nimport { allowAccess_KalleUrhoOy_Toiminnot } from \"src/data/ifs/allowAccess\";\r\nimport styled from \"styled-components\";\r\nimport ProgressCirc from \"../layout/Progress/ProgressCirc\";\r\n\r\nconst ProcessLogContainer = styled(Paper)`\r\n font-family: monospace;\r\n padding: 1px;\r\n margin-top: 1px;\r\n text-align: left;\r\n font-size: 0.8rem;\r\n width: 100%;\r\n position: relative;\r\n border: ${(props) => (props.$uploadError ? \"1px solid red\" : \"none\")};\r\n border-radius: 4px;\r\n`;\r\n\r\nexport default function AttachmentUploader({ onUpload = () => {}, keikkaId = 0 }) {\r\n const { token, userAsiakas, user } = useUserData();\r\n\r\n const [dragging, setDragging] = useState(false);\r\n const [isLoadingFileName, setIsLoadingFileName] = useState(null);\r\n const [isUploadToPumiFiChecked, setIsUploadToPumiFiChecked] = useState(true);\r\n const [processLog, setProcessLog] = useState([]);\r\n const [uploadError, setUploadError] = useState(false);\r\n\r\n // const [uploadingIndexNumber, setUploadingIndexNumber] = useState(0);\r\n const [uploadTotalBytes, setUploadTotalBytes] = useState(0);\r\n const [uploadedBytes, setUploadedBytes] = useState(0);\r\n\r\n const handleFileChange = async (event) => {\r\n const input = event.target;\r\n await uploadFiles(event.target.files);\r\n input.value = null;\r\n };\r\n\r\n useEffect(() => {\r\n const uploadAlsoToPumiFi = allowAccess_KalleUrhoOy_Toiminnot(user);\r\n setIsUploadToPumiFiChecked(uploadAlsoToPumiFi);\r\n }, [user]);\r\n\r\n const addLog = (log) => {\r\n console.log(log);\r\n setProcessLog((prevLogs) => [...prevLogs, log]);\r\n };\r\n\r\n const uploadFiles = async (files) => {\r\n setUploadError(false);\r\n if (files.length === 0) {\r\n setProcessLog([]);\r\n addLog(\"EI TIEDOSTOJA\");\r\n addLog(\"Yhtään tiedostoa ei löytynyt.\");\r\n setUploadError(true);\r\n return;\r\n }\r\n addLog(aikaPvmStringLong(new Date(), true) + \" Aloitetaan tiedostojen siirto...\");\r\n const startTime = new Date().getTime();\r\n setProcessLog([]);\r\n // count total bytes\r\n let _bytes = 0;\r\n for (let i = 0; i < files.length; i++) {\r\n _bytes += files[i].size;\r\n }\r\n if (isUploadToPumiFiChecked) _bytes *= 2;\r\n setUploadTotalBytes(_bytes);\r\n\r\n for (let i = 0; i < files.length; i++) {\r\n addLog(\"- Lähetetään tiedosto \" + files[i].name);\r\n const file = files[i];\r\n // create new filename as guid for each file\r\n const newFileName = uuidv4() + files[i].name.substring(file.name.lastIndexOf(\".\"));\r\n const origFileName = file.name;\r\n setIsLoadingFileName(origFileName);\r\n const ownerAsiakasId = userAsiakas.asiakasId;\r\n const fileComment = null;\r\n\r\n try {\r\n const attachmentId = await attachment_upload(\r\n file,\r\n keikkaId,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n ownerAsiakasId,\r\n newFileName,\r\n fileComment,\r\n user.personId,\r\n token\r\n );\r\n const size = file.size;\r\n setUploadedBytes((prev) => prev + size);\r\n if (attachmentId > 0 && isUploadToPumiFiChecked) {\r\n addLog(\"- Lähetetään tiedosto PUMI.fi palveluun\");\r\n await pumiFi_attachment_upload(file, newFileName, attachmentId, origFileName, token);\r\n setUploadedBytes((prev) => prev + size);\r\n }\r\n } catch (error) {\r\n addLog(\"Virhe tiedoston \" + files[i].name + \" siirrossa: \" + error);\r\n setUploadError(true);\r\n }\r\n }\r\n // calculate how long it took to upload all files\r\n const endTime = new Date().getTime();\r\n const timeDiff = Math.round((endTime - startTime) / 1000);\r\n addLog(\"Kesto: \" + timeDiff + \" s\");\r\n addLog(\r\n aikaPvmStringLong(new Date(), true) +\r\n \" Kaikki \" +\r\n files.length +\r\n \" tiedostoa lähetetty (\" +\r\n timeDiff +\r\n \" s)\"\r\n );\r\n setUploadedBytes(0);\r\n setIsLoadingFileName(null);\r\n onUpload(files);\r\n };\r\n const handleCloseClick = () => {\r\n setProcessLog([]);\r\n setIsLoadingFileName(null);\r\n setDragging(false);\r\n };\r\n const handleDragOver = (event) => {\r\n event.preventDefault();\r\n setDragging(true);\r\n };\r\n const handleDrop = async (event) => {\r\n event.preventDefault();\r\n setDragging(false);\r\n await uploadFiles(event.dataTransfer.files);\r\n };\r\n\r\n return (\r\n
\r\n setDragging(false)}\r\n style={{\r\n border: dragging ? \"2px dashed #3f51b5\" : \"3px dashed #ccc\",\r\n padding: \"35px\",\r\n textAlign: \"center\",\r\n borderRadius: \"4px\",\r\n transition: \"border-color 0.3s\",\r\n }}\r\n className=\"harmaaTausta\">\r\n \r\n \r\n\r\n {isLoadingFileName && (\r\n
\r\n \r\n \r\n Lähetetään tiedosto {isLoadingFileName}\r\n \r\n
\r\n )}\r\n {!isLoadingFileName && (\r\n <>\r\n \r\n tai vedä ja pudota tiedostot tänne\r\n \r\n \r\n (Sallitut tiedostomuodot: .jpg, .pdf)\r\n \r\n \r\n )}\r\n
\r\n {renderProgressBars()}\r\n {renderProcessLog()}\r\n {allowAccess_KalleUrhoOy_Toiminnot(user) && (\r\n <>\r\n setIsUploadToPumiFiChecked(!isUploadToPumiFiChecked)}\r\n />\r\n \r\n {\" \"}\r\n Lähetä myös PUMI.fi palveluun\r\n \r\n \r\n )}\r\n \r\n );\r\n\r\n function renderProcessLog() {\r\n return (\r\n <>\r\n {processLog.length > 0 && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {processLog.map((logText, index) => (\r\n
{logText}
\r\n ))}\r\n
\r\n )}\r\n \r\n );\r\n }\r\n\r\n function renderProgressBars() {\r\n if (isLoadingFileName === null) return null;\r\n return (\r\n
\r\n {processLog.length > 0 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nAttachmentUploader.propTypes = {\r\n onUpload: PropTypes.func,\r\n keikkaId: PropTypes.number,\r\n};\r\n"],"names":["ProcessLogContainer","styled","Paper","props","$uploadError","AttachmentUploader","onUpload","keikkaId","token","userAsiakas","user","useUserData","dragging","setDragging","useState","isLoadingFileName","setIsLoadingFileName","isUploadToPumiFiChecked","setIsUploadToPumiFiChecked","processLog","setProcessLog","uploadError","setUploadError","uploadTotalBytes","setUploadTotalBytes","uploadedBytes","setUploadedBytes","useEffect","uploadAlsoToPumiFi","allowAccess_KalleUrhoOy_Toiminnot","addLog","log","console","prevLogs","uploadFiles","async","files","length","aikaPvmStringLong","Date","startTime","getTime","_bytes","i","size","name","file","newFileName","uuidv4","substring","lastIndexOf","origFileName","ownerAsiakasId","asiakasId","fileComment","attachmentId","attachment_upload","personId","prev","pumiFi_attachment_upload","error","endTime","timeDiff","Math","round","handleCloseClick","children","jsxs","onDrop","event","preventDefault","dataTransfer","onDragOver","onDragLeave","style","border","padding","textAlign","borderRadius","transition","className","jsx","accept","display","id","type","onChange","input","target","value","multiple","htmlFor","Button","variant","color","component","sx","margin","gap","ProgressCirc","Typography","Fragment","width","ProgressBar","show","elevation","Tooltip","disableInteractive","title","IconButton","onClick","position","right","CloseIcon","map","logText","index","Switch","checked","opacity","propTypes","PropTypes","func","number"],"mappings":"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"}