malaknihed commited on
Commit
4961ab8
·
verified ·
1 Parent(s): a73167a

Update static/script.js

Browse files
Files changed (1) hide show
  1. static/script.js +28 -85
static/script.js CHANGED
@@ -8,7 +8,7 @@ document.getElementById('qesimgButton').addEventListener('click', loadImagePage)
8
  function loadResumerPage() {
9
  document.body.style.setProperty('--background-image', "url('resumer2.webp')");
10
 
11
- // Effacer uniquement le contenu de la page sans casser le script
12
  let appContainer = document.createElement("div");
13
  appContainer.classList.add("app-container");
14
  appContainer.innerHTML = `
@@ -73,11 +73,9 @@ function loadResumerPage() {
73
  </div>
74
  `;
75
 
76
- // Insérer la nouvelle interface sans écraser les scripts
77
  document.body.innerHTML = "";
78
  document.body.appendChild(appContainer);
79
 
80
- // Ajouter l'événement de clic pour le bouton "RÉSUMER"
81
  document.querySelector('.summary-action-btn').addEventListener('click', async () => {
82
  await uploadDocument();
83
  });
@@ -116,39 +114,14 @@ function loadResumerPage() {
116
  }
117
 
118
  if (data.summary) {
119
- resultElement.innerHTML = `
120
- <div style="display: flex; align-items: center; justify-content: flex-end; margin-bottom: 10px;">
121
- <button id="playVoiceBtn" style="
122
- background: linear-gradient(125deg, rgba(163, 94, 237, 0.9) 0%, rgba(65, 159, 232, 0.9) 75%);
123
- color: white;
124
- border: none;
125
- padding: 10px 16px;
126
- border-radius: 12px;
127
- cursor: pointer;
128
- font-size: 14px;
129
- box-shadow: 0 4px 6px rgba(0,0,0,0.1);
130
- transition: transform 0.2s;
131
- ">
132
- 🔊 Listen to Summary
133
- </button>
134
- </div>
135
- <h3 class="centered-title">📝 Summary generated :</h3>
136
- <br>
137
- <p id="summaryText" style="font-size: 16px;">${data.summary}</p>
138
- `;
139
-
140
- document.getElementById("documentResult").dataset.summaryText = data.summary;
141
- document.getElementById("downloadSection").style.display = "block";
142
-
143
- // 🎤 Ajouter l'effet vocal
144
- const playVoiceBtn = document.getElementById("playVoiceBtn");
145
- playVoiceBtn.addEventListener("click", function () {
146
- const textToRead = document.getElementById("summaryText").textContent;
147
- const utterance = new SpeechSynthesisUtterance(textToRead);
148
- utterance.lang = "en-US"; // ou "fr-FR" si ton résumé est en français
149
- window.speechSynthesis.speak(utterance);
150
- });
151
- }
152
  else {
153
  resultElement.innerText = "❌ Summary not available.";
154
  }
@@ -206,14 +179,14 @@ function loadResumerPage() {
206
  }
207
  });
208
 
209
- // Reconnexion des boutons du menu latéral
210
  document.getElementById('traductionbutton').addEventListener('click', loadTraductionPage);
211
  document.getElementById('qesdocButton').addEventListener('click', loadDocPage);
212
  document.getElementById('visualisationButton').addEventListener('click', loadVisualisationPage);
213
  document.getElementById('interpretationButton').addEventListener('click', loadInterpretationPage);
214
  document.getElementById('qesimgButton').addEventListener('click', loadImagePage);
215
 
216
- // Gestion du dropzone
217
  const fileInput = document.getElementById('fileInput');
218
  const dropText = document.getElementById('dropText');
219
  const uploadIcon = document.getElementById('uploadIcon');
@@ -412,10 +385,9 @@ ici aussi je veuxque leffet vocale lit le resultat de traduction : resultElemen
412
  document.body.innerHTML = "";
