const inputField = document.querySelector(".qt input"); const icons = document.querySelectorAll(".icons i"); const convo = document.querySelector(".convo"); // Create hidden file inputs dynamically const imageInput = document.createElement("input"); imageInput.type = "file"; imageInput.accept = "image/*"; imageInput.style.display = "none"; const docInput = document.createElement("input"); docInput.type = "file"; docInput.accept = ".pdf,.docx,.pptx,.xlsx"; docInput.style.display = "none"; document.body.appendChild(imageInput); document.body.appendChild(docInput); let selectedFile = null; let selectedType = null; // Icon click handlers icons[0].addEventListener("click", () => imageInput.click()); // image icon icons[1].addEventListener("click", () => docInput.click()); // file icon icons[2].addEventListener("click", handleSubmit); // send icon imageInput.addEventListener("change", () => { selectedFile = imageInput.files[0]; selectedType = "Image"; showSelectedFile(selectedFile.name, "🖼️"); }); docInput.addEventListener("change", () => { selectedFile = docInput.files[0]; selectedType = "Document"; showSelectedFile(selectedFile.name, "📄"); }); function showSelectedFile(fileName, icon) { convo.innerHTML = `
${icon} Selected file: ${fileName}
`; } async function handleSubmit() { const question = inputField.value.trim(); if (!question && !selectedFile) { alert("Please type a question or select a file."); return; } const formData = new FormData(); formData.append("question", question); formData.append("file", selectedFile); convo.innerHTML = `
Processing your request...
`; try { const response = await fetch("http://localhost:8000/predict", { method: "POST", body: formData, }); const result = await response.json(); if (result.answer) { convo.innerHTML = `
Question: ${question}
${selectedFile ? `${selectedType}: ${selectedFile.name}
` : ""} Answer: ${result.answer}
`; } else { convo.innerHTML = `
Error: ${result.error}
`; } } catch (error) { convo.innerHTML = `
Request failed: ${error.message}
`; } // Reset input field inputField.value = ""; }