malaknihed commited on
Commit
3ae304b
·
verified ·
1 Parent(s): c7d1d4f

Update static/script.js

Browse files
Files changed (1) hide show
  1. static/script.js +68 -141
static/script.js CHANGED
@@ -40,7 +40,7 @@ function loadResumerPage() {
40
  </label>
41
  <input type="file" id="fileInput" class="file-input" accept=".doc,.docx,.xls,.xlsx,.pdf,.ppt,.pptx" hidden>
42
  </div>
43
- <button class="summary-action-btn">RÉSUMER</button>
44
  </div>
45
  <div class="results-container">
46
  <div class="results-placeholder">
@@ -63,64 +63,62 @@ function loadResumerPage() {
63
  // Insérer la nouvelle interface sans écraser les scripts
64
  document.body.innerHTML = "";
65
  document.body.appendChild(appContainer);
66
- // Ajouter l'événement de clic pour le bouton "RÉSUMER"
67
- document.querySelector('.summary-action-btn').addEventListener('click', async () => {
68
- await uploadDocument();
69
- });
70
 
 
 
 
 
71
 
72
- async function uploadDocument() {
73
- let fileInput = document.getElementById("fileInput");
74
- let resultElement = document.getElementById("documentResult");
75
 
76
- // Vérifier si un fichier a été sélectionné
77
- if (fileInput.files.length === 0) {
78
- resultElement.innerText = "⚠️ Aucun fichier sélectionné !";
79
- return; // Arrêter l'exécution si aucun fichier
80
- }
81
 
82
- // Afficher "Chargement..." pendant que le résumé est en cours de préparation
83
- resultElement.innerText = "Chargement du résumé... 🕐";
84
 
85
- let formData = new FormData();
86
- formData.append("file", fileInput.files[0]);
87
 
88
- try {
89
- let response = await fetch("https://malaknihed-smartdocsai.hf.space/summarize/", {
90
- method: "POST",
91
- body: formData,
92
- headers: { "Accept": "application/json" }
93
- });
94
 
95
- if (!response.ok) {
96
- throw new Error("Erreur de requête !");
97
- }
98
 
99
- let data = await response.json();
100
- console.log("📤 Réponse du serveur :", data);
101
 
102
- // Vérification si le modèle est encore en cours de chargement
103
- if (data.message && data.message.includes("Modèle en cours de chargement")) {
104
- resultElement.innerText = "Le résumé est en cours de génération. Veuillez patienter... 🕐";
105
- return; // Ne pas continuer tant que le modèle n'est pas prêt
106
- }
107
 
108
- // Afficher le résumé ou un message d'erreur
109
- if (data.summary) {
110
- resultElement.innerHTML = `
111
- <h3 class="centered-title">📝 Résumé généré :</h3>
112
- <br>
113
- <p>${data.summary}</p>
114
- `;
115
- } else {
116
- resultElement.innerText = "❌ Résumé non disponible.";
117
- }
118
- } catch (error) {
119
- console.error("❌ Erreur : ", error);
120
- resultElement.innerText = "Erreur lors de la demande !";
 
 
121
  }
122
- }
123
- // Fonctions de téléchargement
124
  document.addEventListener("click", (e) => {
125
  const text = document.getElementById("documentResult").dataset.summaryText;
126
  if (!text) return;
@@ -166,111 +164,40 @@ async function uploadDocument() {
166
  URL.revokeObjectURL(url);
167
  }
168
  });
169
- }
170
-
171
 
172
-
173
-
174
-
175
  document.getElementById('traductionbutton').addEventListener('click', loadTraductionPage);
176
  document.getElementById('qesdocButton').addEventListener('click', loadDocPage);
177
  document.getElementById('visualisationButton').addEventListener('click', loadVisualisationPage);
178
  document.getElementById('interpretationButton').addEventListener('click', loadInterpretationPage);
179
  document.getElementById('qesimgButton').addEventListener('click', loadImagePage);
180
 
181
- const fileInput = document.getElementById('fileInput');
182
- const dropText = document.getElementById('dropText');
183
- const uploadIcon = document.getElementById('uploadIcon');
184
- +
185
-
186
- dropText.addEventListener('click', function(event) {
187
- event.preventDefault();
188
- event.stopPropagation();
189
- fileInput.click();
190
- });
191
-
192
- uploadIcon.addEventListener('click', function(event) {
193
- event.preventDefault();
194
- event.stopPropagation();
195
- fileInput.click();
196
- });
197
-
198
- fileInput.addEventListener('change', function(event) {
199
- let file = event.target.files[0];
200
- if (file) {
201
- dropText.textContent = file.name;
202
- uploadIcon.style.display = "none";
203
- }
204
- });
205
-
206
- // Téléchargements
207
- document.getElementById('downloadPdf').addEventListener('click', downloadAsPdf);
208
- document.getElementById('downloadWord').addEventListener('click', downloadAsWord);
209
- document.getElementById('downloadPpt').addEventListener('click', downloadAsPowerPoint);
210
- document.getElementById('downloadTxt').addEventListener('click', downloadAsText);
211
- function downloadAsPdf() {
212
- const text = document.getElementById("documentResult").dataset.translatedText;
213
- if (!text) return;
214
-
215
- const { jsPDF } = window.jspdf;
216
- const doc = new jsPDF();
217
- doc.text(text, 10, 10);
218
- doc.save('traduction.pdf');
219
- }
220
-
221
- async function downloadAsWord() {
222
- const text = document.getElementById("documentResult").dataset.translatedText;
223
- if (!text) return;
224
-
225
- const { Document, Paragraph, TextRun, Packer } = window.docx;
226
- const doc = new Document({
227
- sections: [{
228
- properties: {},
229
- children: [
230
- new Paragraph({
231
- children: [
232
- new TextRun(text)
233
- ]
234
- })
235
- ]
236
- }]
237
- });
238
-
239
- Packer.toBlob(doc).then(blob => {
240
- const url = URL.createObjectURL(blob);
241
- const a = document.createElement('a');
242
- a.href = url;
243
- a.download = 'traduction.docx';
244
- a.click();
245
- URL.revokeObjectURL(url);
246
- });
247
- }
248
-
249
- function downloadAsPowerPoint() {
250
- const text = document.getElementById("documentResult").dataset.translatedText;
251
- if (!text) return;
252
 
253
- const pptx = new window.PptxGenJS();
254
- const slide = pptx.addSlide();
255
- slide.addText(text, { x: 1, y: 1, w: 8, h: 4 });
256
- pptx.writeFile({ fileName: 'traduction.pptx' });
257
- }
258
 
259
- function downloadAsText() {
260
- const text = document.getElementById("documentResult").dataset.translatedText;
261
- if (!text) return;
 
 
262
 
263
- const blob = new Blob([text], { type: 'text/plain' });
264
- const url = URL.createObjectURL(blob);
265
- const a = document.createElement('a');
266
- a.href = url;
267
- a.download = 'traduction.txt';
268
- a.click();
269
- URL.revokeObjectURL(url);
270
- }
271
  }