413
  document.body.appendChild(appContainer);
414
 
415
- // Chargement des librairies externes
416
  loadExternalLibs();
417
 
418
- // Gestion des événements
419
  setupEventListeners();
420
 
421
  function loadExternalLibs() {
@@ -437,14 +409,13 @@ ici aussi je veuxque leffet vocale lit le resultat de traduction : resultElemen
437
  }
438
 
439
  function setupEventListeners() {
440
- // Navigation
441
  document.getElementById('resumerButton').addEventListener('click', loadResumerPage);
442
  document.getElementById('qesdocButton').addEventListener('click', loadDocPage);
443
  document.getElementById('visualisationButton').addEventListener('click', loadVisualisationPage);
444
  document.getElementById('interpretationButton').addEventListener('click', loadInterpretationPage);
445
  document.getElementById('qesimgButton').addEventListener('click', loadImagePage);
446
 
447
- // Gestion des fichiers
448
  const fileInput = document.getElementById('translateFile');
449
  const dropText = document.getElementById('dropText');
450
  const uploadIcon = document.getElementById('uploadIcon');
@@ -466,10 +437,8 @@ ici aussi je veuxque leffet vocale lit le resultat de traduction : resultElemen
466
  }
467
  });
468
 
469
- // Traduction
470
  document.getElementById('translateButton').addEventListener('click', uploadForTranslation);
471
 
472
- // Téléchargements
473
  document.getElementById('downloadPdf').addEventListener('click', downloadAsPdf);
474
  document.getElementById('downloadWord').addEventListener('click', downloadAsWord);
475
  document.getElementById('downloadPpt').addEventListener('click', downloadAsPowerPoint);
@@ -511,9 +480,8 @@ ici aussi je veuxque leffet vocale lit le resultat de traduction : resultElemen
511
 
512
  if (data.translated_text) {
513
  resultElement.innerText = "📝 Traduction :\n " + data.translated_text;
514
- // Stocker le texte traduit pour le téléchargement
515
  resultElement.dataset.translatedText = data.translated_text;
516
- // Afficher les options de téléchargement
517
  document.getElementById("downloadSection").style.display = "block";
518
  } else {
519
  resultElement.innerText = "❌ Translation not available.";
@@ -585,10 +553,11 @@ ici aussi je veuxque leffet vocale lit le resultat de traduction : resultElemen
585
  URL.revokeObjectURL(url);
586
  }
587
  }
 
 
588
  function loadDocPage() {
589
  document.body.style.setProperty('--background-image', "url('qstdoc2.webp')");
590
 
591
- // Créer une nouvelle structure pour ne pas écraser les événements
592
  let appContainer = document.createElement("div");
593
  appContainer.classList.add("app-container");
594
  appContainer.innerHTML = `
@@ -648,10 +617,9 @@ function loadDocPage() {
648
  </div>
649
  `;
650
 
651
- // Insérer la nouvelle structure sans écraser les événements
652
  document.body.innerHTML = "";
653
  document.body.appendChild(appContainer);
654
- // Réassocier les événements aux boutons
655
  document.getElementById('resumerButton').addEventListener('click', loadResumerPage);
656
  document.getElementById('traductionbutton').addEventListener('click', loadTraductionPage);
657
  document.getElementById('visualisationButton').addEventListener('click', loadVisualisationPage);
@@ -682,8 +650,7 @@ fileInput.addEventListener('change', function(event) {
682
  uploadIcon.style.display = "none";
683
  }
684
  });
685
- // 👉 Fonction d'envoi de la question/document
686
- // 👉 Fonction d'envoi de la question/document
687
  const askBtn = document.getElementById('askDocBtn');
