Spaces:
Running
Running
Update static/application.js
Browse files- static/application.js +25 -22
static/application.js
CHANGED
@@ -115,12 +115,25 @@ async function handleSubmit() {
|
|
115 |
selectedType = null;
|
116 |
}
|
117 |
*/
|
|
|
118 |
const inputField = document.querySelector(".qt input");
|
119 |
const icons = document.querySelectorAll(".icons i");
|
120 |
const convo = document.querySelector(".convo");
|
121 |
const send = document.querySelector(".sendingQA");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
|
123 |
-
// Create hidden file inputs dynamically
|
124 |
const imageInput = document.createElement("input");
|
125 |
imageInput.type = "file";
|
126 |
imageInput.accept = "image/*";
|
@@ -134,20 +147,9 @@ docInput.style.display = "none";
|
|
134 |
document.body.appendChild(imageInput);
|
135 |
document.body.appendChild(docInput);
|
136 |
|
137 |
-
// Create audio toggle checkbox
|
138 |
-
const audioToggle = document.createElement("div");
|
139 |
-
audioToggle.innerHTML = `
|
140 |
-
<label style="margin-left: 1rem;">
|
141 |
-
๐ Play Audio Answer:
|
142 |
-
<input type="checkbox" id="audioToggle" checked>
|
143 |
-
</label>
|
144 |
-
`;
|
145 |
-
document.querySelector(".qt").appendChild(audioToggle);
|
146 |
-
|
147 |
let selectedFile = null;
|
148 |
let selectedType = null;
|
149 |
|
150 |
-
// Icon click handlers
|
151 |
icons[0].addEventListener("click", () => imageInput.click());
|
152 |
icons[1].addEventListener("click", () => docInput.click());
|
153 |
send.addEventListener("click", handleSubmit);
|
@@ -155,7 +157,7 @@ send.addEventListener("click", handleSubmit);
|
|
155 |
imageInput.addEventListener("change", () => {
|
156 |
selectedFile = imageInput.files[0];
|
157 |
selectedType = "Image";
|
158 |
-
showSelectedFile(selectedFile.name, "
|
159 |
});
|
160 |
|
161 |
docInput.addEventListener("change", () => {
|
@@ -184,6 +186,7 @@ async function handleSubmit() {
|
|
184 |
const formData = new FormData();
|
185 |
formData.append("question", question);
|
186 |
formData.append("file", selectedFile);
|
|
|
187 |
|
188 |
const userBlock = document.createElement("div");
|
189 |
userBlock.style.padding = "1rem";
|
@@ -211,7 +214,6 @@ async function handleSubmit() {
|
|
211 |
});
|
212 |
|
213 |
const result = await response.json();
|
214 |
-
|
215 |
loadingBlock.remove();
|
216 |
|
217 |
const answerBlock = document.createElement("div");
|
@@ -219,16 +221,17 @@ async function handleSubmit() {
|
|
219 |
answerBlock.style.background = "#e1f7e1";
|
220 |
answerBlock.style.borderRadius = "10px";
|
221 |
answerBlock.style.margin = "1rem";
|
222 |
-
answerBlock.innerHTML = `<strong>Answer:</strong> ${result.answer
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
}
|
231 |
|
|
|
232 |
} catch (error) {
|
233 |
loadingBlock.remove();
|
234 |
|
|
|
115 |
selectedType = null;
|
116 |
}
|
117 |
*/
|
118 |
+
// frontend.js
|
119 |
const inputField = document.querySelector(".qt input");
|
120 |
const icons = document.querySelectorAll(".icons i");
|
121 |
const convo = document.querySelector(".convo");
|
122 |
const send = document.querySelector(".sendingQA");
|
123 |
+
const audioToggle = document.createElement("input");
|
124 |
+
audioToggle.type = "checkbox";
|
125 |
+
audioToggle.checked = true;
|
126 |
+
audioToggle.id = "audioToggle";
|
127 |
+
audioToggle.style.marginLeft = "1rem";
|
128 |
+
|
129 |
+
const audioLabel = document.createElement("label");
|
130 |
+
audioLabel.htmlFor = "audioToggle";
|
131 |
+
audioLabel.innerText = "๐ Audio";
|
132 |
+
audioLabel.style.marginLeft = "0.5rem";
|
133 |
+
|
134 |
+
document.querySelector(".controls").appendChild(audioToggle);
|
135 |
+
document.querySelector(".controls").appendChild(audioLabel);
|
136 |
|
|
|
137 |
const imageInput = document.createElement("input");
|
138 |
imageInput.type = "file";
|
139 |
imageInput.accept = "image/*";
|
|
|
147 |
document.body.appendChild(imageInput);
|
148 |
document.body.appendChild(docInput);
|
149 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
let selectedFile = null;
|
151 |
let selectedType = null;
|
152 |
|
|
|
153 |
icons[0].addEventListener("click", () => imageInput.click());
|
154 |
icons[1].addEventListener("click", () => docInput.click());
|
155 |
send.addEventListener("click", handleSubmit);
|
|
|
157 |
imageInput.addEventListener("change", () => {
|
158 |
selectedFile = imageInput.files[0];
|
159 |
selectedType = "Image";
|
160 |
+
showSelectedFile(selectedFile.name, "๐พ๏ธ");
|
161 |
});
|
162 |
|
163 |
docInput.addEventListener("change", () => {
|
|
|
186 |
const formData = new FormData();
|
187 |
formData.append("question", question);
|
188 |
formData.append("file", selectedFile);
|
189 |
+
formData.append("audio", audioToggle.checked);
|
190 |
|
191 |
const userBlock = document.createElement("div");
|
192 |
userBlock.style.padding = "1rem";
|
|
|
214 |
});
|
215 |
|
216 |
const result = await response.json();
|
|
|
217 |
loadingBlock.remove();
|
218 |
|
219 |
const answerBlock = document.createElement("div");
|
|
|
221 |
answerBlock.style.background = "#e1f7e1";
|
222 |
answerBlock.style.borderRadius = "10px";
|
223 |
answerBlock.style.margin = "1rem";
|
224 |
+
answerBlock.innerHTML = `<strong>Answer:</strong> ${result.answer}`;
|
225 |
+
|
226 |
+
if (result.audio_url) {
|
227 |
+
const audio = document.createElement("audio");
|
228 |
+
audio.controls = true;
|
229 |
+
audio.src = result.audio_url;
|
230 |
+
answerBlock.appendChild(document.createElement("br"));
|
231 |
+
answerBlock.appendChild(audio);
|
232 |
}
|
233 |
|
234 |
+
convo.appendChild(answerBlock);
|
235 |
} catch (error) {
|
236 |
loadingBlock.remove();
|
237 |
|