272
 
273
- }
274
 
275
 
276
  //Quand on clique sur le boutton traduction ---------------
 
40
  </label>
41
  <input type="file" id="fileInput" class="file-input" accept=".doc,.docx,.xls,.xlsx,.pdf,.ppt,.pptx" hidden>
42
  </div>
43
+ <button class="summary-action-btn">RÉSUMER</button>
44
  </div>
45
  <div class="results-container">
46
  <div class="results-placeholder">
 
63
  // Insérer la nouvelle interface sans écraser les scripts
64
  document.body.innerHTML = "";
65
  document.body.appendChild(appContainer);
 
 
 
 
66
 
67
+ // Ajouter l'événement de clic pour le bouton "RÉSUMER"
68
+ document.querySelector('.summary-action-btn').addEventListener('click', async () => {
69
+ await uploadDocument();
70
+ });
71
 
72
+ async function uploadDocument() {
73
+ let fileInput = document.getElementById("fileInput");
74
+ let resultElement = document.getElementById("documentResult");
75
 
76
+ if (fileInput.files.length === 0) {
77
+ resultElement.innerText = "⚠️ Aucun fichier sélectionné !";
78
+ return;
79
+ }
 
80
 
81
+ resultElement.innerText = "Chargement du résumé... 🕐";
 
82
 
83
+ let formData = new FormData();
84
+ formData.append("file", fileInput.files[0]);
85
 
86
+ try {
87
+ let response = await fetch("https://malaknihed-smartdocsai.hf.space/summarize/", {
88
+ method: "POST",
89
+ body: formData,
90
+ headers: { "Accept": "application/json" }
91
+ });
92
 
93
+ if (!response.ok) {
94
+ throw new Error("Erreur de requête !");
95
+ }
96
 
97
+ let data = await response.json();
98
+ console.log("📤 Réponse du serveur :", data);
99
 
100
+ if (data.message && data.message.includes("Modèle en cours de chargement")) {
101
+ resultElement.innerText = "Le résumé est en cours de génération. Veuillez patienter... 🕐";
102
+ return;
103
+ }
 
104
 
105
+ if (data.summary) {
106
+ resultElement.innerHTML = `
107
+ <h3 class="centered-title">📝 Résumé généré :</h3>
108
+ <br>
109
+ <p>${data.summary}</p>
110
+ `;
111
+ document.getElementById("documentResult").dataset.summaryText = data.summary;
112
+ document.getElementById("downloadSection").style.display = "block";
113
+ } else {
114
+ resultElement.innerText = "❌ Résumé non disponible.";
115
+ }
116
+ } catch (error) {
117
+ console.error("❌ Erreur : ", error);
118
+ resultElement.innerText = "Erreur lors de la demande !";
119
+ }
120
  }
121
+
 
122
  document.addEventListener("click", (e) => {
123
  const text = document.getElementById("documentResult").dataset.summaryText;
124
  if (!text) return;
 
164
  URL.revokeObjectURL(url);
165
  }
166
  });
 
 
167
 
168
+ // Reconnexion des boutons du menu latéral
 
 
169
  document.getElementById('traductionbutton').addEventListener('click', loadTraductionPage);
170
  document.getElementById('qesdocButton').addEventListener('click', loadDocPage);
171
  document.getElementById('visualisationButton').addEventListener('click', loadVisualisationPage);
172
  document.getElementById('interpretationButton').addEventListener('click', loadInterpretationPage);
173
  document.getElementById('qesimgButton').addEventListener('click', loadImagePage);
174
 
175
+ // Gestion du dropzone
176
+ const fileInput = document.getElementById('fileInput');
177
+ const dropText = document.getElementById('dropText');
178
+ const uploadIcon = document.getElementById('uploadIcon');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
 
180
+ dropText.addEventListener('click', function(event) {
181
+ event.preventDefault();
182
+ event.stopPropagation();
183
+ fileInput.click();
184
+ });
185
 
186
+ uploadIcon.addEventListener('click', function(event) {
187
+ event.preventDefault();
188
+ event.stopPropagation();
189
+ fileInput.click();
190
+ });
191
 
192
+ fileInput.addEventListener('change', function(event) {
193
+ let file = event.target.files[0];
194
+ if (file) {
195
+ dropText.textContent = file.name;
196
+ uploadIcon.style.display = "none";
197
+ }
198
+ });
 
199
  }
200
 
 
201
 
202
 
203
  //Quand on clique sur le boutton traduction ---------------