688
  askBtn.addEventListener('click', async () => {
689
  const file = fileInput.files[0];
@@ -699,7 +666,6 @@ askBtn.addEventListener('click', async () => {
699
  formData.append("file", file);
700
  formData.append("question", question);
701
 
702
- // Afficher "⏳ Analyse du document en cours..." pendant le traitement
703
  answerDiv.innerHTML = "⏳Document analysis in progress...";
704
 
705
  try {
@@ -729,10 +695,9 @@ askBtn.addEventListener('click', async () => {
729
 
730
  //quand on clique sur visualisation ----------------------
731
  function loadVisualisationPage() {
732
- // 1. Configuration de l'arrière-plan
733
  document.body.style.setProperty('--background-image', "url('visualisation.webp')");
734
-
735
- // 2. Création de la structure HTML
736
  const appContainer = document.createElement("div");
737
  appContainer.className = "app-container";
738
  appContainer.innerHTML = `
@@ -806,20 +771,16 @@ askBtn.addEventListener('click', async () => {
806
  </div>
807
  `;
808
 
809
- // 3. Nettoyage et insertion
810
  document.body.innerHTML = "";
811
  document.body.appendChild(appContainer);
812
 
813
- // 4. Gestion des événements
814
  const setupEventListeners = () => {
815
- // Navigation
816
  document.getElementById('resumerButton').addEventListener('click', loadResumerPage);
817
  document.getElementById('traductionbutton').addEventListener('click', loadTraductionPage);
818
  document.getElementById('qesdocButton').addEventListener('click', loadDocPage);
819
  document.getElementById('interpretationButton').addEventListener('click', loadInterpretationPage);
820
  document.getElementById('qesimgButton').addEventListener('click', loadImagePage);
821
 
822
- // Gestion des fichiers
823
  const fileInput = document.getElementById('graphFileInput');
824
  const dropText = document.getElementById('dropText');
825
  const uploadIcon = document.getElementById('uploadIcon');
@@ -838,22 +799,18 @@ askBtn.addEventListener('click', async () => {
838
  if (e.target.files[0]) {
839
  dropText.textContent = e.target.files[0].name;
840
  uploadIcon.style.display = "none";
841
- // Réinitialiser l'affichage quand un nouveau fichier est sélectionné
842
  document.getElementById("downloadSection").style.display = "none";
843
  document.getElementById("graphResultImage").style.display = "none";
844
  document.getElementById("graphPlaceholderText").textContent = "Ready to generate the chart";
845
  }
846
  });
847
 
848
- // Génération du graphique
849
  document.getElementById('generateGraphBtn').addEventListener('click', generateGraph);
850
 
851
- // Téléchargement du graphique
852
  document.getElementById('downloadPng').addEventListener('click', () => downloadGraph('png'));
853
  document.getElementById('downloadJpg').addEventListener('click', () => downloadGraph('jpg'));
854
  };
855
 
856
- // 5. Fonction de génération du graphique
857
  const generateGraph = async () => {
858
  const fileInput = document.getElementById('graphFileInput');
859
  const graphTypeSelect = document.getElementById('graphTypeSelect');
@@ -861,7 +818,6 @@ askBtn.addEventListener('click', async () => {
861
  const placeholderText = document.getElementById('graphPlaceholderText');
862
  const downloadSection = document.getElementById("downloadSection");
863
 
864
- // Validation
865
  if (!fileInput.files[0]) {
866
  placeholderText.textContent = "⚠️No file selected";
867
  downloadSection.style.display = "none";
@@ -874,13 +830,12 @@ askBtn.addEventListener('click', async () => {
874
  return;
875
  }
876
 
877
- // Préparation de l'interface
878
  resultImage.style.display = "none";
879
  downloadSection.style.display = "none";
880
  placeholderText.textContent = "⏳ Graph generation in progress...";
881
 
882
  try {
883
- // Envoi des données
884
  const formData = new FormData();
885
  formData.append("file", fileInput.files[0]);
886
  formData.append("query", graphTypeSelect.value);
@@ -900,12 +855,9 @@ if (result.error) {
900
  throw new Error(result.error);
901
  }
902
 
903
- // Créer une URL de l'image à partir de la chaîne base64
904
  const imageUrl = `data:image/png;base64,${result.image_base64}`;
905
 
906
- // Afficher l'image
907
  resultImage.onload = () => {
908
- // Afficher les options de téléchargement une fois l'image chargée
909
  document.getElementById("downloadSection").style.display = "block";
910
  placeholderText.textContent = "";
911
  };
@@ -921,7 +873,6 @@ resultImage.style.display = "block";
921
  }
922
  };
923
 
924
- // 6. Fonction de téléchargement du graphique
925
  const downloadGraph = (format) => {
926
  const resultImage = document.getElementById('graphResultImage');
927
  if (!resultImage.src || resultImage.style.display === "none") {
@@ -929,7 +880,6 @@ resultImage.style.display = "block";
929
  return;
930
  }
931
 
932
- // Créer un canvas pour la conversion
933
  const canvas = document.createElement('canvas');
934
  const ctx = canvas.getContext('2d');
935
  canvas.width = resultImage.naturalWidth;
@@ -943,18 +893,17 @@ resultImage.style.display = "block";
943
  extension = 'jpg';
944
  break;
945
 
946
- default: // PNG par défaut
947
  mimeType = 'image/png';
948
  extension = 'png';
949
  }
950
 
951
- // Conversion et téléchargement
952
  canvas.toBlob((blob) => {
953
  downloadFile(blob, `graphique.${extension}`);
954
- }, mimeType, format === 'jpg' ? 0.92 : 1); // Qualité à 92% pour JPG, 100% pour PNG
955
  };
956
 
957
- // 7. Fonction utilitaire pour le téléchargement
958
  const downloadFile = (blob, filename) => {
959
  const url = URL.createObjectURL(blob);
960
  const a = document.createElement('a');
@@ -966,7 +915,6 @@ resultImage.style.display = "block";
966
  setTimeout(() => URL.revokeObjectURL(url), 100);
967
  };
968
 
969
- // Initialisation
970
  setupEventListeners();
971
  }
972
 
@@ -976,7 +924,7 @@ resultImage.style.display = "block";
976
  function loadInterpretationPage() {
977
  document.body.style.setProperty('--background-image', "url('interpreter.webp')");
978
 
979
- // Créer une nouvelle structure pour ne pas écraser les événements
980
  let appContainer = document.createElement("div");
981
  appContainer.classList.add("app-container");
982
  appContainer.innerHTML = `
@@ -1029,12 +977,11 @@ function loadInterpretationPage() {
1029
  </div>
1030
  </div>
1031
  `;
1032
-
1033
- // Insérer la nouvelle structure sans écraser les événements
1034
  document.body.innerHTML = "";
1035
  document.body.appendChild(appContainer);
1036
 
1037
- // Réassocier les événements aux boutons
1038
  document.getElementById('resumerButton').addEventListener('click', loadResumerPage);
1039
  document.getElementById('traductionbutton').addEventListener('click', loadTraductionPage);
1040
  document.getElementById('qesdocButton').addEventListener('click', loadDocPage);
@@ -1068,7 +1015,7 @@ fileInput.addEventListener('change', function(event) {
1068
  }
1069
  });
1070
 
1071
- // Appel API backend pour interprétation
1072
  interpretButton.addEventListener('click', async function () {
1073
  let file = fileInput.files[0];
1074
 
@@ -1114,7 +1061,6 @@ interpretButton.addEventListener('click', async function () {
1114
  function loadImagePage() {
1115
  document.body.style.setProperty('--background-image', "url('qstimage.webp')");
1116
 
1117
- // Créer une nouvelle structure pour éviter d’écraser les événements
1118
  let appContainer = document.createElement("div");
1119
  appContainer.classList.add("app-container");
1120
  appContainer.innerHTML = `
@@ -1175,11 +1121,9 @@ interpretButton.addEventListener('click', async function () {
1175
  </div>
1176
  `;
1177
 
1178
- // Insérer la nouvelle structure sans écraser les événements
1179
  document.body.innerHTML = "";
1180
  document.body.appendChild(appContainer);
1181
 
1182
- // Réassocier les événements aux boutons
1183
  document.getElementById('resumerButton').addEventListener('click', loadResumerPage);
1184
  document.getElementById('traductionbutton').addEventListener('click', loadTraductionPage);
1185
  document.getElementById('qesdocButton').addEventListener('click', loadDocPage);
@@ -1228,7 +1172,6 @@ sendBtn.addEventListener("click", async function () {
1228
  formData.append("file", file);
1229
  formData.append("question", question);
1230
 
1231
- // Afficher le message de chargement
1232
  resultContainer.innerHTML = `<p class="placeholder-text" style="text-align: center; color: black; font-weight: bold;">⏳ Waiting for the answer...</p>`;
1233
 
1234
  try {
 
8
  function loadResumerPage() {
9
  document.body.style.setProperty('--background-image', "url('resumer2.webp')");
10
 
11
+
12
  let appContainer = document.createElement("div");
13
  appContainer.classList.add("app-container");
14
  appContainer.innerHTML = `
 
73
  </div>
74
  `;
75
 
 
76
  document.body.innerHTML = "";
77
  document.body.appendChild(appContainer);
78
 
 
79
  document.querySelector('.summary-action-btn').addEventListener('click', async () => {
80
  await uploadDocument();
81
  });
 
114
  }
115
 
116
  if (data.summary) {
117
+ resultElement.innerHTML =
118
+ <h3 class="centered-title">📝 Summary generated :</h3>
119
+ <br>
120
+ <p>${data.summary}</p>
121
+ ;
122
+ document.getElementById("documentResult").dataset.summaryText = data.summary;
123
+ document.getElementById("downloadSection").style.display = "block";
124
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  else {
126
  resultElement.innerText = "❌ Summary not available.";
127
  }
 
179
  }
180
  });
181
 
182
+
183
  document.getElementById('traductionbutton').addEventListener('click', loadTraductionPage);
184
  document.getElementById('qesdocButton').addEventListener('click', loadDocPage);
185
  document.getElementById('visualisationButton').addEventListener('click', loadVisualisationPage);
186
  document.getElementById('interpretationButton').addEventListener('click', loadInterpretationPage);
187
  document.getElementById('qesimgButton').addEventListener('click', loadImagePage);
188
 
189
+
190
  const fileInput = document.getElementById('fileInput');
191
  const dropText = document.getElementById('dropText');
192
  const uploadIcon = document.getElementById('uploadIcon');
 
385
  document.body.innerHTML = "";
386
  document.body.appendChild(appContainer);
387
 
 
388
  loadExternalLibs();
389
 
390
+
391
  setupEventListeners();
392
 
393
  function loadExternalLibs() {
 
409
  }
410
 
411
  function setupEventListeners() {
412
+
413
  document.getElementById('resumerButton').addEventListener('click', loadResumerPage);
414
  document.getElementById('qesdocButton').addEventListener('click', loadDocPage);
415
  document.getElementById('visualisationButton').addEventListener('click', loadVisualisationPage);
416
  document.getElementById('interpretationButton').addEventListener('click', loadInterpretationPage);
417
  document.getElementById('qesimgButton').addEventListener('click', loadImagePage);
418
 
 
419
  const fileInput = document.getElementById('translateFile');
420
  const dropText = document.getElementById('dropText');
421
  const uploadIcon = document.getElementById('uploadIcon');
 
437
  }
438
  });
439
 
 
440
  document.getElementById('translateButton').addEventListener('click', uploadForTranslation);
441
 
 
442
  document.getElementById('downloadPdf').addEventListener('click', downloadAsPdf);
443
  document.getElementById('downloadWord').addEventListener('click', downloadAsWord);
444
  document.getElementById('downloadPpt').addEventListener('click', downloadAsPowerPoint);
 
480
 
481
  if (data.translated_text) {
482
  resultElement.innerText = "📝 Traduction :\n " + data.translated_text;
483
+
484
  resultElement.dataset.translatedText = data.translated_text;
 
485
  document.getElementById("downloadSection").style.display = "block";
486
  } else {
487
  resultElement.innerText = "❌ Translation not available.";
 
553
  URL.revokeObjectURL(url);
554
  }
555
  }
556
+
557
+ //Quand on clique sur le boutton QSTDOC---------------
558
  function loadDocPage() {
559
  document.body.style.setProperty('--background-image', "url('qstdoc2.webp')");
560
 
 
561
  let appContainer = document.createElement("div");
562
  appContainer.classList.add("app-container");
563
  appContainer.innerHTML = `
 
617
  </div>
618
  `;
619
 
620
+
621
  document.body.innerHTML = "";
622
  document.body.appendChild(appContainer);
 
623
  document.getElementById('resumerButton').addEventListener('click', loadResumerPage);
624
  document.getElementById('traductionbutton').addEventListener('click', loadTraductionPage);
625
  document.getElementById('visualisationButton').addEventListener('click', loadVisualisationPage);
 
650
  uploadIcon.style.display = "none";
651
  }
652
  });
653
+
 
654
  const askBtn = document.getElementById('askDocBtn');
655
  askBtn.addEventListener('click', async () => {
656
  const file = fileInput.files[0];
 
666
  formData.append("file", file);
667
  formData.append("question", question);
668
 
 
669
  answerDiv.innerHTML = "⏳Document analysis in progress...";
670
 
671
  try {
 
695
 
696
  //quand on clique sur visualisation ----------------------
697
  function loadVisualisationPage() {
698
+
699
  document.body.style.setProperty('--background-image', "url('visualisation.webp')");
700
+
 
701
  const appContainer = document.createElement("div");
702
  appContainer.className = "app-container";
703
  appContainer.innerHTML = `
 
771
  </div>
772
  `;
773
 
 
774
  document.body.innerHTML = "";
775
  document.body.appendChild(appContainer);
776
 
 
777
  const setupEventListeners = () => {
 
778
  document.getElementById('resumerButton').addEventListener('click', loadResumerPage);
779
  document.getElementById('traductionbutton').addEventListener('click', loadTraductionPage);
780
  document.getElementById('qesdocButton').addEventListener('click', loadDocPage);
781
  document.getElementById('interpretationButton').addEventListener('click', loadInterpretationPage);
782
  document.getElementById('qesimgButton').addEventListener('click', loadImagePage);
783
 
 
784
  const fileInput = document.getElementById('graphFileInput');
785
  const dropText = document.getElementById('dropText');
786
  const uploadIcon = document.getElementById('uploadIcon');
 
799
  if (e.target.files[0]) {
800
  dropText.textContent = e.target.files[0].name;
801
  uploadIcon.style.display = "none";
 
802
  document.getElementById("downloadSection").style.display = "none";
803
  document.getElementById("graphResultImage").style.display = "none";
804
  document.getElementById("graphPlaceholderText").textContent = "Ready to generate the chart";
805
  }
806
  });
807
 
 
808
  document.getElementById('generateGraphBtn').addEventListener('click', generateGraph);
809
 
 
810
  document.getElementById('downloadPng').addEventListener('click', () => downloadGraph('png'));
811
  document.getElementById('downloadJpg').addEventListener('click', () => downloadGraph('jpg'));
812
  };
813
 
 
814
  const generateGraph = async () => {
815
  const fileInput = document.getElementById('graphFileInput');
816
  const graphTypeSelect = document.getElementById('graphTypeSelect');
 
818
  const placeholderText = document.getElementById('graphPlaceholderText');
819
  const downloadSection = document.getElementById("downloadSection");
820
 
 
821
  if (!fileInput.files[0]) {
822
  placeholderText.textContent = "⚠️No file selected";
823
  downloadSection.style.display = "none";
 
830
  return;
831
  }
832
 
 
833
  resultImage.style.display = "none";
834
  downloadSection.style.display = "none";
835
  placeholderText.textContent = "⏳ Graph generation in progress...";
836
 
837
  try {
838
+
839
  const formData = new FormData();
840
  formData.append("file", fileInput.files[0]);
841
  formData.append("query", graphTypeSelect.value);
 
855
  throw new Error(result.error);
856
  }
857
 
 
858
  const imageUrl = `data:image/png;base64,${result.image_base64}`;
859
 
 
860
  resultImage.onload = () => {
 
861
  document.getElementById("downloadSection").style.display = "block";
862
  placeholderText.textContent = "";
863
  };
 
873
  }
874
  };
875
 
 
876
  const downloadGraph = (format) => {
877
  const resultImage = document.getElementById('graphResultImage');
878
  if (!resultImage.src || resultImage.style.display === "none") {
 
880
  return;
881
  }
882
 
 
883
  const canvas = document.createElement('canvas');
884
  const ctx = canvas.getContext('2d');
885
  canvas.width = resultImage.naturalWidth;
 
893
  extension = 'jpg';
894
  break;
895
 
896
+ default:
897
  mimeType = 'image/png';
898
  extension = 'png';
899
  }
900
 
901
+
902
  canvas.toBlob((blob) => {
903
  downloadFile(blob, `graphique.${extension}`);
904
+ }, mimeType, format === 'jpg' ? 0.92 : 1);
905
  };
906
 
 
907
  const downloadFile = (blob, filename) => {
908
  const url = URL.createObjectURL(blob);
909
  const a = document.createElement('a');
 
915
  setTimeout(() => URL.revokeObjectURL(url), 100);
916
  };
917
 
 
918
  setupEventListeners();
919
  }
920
 
 
924
  function loadInterpretationPage() {
925
  document.body.style.setProperty('--background-image', "url('interpreter.webp')");
926
 
927
+
928
  let appContainer = document.createElement("div");
929
  appContainer.classList.add("app-container");
930
  appContainer.innerHTML = `
 
977
  </div>
978
  </div>
979
  `;
980
+
 
981
  document.body.innerHTML = "";
982
  document.body.appendChild(appContainer);
983
 
984
+
985
  document.getElementById('resumerButton').addEventListener('click', loadResumerPage);
986
  document.getElementById('traductionbutton').addEventListener('click', loadTraductionPage);
987
  document.getElementById('qesdocButton').addEventListener('click', loadDocPage);
 
1015
  }
1016
  });
1017
 
1018
+
1019
  interpretButton.addEventListener('click', async function () {
1020
  let file = fileInput.files[0];
1021
 
 
1061
  function loadImagePage() {
1062
  document.body.style.setProperty('--background-image', "url('qstimage.webp')");
1063
 
 
1064
  let appContainer = document.createElement("div");
1065
  appContainer.classList.add("app-container");
1066
  appContainer.innerHTML = `
 
1121
  </div>
1122
  `;
1123
 
 
1124
  document.body.innerHTML = "";
1125
  document.body.appendChild(appContainer);
1126
 
 
1127
  document.getElementById('resumerButton').addEventListener('click', loadResumerPage);
1128
  document.getElementById('traductionbutton').addEventListener('click', loadTraductionPage);
1129
  document.getElementById('qesdocButton').addEventListener('click', loadDocPage);
 
1172
  formData.append("file", file);
1173
  formData.append("question", question);
1174
 
 
1175
  resultContainer.innerHTML = `<p class="placeholder-text" style="text-align: center; color: black; font-weight: bold;">⏳ Waiting for the answer...</p>`;
1176
 
1177
  try {