ikraamkb commited on
Commit
4915e32
ยท
verified ยท
1 Parent(s): 3d74941

Update static/application.js

Browse files
Files changed (1) hide show
  1. static/application.js +78 -56
static/application.js CHANGED
@@ -1,62 +1,84 @@
1
  const inputField = document.querySelector(".qt input");
2
- const icons = document.querySelectorAll(".icons i");
3
- const convo = document.querySelector(".convo");
4
-
5
- // Create hidden file inputs dynamically
6
- const imageInput = document.createElement("input");
7
- imageInput.type = "file";
8
- imageInput.accept = "image/*";
9
- imageInput.style.display = "none";
10
-
11
- const docInput = document.createElement("input");
12
- docInput.type = "file";
13
- docInput.accept = ".pdf,.docx,.pptx,.xlsx";
14
- docInput.style.display = "none";
15
-
16
- document.body.appendChild(imageInput);
17
- document.body.appendChild(docInput);
18
-
19
- let selectedFile = null;
20
- let selectedType = null;
21
-
22
- // Icon click handlers
23
- icons[0].addEventListener("click", () => imageInput.click()); // image icon
24
- icons[1].addEventListener("click", () => docInput.click()); // file icon
25
- icons[2].addEventListener("click", handleSubmit); // send icon
26
-
27
- imageInput.addEventListener("change", () => {
28
- selectedFile = imageInput.files[0];
29
- selectedType = "Image";
30
- showSelectedFile(selectedFile.name, "๐Ÿ–ผ๏ธ");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  });
32
-
33
- docInput.addEventListener("change", () => {
34
- selectedFile = docInput.files[0];
35
- selectedType = "Document";
36
- showSelectedFile(selectedFile.name, "๐Ÿ“„");
37
- });
38
-
39
- function handleSubmit() {
40
- const question = inputField.value.trim();
41
- if (!question && !selectedFile) {
42
- alert("Please type a question or select a file.");
43
- return;
44
- }
45
-
46
- convo.innerHTML = `
47
- <div style="padding: 1rem; border-radius: 10px; background-color: #f1f1f1; margin: 1rem;">
48
- <strong>Question:</strong> ${question || "(No question)"}<br>
49
- ${selectedFile ? `<strong>${selectedType}:</strong> ${selectedFile.name}` : ""}
50
- <br><em>(Simulated - No backend yet)</em>
51
- </div>
52
- `;
53
- }
54
-
55
- function showSelectedFile(fileName, icon) {
56
  convo.innerHTML = `
57
- <div style="padding: 0.8rem; background-color: #f3f3f3; border-radius: 10px; margin: 1rem;">
58
- ${icon} <strong>Selected file:</strong> ${fileName}
 
 
59
  </div>
60
  `;
 
 
61
  }
62
- inputField.value=""
 
 
 
 
 
 
 
1
  const inputField = document.querySelector(".qt input");
2
+ const icons = document.querySelectorAll(".icons i");
3
+ const convo = document.querySelector(".convo");
4
+
5
+ // Create hidden file inputs dynamically
6
+ const imageInput = document.createElement("input");
7
+ imageInput.type = "file";
8
+ imageInput.accept = "image/*";
9
+ imageInput.style.display = "none";
10
+
11
+ const docInput = document.createElement("input");
12
+ docInput.type = "file";
13
+ docInput.accept = ".pdf,.docx,.pptx,.xlsx";
14
+ docInput.style.display = "none";
15
+
16
+ document.body.appendChild(imageInput);
17
+ document.body.appendChild(docInput);
18
+
19
+ let selectedFile = null;
20
+ let selectedType = null;
21
+
22
+ // Icon click handlers
23
+ icons[0].addEventListener("click", () => imageInput.click()); // image icon
24
+ icons[1].addEventListener("click", () => docInput.click()); // file icon
25
+ icons[2].addEventListener("click", handleSubmit); // send icon
26
+
27
+ imageInput.addEventListener("change", () => {
28
+ selectedFile = imageInput.files[0];
29
+ selectedType = "Image";
30
+ showSelectedFile(selectedFile.name, "๐Ÿ–ผ๏ธ");
31
+ });
32
+
33
+ docInput.addEventListener("change", () => {
34
+ selectedFile = docInput.files[0];
35
+ selectedType = "Document";
36
+ showSelectedFile(selectedFile.name, "๐Ÿ“„");
37
+ });
38
+
39
+ function showSelectedFile(fileName, icon) {
40
+ convo.innerHTML = `
41
+ <div style="padding: 0.8rem; background-color: #f3f3f3; border-radius: 10px; margin: 1rem;">
42
+ ${icon} <strong>Selected file:</strong> ${fileName}
43
+ </div>
44
+ `;
45
+ }
46
+
47
+ async function handleSubmit() {
48
+ const question = inputField.value.trim();
49
+ if (!question && !selectedFile) {
50
+ alert("Please type a question or select a file.");
51
+ return;
52
+ }
53
+
54
+ const formData = new FormData();
55
+ formData.append("question", question);
56
+ formData.append("file", selectedFile);
57
+
58
+ convo.innerHTML = `<div style="padding: 1rem; background: #eee; border-radius: 8px;">Processing your request...</div>`;
59
+
60
+ try {
61
+ const response = await fetch("http://localhost:8000/predict", {
62
+ method: "POST",
63
+ body: formData,
64
  });
65
+
66
+ const result = await response.json();
67
+ if (result.answer) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  convo.innerHTML = `
69
+ <div style="padding: 1rem; background: #e1f7e1; border-radius: 10px; margin: 1rem;">
70
+ <strong>Question:</strong> ${question}<br>
71
+ ${selectedFile ? `<strong>${selectedType}:</strong> ${selectedFile.name}<br>` : ""}
72
+ <strong>Answer:</strong> ${result.answer}
73
  </div>
74
  `;
75
+ } else {
76
+ convo.innerHTML = `<div style="color: red;">Error: ${result.error}</div>`;
77
  }
78
+ } catch (error) {
79
+ convo.innerHTML = `<div style="color: red;">Request failed: ${error.message}</div>`;
80
+ }
81
+
82
+ // Reset input field
83
+ inputField.value = "";
84
+ }