Hadiil commited on
Commit
4f55411
·
verified ·
1 Parent(s): 1b0dc6f

Update static/scripts.js

Browse files
Files changed (1) hide show
  1. static/scripts.js +38 -26
static/scripts.js CHANGED
@@ -1,5 +1,5 @@
1
  document.addEventListener('DOMContentLoaded', () => {
2
- // Animation des étoiles (si vous utilisez un canvas)
3
  const canvas = document.querySelector('canvas.stars');
4
  if (canvas) {
5
  const ctx = canvas.getContext('2d');
@@ -22,9 +22,9 @@ document.addEventListener('DOMContentLoaded', () => {
22
  }
23
 
24
  function animate() {
25
- ctx.fillStyle = '#2A3F9D'; // Bleu nuit vibrant
26
  ctx.fillRect(0, 0, canvas.width, canvas.height);
27
- ctx.fillStyle = '#E6E6FA'; // Blanc doux pour étoiles
28
  stars.forEach(star => {
29
  ctx.beginPath();
30
  ctx.arc(star.x, star.y, star.radius, 0, Math.PI * 2);
@@ -73,9 +73,6 @@ document.addEventListener('DOMContentLoaded', () => {
73
  modal.querySelectorAll('.loading-spinner').forEach(spinner => {
74
  spinner.classList.add('hidden');
75
  });
76
- if (modal.id === 'chatbot-modal') {
77
- document.getElementById('chatbot-conversation').innerHTML = '';
78
- }
79
  document.querySelectorAll('.function-box').forEach(box => box.classList.remove('shadowed'));
80
  };
81
 
@@ -125,6 +122,31 @@ document.addEventListener('DOMContentLoaded', () => {
125
  }
126
  };
127
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  // Notifications toast
129
  const showToast = (message, type = 'success') => {
130
  const toast = document.createElement('div');
@@ -140,9 +162,10 @@ document.addEventListener('DOMContentLoaded', () => {
140
  'summarize-file-form': { endpoint: '/process', intent: 'summarize' },
141
  'translate-text-form': { endpoint: '/process', intent: 'translate' },
142
  'translate-file-form': { endpoint: '/process', intent: 'file-translate' },
143
- 'chatbot-form': { endpoint: '/chat', intent: 'chat' },
144
  'image-caption-form': { endpoint: '/process', intent: 'image-to-text' },
145
- 'visual-qa-form': { endpoint: '/process', intent: 'visual-qa' }
 
 
146
  };
147
 
148
  Object.keys(forms).forEach(formId => {
@@ -160,9 +183,11 @@ document.addEventListener('DOMContentLoaded', () => {
160
  responseCard.innerHTML = '';
161
 
162
  const formData = new FormData(form);
 
 
163
  if (formId === 'summarize-form') {
164
  formData.append('text', form.querySelector('input[type="text"]').value);
165
- } else if (formId === 'summarize-file-form' || formId === 'translate-file-form' || formId === 'image-caption-form' || formId === 'visual-qa-form') {
166
  const file = form.querySelector('input[type="file"]').files[0];
167
  if (!file) {
168
  responseCard.innerHTML = `<p class="text-red-500">Please select a file.</p>`;
@@ -176,19 +201,8 @@ document.addEventListener('DOMContentLoaded', () => {
176
  const text = form.querySelector('input[type="text"]').value;
177
  const lang = form.querySelector('select[name="language"]').value;
178
  formData.append('text', `Translate to ${lang}: ${text}`);
179
- } else if (formId === 'visual-qa-form') {
180
  formData.append('text', form.querySelector('input[type="text"]').value);
181
- } else if (formId === 'chatbot-form') {
182
- const message = form.querySelector('input[name="message"]').value.trim();
183
- if (!message) {
184
- if (spinner) spinner.classList.add('hidden');
185
- showToast('Please enter a message.', 'error');
186
- return;
187
- }
188
- formData.append('message', message);
189
- const conversation = document.getElementById('chatbot-conversation');
190
- conversation.innerHTML += `<p class="user-message">You: ${message}</p>`;
191
- conversation.scrollTop = conversation.scrollHeight;
192
  }
193
 
194
  try {
@@ -201,6 +215,9 @@ document.addEventListener('DOMContentLoaded', () => {
201
  if (spinner) spinner.classList.add('hidden');
202
  if (response.ok) {
203
  responseCard.innerHTML = `<p>${data.response}</p>`;
 
 
 
204
  if (data.additional_data) {
205
  Object.entries(data.additional_data).forEach(([key, value]) => {
206
  responseCard.innerHTML += `<p><strong>${key.replace('_', ' ').replace(/\b\w/g, char => char.toUpperCase())}:</strong> ${value}</p>`;
@@ -208,11 +225,6 @@ document.addEventListener('DOMContentLoaded', () => {
208
  }
209
  responseCard.classList.remove('hidden');
210
  showToast('Action completed successfully!', 'success');
211
- if (formId === 'chatbot-form') {
212
- const conversation = document.getElementById('chatbot-conversation');
213
- conversation.innerHTML += `<p class="bot-message">Assistant: ${data.response}</p>`;
214
- conversation.scrollTop = conversation.scrollHeight;
215
- }
216
  } else {
217
  responseCard.innerHTML = `<p class="text-red-500">Error: ${data.detail}</p>`;
218
  responseCard.classList.remove('hidden');
 
1
  document.addEventListener('DOMContentLoaded', () => {
2
+ // Animation des étoiles
3
  const canvas = document.querySelector('canvas.stars');
4
  if (canvas) {
5
  const ctx = canvas.getContext('2d');
 
22
  }
23
 
24
  function animate() {
25
+ ctx.fillStyle = '#2A3F9D';
26
  ctx.fillRect(0, 0, canvas.width, canvas.height);
27
+ ctx.fillStyle = '#E6E6FA';
28
  stars.forEach(star => {
29
  ctx.beginPath();
30
  ctx.arc(star.x, star.y, star.radius, 0, Math.PI * 2);
 
73
  modal.querySelectorAll('.loading-spinner').forEach(spinner => {
74
  spinner.classList.add('hidden');
75
  });
 
 
 
76
  document.querySelectorAll('.function-box').forEach(box => box.classList.remove('shadowed'));
77
  };
78
 
 
122
  }
123
  };
124
 
125
+ // Activer le clic sur la zone de drop
126
+ document.querySelectorAll('.drop-area').forEach(area => {
127
+ area.addEventListener('click', () => {
128
+ area.querySelector('input[type="file"]').click();
129
+ });
130
+ area.querySelector('input[type="file"]').addEventListener('change', (e) => {
131
+ const files = e.target.files;
132
+ const preview = area.querySelector('.file-preview');
133
+ if (files.length > 0) {
134
+ area.querySelector('p').textContent = `Selected: ${files[0].name}`;
135
+ if (files[0].type.startsWith('image/')) {
136
+ const reader = new FileReader();
137
+ reader.onload = () => {
138
+ preview.innerHTML = `<img src="${reader.result}" alt="Preview" class="w-24 h-24 object-cover rounded mt-2">`;
139
+ preview.classList.remove('hidden');
140
+ };
141
+ reader.readAsDataURL(files[0]);
142
+ } else {
143
+ preview.innerHTML = `<p class="text-gray-600">${files[0].name}</p>`;
144
+ preview.classList.remove('hidden');
145
+ }
146
+ }
147
+ });
148
+ });
149
+
150
  // Notifications toast
151
  const showToast = (message, type = 'success') => {
152
  const toast = document.createElement('div');
 
162
  'summarize-file-form': { endpoint: '/process', intent: 'summarize' },
163
  'translate-text-form': { endpoint: '/process', intent: 'translate' },
164
  'translate-file-form': { endpoint: '/process', intent: 'file-translate' },
 
165
  'image-caption-form': { endpoint: '/process', intent: 'image-to-text' },
166
+ 'visual-qa-form': { endpoint: '/process', intent: 'visual-qa' },
167
+ 'file-qa-form': { endpoint: '/process', intent: 'file-qa' },
168
+ 'visualize-form': { endpoint: '/process', intent: 'visualize' }
169
  };
170
 
171
  Object.keys(forms).forEach(formId => {
 
183
  responseCard.innerHTML = '';
184
 
185
  const formData = new FormData(form);
186
+ formData.append('intent', forms[formId].intent);
187
+
188
  if (formId === 'summarize-form') {
189
  formData.append('text', form.querySelector('input[type="text"]').value);
190
+ } else if (formId === 'summarize-file-form' || formId === 'translate-file-form' || formId === 'image-caption-form' || formId === 'visual-qa-form' || formId === 'file-qa-form' || formId === 'visualize-form') {
191
  const file = form.querySelector('input[type="file"]').files[0];
192
  if (!file) {
193
  responseCard.innerHTML = `<p class="text-red-500">Please select a file.</p>`;
 
201
  const text = form.querySelector('input[type="text"]').value;
202
  const lang = form.querySelector('select[name="language"]').value;
203
  formData.append('text', `Translate to ${lang}: ${text}`);
204
+ } else if (formId === 'visual-qa-form' || formId === 'file-qa-form' || formId === 'visualize-form') {
205
  formData.append('text', form.querySelector('input[type="text"]').value);
 
 
 
 
 
 
 
 
 
 
 
206
  }
207
 
208
  try {
 
215
  if (spinner) spinner.classList.add('hidden');
216
  if (response.ok) {
217
  responseCard.innerHTML = `<p>${data.response}</p>`;
218
+ if (data.message) {
219
+ responseCard.innerHTML += `<p><strong>Message:</strong> ${data.message}</p>`;
220
+ }
221
  if (data.additional_data) {
222
  Object.entries(data.additional_data).forEach(([key, value]) => {
223
  responseCard.innerHTML += `<p><strong>${key.replace('_', ' ').replace(/\b\w/g, char => char.toUpperCase())}:</strong> ${value}</p>`;
 
225
  }
226
  responseCard.classList.remove('hidden');
227
  showToast('Action completed successfully!', 'success');
 
 
 
 
 
228
  } else {
229
  responseCard.innerHTML = `<p class="text-red-500">Error: ${data.detail}</p>`;
230
  responseCard.classList.remove('hidden');