Docfile commited on
Commit
f71674e
·
verified ·
1 Parent(s): edaca91

Update templates/index.html

Browse files
Files changed (1) hide show
  1. templates/index.html +67 -15
templates/index.html CHANGED
@@ -136,6 +136,11 @@
136
  </div>
137
  <input id="image-input" type="file" name="image" class="hidden" accept="image/*" />
138
  </label>
 
 
 
 
 
139
  </div>
140
  </form>
141
 
@@ -152,15 +157,47 @@
152
 
153
  <!-- Result Section -->
154
  <div id="result-container" class="hidden mt-8">
155
- <h2 class="text-xl font-semibold text-gray-800 mb-4">Résolution détaillée :</h2>
 
 
 
 
 
 
156
  <div id="result" class="bg-gray-50 rounded-lg p-6 prose max-w-none math-content math-hidden"></div>
157
  </div>
158
  </div>
159
  </div>
160
 
161
  <script>
162
- document.getElementById('image-input').addEventListener('change', async function (e) {
163
- const file = e.target.files[0];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
  if (file) {
165
  // Show preview
166
  const preview = document.getElementById('image-preview');
@@ -174,7 +211,7 @@
174
  // Show loading
175
  document.getElementById('loading').classList.remove('hidden');
176
  document.getElementById('result-container').classList.add('hidden');
177
- document.getElementById('result').classList.add('math-hidden');
178
 
179
  try {
180
  const formData = new FormData();
@@ -192,19 +229,20 @@
192
 
193
  // Show result
194
  document.getElementById('result-container').classList.remove('hidden');
195
- // Utiliser marked pour convertir le markdown en HTML
196
- document.getElementById('result').innerHTML = marked.parse(data.result);
 
 
 
197
 
198
  // Rendre les maths avec MathJax
199
- MathJax.typesetPromise([document.getElementById('result')])
200
- .then(() => {
201
- document.getElementById('result').classList.remove('math-hidden');
202
- })
203
- .catch((err) => {
204
- console.error('Erreur MathJax:', err);
205
- document.getElementById('result').innerHTML = "Erreur lors du rendu des mathématiques.";
206
- document.getElementById('result').classList.remove('math-hidden');
207
- });
208
 
209
  } catch (error) {
210
  console.error('Erreur:', error);
@@ -213,6 +251,20 @@
213
  }
214
  }
215
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  </script>
217
  </body>
218
 
 
136
  </div>
137
  <input id="image-input" type="file" name="image" class="hidden" accept="image/*" />
138
  </label>
139
+ <button id="submit-button" type="button"
140
+ class="mt-4 px-6 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition duration-300 disabled:bg-gray-400 disabled:cursor-not-allowed"
141
+ disabled>
142
+ Soumettre
143
+ </button>
144
  </div>
145
  </form>
146
 
 
157
 
158
  <!-- Result Section -->
159
  <div id="result-container" class="hidden mt-8">
160
+ <div class="flex justify-between items-center mb-4">
161
+ <h2 class="text-xl font-semibold text-gray-800">Résolution détaillée :</h2>
162
+ <button id="copy-button"
163
+ class="px-4 py-2 bg-gray-200 text-gray-800 rounded-lg hover:bg-gray-300 transition duration-300">
164
+ <i class="fas fa-copy mr-2"></i>Copier
165
+ </button>
166
+ </div>
167
  <div id="result" class="bg-gray-50 rounded-lg p-6 prose max-w-none math-content math-hidden"></div>
168
  </div>
169
  </div>
170
  </div>
171
 
172
  <script>
173
+ const imageInput = document.getElementById('image-input');
174
+ const submitButton = document.getElementById('submit-button');
175
+ const copyButton = document.getElementById('copy-button');
176
+ const resultDiv = document.getElementById('result');
177
+
178
+ // Gérer l'état du bouton "Soumettre"
179
+ imageInput.addEventListener('change', () => {
180
+ submitButton.disabled = !imageInput.files.length;
181
+ });
182
+
183
+ // Fonction pour charger la dernière réponse depuis le localStorage
184
+ function loadLastResponse() {
185
+ const lastResponse = localStorage.getItem('lastResponse');
186
+ if (lastResponse) {
187
+ resultDiv.innerHTML = marked.parse(lastResponse);
188
+ MathJax.typesetPromise([resultDiv]).then(() => {
189
+ resultDiv.classList.remove('math-hidden');
190
+ });
191
+ document.getElementById('result-container').classList.remove('hidden');
192
+ }
193
+ }
194
+
195
+ // Charger la dernière réponse au chargement de la page
196
+ loadLastResponse();
197
+
198
+ // Soumettre l'image et afficher la réponse
199
+ submitButton.addEventListener('click', async () => {
200
+ const file = imageInput.files[0];
201
  if (file) {
202
  // Show preview
203
  const preview = document.getElementById('image-preview');
 
211
  // Show loading
212
  document.getElementById('loading').classList.remove('hidden');
213
  document.getElementById('result-container').classList.add('hidden');
214
+ resultDiv.classList.add('math-hidden');
215
 
216
  try {
217
  const formData = new FormData();
 
229
 
230
  // Show result
231
  document.getElementById('result-container').classList.remove('hidden');
232
+ const formattedResult = marked.parse(data.result);
233
+ resultDiv.innerHTML = formattedResult;
234
+
235
+ // Sauvegarder dans le localStorage
236
+ localStorage.setItem('lastResponse', data.result);
237
 
238
  // Rendre les maths avec MathJax
239
+ MathJax.typesetPromise([resultDiv]).then(() => {
240
+ resultDiv.classList.remove('math-hidden');
241
+ }).catch((err) => {
242
+ console.error('Erreur MathJax:', err);
243
+ resultDiv.innerHTML = "Erreur lors du rendu des mathématiques.";
244
+ resultDiv.classList.remove('math-hidden');
245
+ });
 
 
246
 
247
  } catch (error) {
248
  console.error('Erreur:', error);
 
251
  }
252
  }
253
  });
254
+
255
+ // Copier la réponse dans le presse-papiers
256
+ copyButton.addEventListener('click', () => {
257
+ const textToCopy = resultDiv.innerText;
258
+ navigator.clipboard.writeText(textToCopy).then(() => {
259
+ // Confirmation visuelle (optionnel)
260
+ copyButton.innerHTML = '<i class="fas fa-check mr-2"></i>Copié !';
261
+ setTimeout(() => {
262
+ copyButton.innerHTML = '<i class="fas fa-copy mr-2"></i>Copier';
263
+ }, 2000);
264
+ }).catch(err => {
265
+ console.error('Erreur lors de la copie:', err);
266
+ });
267
+ });
268
  </script>
269
  </body>
270