Spaces:
Sleeping
Sleeping
Update static/appS.js
Browse files- static/appS.js +16 -25
static/appS.js
CHANGED
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
11 |
let selectedFile = null;
|
12 |
let filePreviewBubble = null;
|
13 |
|
14 |
-
//
|
15 |
document.querySelectorAll('.select-options input[type="radio"]').forEach(radio => {
|
16 |
radio.addEventListener('change', (e) => {
|
17 |
if (e.target.checked) {
|
@@ -41,8 +41,13 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
41 |
});
|
42 |
|
43 |
// File upload handlers
|
44 |
-
fileBtn.addEventListener('click', () =>
|
45 |
-
|
|
|
|
|
|
|
|
|
|
|
46 |
|
47 |
fileUpload.addEventListener('change', (e) => {
|
48 |
if (e.target.files.length) {
|
@@ -131,27 +136,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
131 |
}
|
132 |
|
133 |
const isSummarizeMode = document.querySelector('input[name="option"]:checked').value === 'Summarize';
|
134 |
-
const endpoint = isSummarizeMode ? '/summarize/' : '/imagecaption/';
|
135 |
|
136 |
-
// Validate file type based on mode
|
137 |
-
if (isSummarizeMode) {
|
138 |
-
const validDocTypes = ['application/pdf',
|
139 |
-
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
140 |
-
'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
141 |
-
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];
|
142 |
-
|
143 |
-
if (!validDocTypes.includes(selectedFile.type)) {
|
144 |
-
alert('Please select a valid document (PDF, DOCX, PPTX, or XLSX)');
|
145 |
-
return;
|
146 |
-
}
|
147 |
-
} else {
|
148 |
-
const validImageTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
|
149 |
-
if (!validImageTypes.includes(selectedFile.type)) {
|
150 |
-
alert('Please select a valid image (JPEG, PNG, GIF, or WEBP)');
|
151 |
-
return;
|
152 |
-
}
|
153 |
-
}
|
154 |
-
|
155 |
// User message
|
156 |
createMessageBubble(
|
157 |
isSummarizeMode ? "Please summarize this document" : "Please caption this image",
|
@@ -168,9 +153,14 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
168 |
const formData = new FormData();
|
169 |
formData.append('file', selectedFile);
|
170 |
|
|
|
|
|
171 |
if (isSummarizeMode) {
|
172 |
const length = document.querySelector('input[name="optionS"]:checked').value;
|
173 |
formData.append('length', length);
|
|
|
|
|
|
|
174 |
}
|
175 |
|
176 |
const response = await fetch(endpoint, {
|
@@ -179,10 +169,11 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
179 |
});
|
180 |
|
181 |
if (!response.ok) {
|
182 |
-
|
|
|
183 |
}
|
184 |
|
185 |
-
|
186 |
console.log("API Response:", result);
|
187 |
|
188 |
// Replace thinking message with actual result
|
|
|
11 |
let selectedFile = null;
|
12 |
let filePreviewBubble = null;
|
13 |
|
14 |
+
// Initialize mode switching
|
15 |
document.querySelectorAll('.select-options input[type="radio"]').forEach(radio => {
|
16 |
radio.addEventListener('change', (e) => {
|
17 |
if (e.target.checked) {
|
|
|
41 |
});
|
42 |
|
43 |
// File upload handlers
|
44 |
+
fileBtn.addEventListener('click', () => {
|
45 |
+
fileUpload.click();
|
46 |
+
});
|
47 |
+
|
48 |
+
imageBtn.addEventListener('click', () => {
|
49 |
+
imageUpload.click();
|
50 |
+
});
|
51 |
|
52 |
fileUpload.addEventListener('change', (e) => {
|
53 |
if (e.target.files.length) {
|
|
|
136 |
}
|
137 |
|
138 |
const isSummarizeMode = document.querySelector('input[name="option"]:checked').value === 'Summarize';
|
|
|
139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
// User message
|
141 |
createMessageBubble(
|
142 |
isSummarizeMode ? "Please summarize this document" : "Please caption this image",
|
|
|
153 |
const formData = new FormData();
|
154 |
formData.append('file', selectedFile);
|
155 |
|
156 |
+
let endpoint, result;
|
157 |
+
|
158 |
if (isSummarizeMode) {
|
159 |
const length = document.querySelector('input[name="optionS"]:checked').value;
|
160 |
formData.append('length', length);
|
161 |
+
endpoint = '/summarize/';
|
162 |
+
} else {
|
163 |
+
endpoint = '/imagecaption/';
|
164 |
}
|
165 |
|
166 |
const response = await fetch(endpoint, {
|
|
|
169 |
});
|
170 |
|
171 |
if (!response.ok) {
|
172 |
+
const errorData = await response.json();
|
173 |
+
throw new Error(errorData.detail || `HTTP error! status: ${response.status}`);
|
174 |
}
|
175 |
|
176 |
+
result = await response.json();
|
177 |
console.log("API Response:", result);
|
178 |
|
179 |
// Replace thinking message with actual result
|