Spaces:
Running
Running
add
Browse files- static/script.js +52 -48
static/script.js
CHANGED
|
@@ -682,7 +682,8 @@ askBtn.addEventListener('click', async () => {
|
|
| 682 |
}
|
| 683 |
|
| 684 |
//quand on clique sur visualisation ----------------------
|
| 685 |
-
|
|
|
|
| 686 |
// 1. Configuration de l'arrière-plan
|
| 687 |
document.body.style.setProperty('--background-image', "url('visualisation.webp')");
|
| 688 |
|
|
@@ -695,50 +696,55 @@ askBtn.addEventListener('click', async () => {
|
|
| 695 |
<div class="logo-top">SMARTDOCS</div>
|
| 696 |
<div class="logo-bottom">AI</div>
|
| 697 |
</div>
|
|
|
|
| 698 |
<div class="menu-section">
|
| 699 |
-
<button class="menu-btn" id="resumerButton">
|
| 700 |
<button class="menu-btn" id="traductionbutton">TRANSLATE</button>
|
| 701 |
-
<button class="menu-btn" id="qesdocButton">
|
| 702 |
</div>
|
|
|
|
| 703 |
<div class="menu-section">
|
| 704 |
<div class="menu-title">IMAGES</div>
|
| 705 |
-
<button class="menu-btn" id="interpretationButton">
|
| 706 |
-
<button class="menu-btn" id="qesimgButton">
|
| 707 |
</div>
|
| 708 |
</div>
|
|
|
|
| 709 |
<div class="main-content-area">
|
| 710 |
<div class="document-container">
|
| 711 |
-
<h1 class="document-main-title">
|
| 712 |
-
<h2 class="document-subtitle">
|
|
|
|
| 713 |
<div class="upload-container">
|
| 714 |
<div class="file-drop-zone" id="fileDropZone">
|
| 715 |
<label for="graphFileInput" class="file-upload-label">
|
| 716 |
<img src="up.png" id="uploadIcon" class="upload-icon" alt="Upload">
|
| 717 |
-
<span class="drop-text" id="dropText">
|
| 718 |
</label>
|
| 719 |
<input type="file" id="graphFileInput" class="file-input"
|
| 720 |
accept=".doc,.docx,.xls,.xlsx,.pdf,.ppt,.pptx" hidden>
|
| 721 |
</div>
|
| 722 |
|
| 723 |
-
<div class="action-container">
|
| 724 |
<select id="graphTypeSelect" class="language-dropdown">
|
| 725 |
<option value="">Select type</option>
|
| 726 |
-
<option value="histplot">
|
| 727 |
-
<option value="scatterplot">
|
| 728 |
-
<option value="lineplot">
|
| 729 |
-
<option value="barplot">
|
| 730 |
-
<option value="boxplot">
|
| 731 |
</select>
|
| 732 |
-
<button type="button" id="generateGraphBtn" class="graph-generate-btn">
|
| 733 |
</div>
|
| 734 |
</div>
|
|
|
|
| 735 |
<div class="graph-results-container">
|
| 736 |
<div class="graph-results-placeholder">
|
| 737 |
<img id="graphResultImage" class="graph-result-img">
|
| 738 |
-
<p class="placeholder-text" id="graphPlaceholderText">
|
| 739 |
</div>
|
| 740 |
<div id="downloadSection" style="display: none; margin-top: 20px; text-align: center;">
|
| 741 |
-
<h3 style="color: white; margin-bottom: 10px;">
|
| 742 |
<div style="display: flex; justify-content: center; gap: 10px;">
|
| 743 |
<button id="downloadPng" class="download-btn">PNG</button>
|
| 744 |
<button id="downloadJpg" class="download-btn">JPG</button>
|
|
@@ -806,13 +812,13 @@ askBtn.addEventListener('click', async () => {
|
|
| 806 |
|
| 807 |
// Validation
|
| 808 |
if (!fileInput.files[0]) {
|
| 809 |
-
placeholderText.textContent = "
|
| 810 |
downloadSection.style.display = "none";
|
| 811 |
return;
|
| 812 |
}
|
| 813 |
|
| 814 |
if (!graphTypeSelect.value) {
|
| 815 |
-
placeholderText.textContent = "
|
| 816 |
downloadSection.style.display = "none";
|
| 817 |
return;
|
| 818 |
}
|
|
@@ -820,43 +826,41 @@ askBtn.addEventListener('click', async () => {
|
|
| 820 |
// Préparation de l'interface
|
| 821 |
resultImage.style.display = "none";
|
| 822 |
downloadSection.style.display = "none";
|
| 823 |
-
placeholderText.textContent = "
|
| 824 |
|
| 825 |
try {
|
| 826 |
// Envoi des données
|
| 827 |
const formData = new FormData();
|
| 828 |
formData.append("file", fileInput.files[0]);
|
| 829 |
formData.append("query", graphTypeSelect.value);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 830 |
|
| 831 |
-
|
| 832 |
-
|
| 833 |
-
|
| 834 |
-
headers: { 'Accept': 'image/*' }
|
| 835 |
-
});
|
| 836 |
|
| 837 |
-
|
| 838 |
-
if (!response.ok) {
|
| 839 |
-
throw new Error(`Erreur ${response.status}: ${await response.text()}`);
|
| 840 |
-
}
|
| 841 |
|
| 842 |
-
|
| 843 |
-
|
| 844 |
-
|
| 845 |
-
}
|
| 846 |
|
| 847 |
-
|
| 848 |
-
|
| 849 |
-
|
| 850 |
-
|
| 851 |
-
|
| 852 |
-
|
| 853 |
-
|
| 854 |
-
|
| 855 |
-
|
| 856 |
-
|
| 857 |
-
|
| 858 |
-
|
| 859 |
-
resultImage.style.display = "block";
|
| 860 |
|
| 861 |
} catch (error) {
|
| 862 |
console.error("Erreur:", error);
|
|
@@ -870,7 +874,7 @@ askBtn.addEventListener('click', async () => {
|
|
| 870 |
const downloadGraph = (format) => {
|
| 871 |
const resultImage = document.getElementById('graphResultImage');
|
| 872 |
if (!resultImage.src || resultImage.style.display === "none") {
|
| 873 |
-
alert("
|
| 874 |
return;
|
| 875 |
}
|
| 876 |
|
|
@@ -896,7 +900,7 @@ askBtn.addEventListener('click', async () => {
|
|
| 896 |
// Conversion et téléchargement
|
| 897 |
canvas.toBlob((blob) => {
|
| 898 |
downloadFile(blob, `graphique.${extension}`);
|
| 899 |
-
}, mimeType, format === 'jpg' ? 0.92 : 1); // Qualité à 92% pour JPG, 100% pour
|
| 900 |
};
|
| 901 |
|
| 902 |
// 7. Fonction utilitaire pour le téléchargement
|
|
|
|
| 682 |
}
|
| 683 |
|
| 684 |
//quand on clique sur visualisation ----------------------
|
| 685 |
+
//quand on clique sur visualisation ----------------------
|
| 686 |
+
function loadVisualisationPage() {
|
| 687 |
// 1. Configuration de l'arrière-plan
|
| 688 |
document.body.style.setProperty('--background-image', "url('visualisation.webp')");
|
| 689 |
|
|
|
|
| 696 |
<div class="logo-top">SMARTDOCS</div>
|
| 697 |
<div class="logo-bottom">AI</div>
|
| 698 |
</div>
|
| 699 |
+
|
| 700 |
<div class="menu-section">
|
| 701 |
+
<button class="menu-btn" id="resumerButton">RESUME</button>
|
| 702 |
<button class="menu-btn" id="traductionbutton">TRANSLATE</button>
|
| 703 |
+
<button class="menu-btn" id="qesdocButton">QUESTION</button>
|
| 704 |
</div>
|
| 705 |
+
|
| 706 |
<div class="menu-section">
|
| 707 |
<div class="menu-title">IMAGES</div>
|
| 708 |
+
<button class="menu-btn" id="interpretationButton">INTERPRETER</button>
|
| 709 |
+
<button class="menu-btn" id="qesimgButton">QUESTIONS</button>
|
| 710 |
</div>
|
| 711 |
</div>
|
| 712 |
+
|
| 713 |
<div class="main-content-area">
|
| 714 |
<div class="document-container">
|
| 715 |
+
<h1 class="document-main-title">Opérations sur documents</h1>
|
| 716 |
+
<h2 class="document-subtitle">VISUALISATION</h2>
|
| 717 |
+
|
| 718 |
<div class="upload-container">
|
| 719 |
<div class="file-drop-zone" id="fileDropZone">
|
| 720 |
<label for="graphFileInput" class="file-upload-label">
|
| 721 |
<img src="up.png" id="uploadIcon" class="upload-icon" alt="Upload">
|
| 722 |
+
<span class="drop-text" id="dropText">Déposez votre fichier ici ou cliquez pour parcourir</span>
|
| 723 |
</label>
|
| 724 |
<input type="file" id="graphFileInput" class="file-input"
|
| 725 |
accept=".doc,.docx,.xls,.xlsx,.pdf,.ppt,.pptx" hidden>
|
| 726 |
</div>
|
| 727 |
|
| 728 |
+
<div class="graph-action-container">
|
| 729 |
<select id="graphTypeSelect" class="language-dropdown">
|
| 730 |
<option value="">Select type</option>
|
| 731 |
+
<option value="histplot">Histogramme</option>
|
| 732 |
+
<option value="scatterplot">Nuage de points</option>
|
| 733 |
+
<option value="lineplot">Courbe</option>
|
| 734 |
+
<option value="barplot">Diagramme en barres</option>
|
| 735 |
+
<option value="boxplot">Boîte à moustaches</option>
|
| 736 |
</select>
|
| 737 |
+
<button type="button" id="generateGraphBtn" class="graph-generate-btn">Générer</button>
|
| 738 |
</div>
|
| 739 |
</div>
|
| 740 |
+
|
| 741 |
<div class="graph-results-container">
|
| 742 |
<div class="graph-results-placeholder">
|
| 743 |
<img id="graphResultImage" class="graph-result-img">
|
| 744 |
+
<p class="placeholder-text" id="graphPlaceholderText">Le résultat apparaîtra ici...</p>
|
| 745 |
</div>
|
| 746 |
<div id="downloadSection" style="display: none; margin-top: 20px; text-align: center;">
|
| 747 |
+
<h3 style="color: white; margin-bottom: 10px;">Télécharger le graphique</h3>
|
| 748 |
<div style="display: flex; justify-content: center; gap: 10px;">
|
| 749 |
<button id="downloadPng" class="download-btn">PNG</button>
|
| 750 |
<button id="downloadJpg" class="download-btn">JPG</button>
|
|
|
|
| 812 |
|
| 813 |
// Validation
|
| 814 |
if (!fileInput.files[0]) {
|
| 815 |
+
placeholderText.textContent = "Veuillez sélectionner un fichier";
|
| 816 |
downloadSection.style.display = "none";
|
| 817 |
return;
|
| 818 |
}
|
| 819 |
|
| 820 |
if (!graphTypeSelect.value) {
|
| 821 |
+
placeholderText.textContent = "Veuillez sélectionner un type de graphique";
|
| 822 |
downloadSection.style.display = "none";
|
| 823 |
return;
|
| 824 |
}
|
|
|
|
| 826 |
// Préparation de l'interface
|
| 827 |
resultImage.style.display = "none";
|
| 828 |
downloadSection.style.display = "none";
|
| 829 |
+
placeholderText.textContent = "Génération du graphique en cours...";
|
| 830 |
|
| 831 |
try {
|
| 832 |
// Envoi des données
|
| 833 |
const formData = new FormData();
|
| 834 |
formData.append("file", fileInput.files[0]);
|
| 835 |
formData.append("query", graphTypeSelect.value);
|
| 836 |
+
const response = await fetch("/generate_viz/", {
|
| 837 |
+
method: "POST",
|
| 838 |
+
body: formData,
|
| 839 |
+
headers: { 'Accept': 'application/json' }
|
| 840 |
+
});
|
| 841 |
|
| 842 |
+
if (!response.ok) {
|
| 843 |
+
throw new Error(`Erreur ${response.status}: ${await response.text()}`);
|
| 844 |
+
}
|
|
|
|
|
|
|
| 845 |
|
| 846 |
+
const result = await response.json();
|
|
|
|
|
|
|
|
|
|
| 847 |
|
| 848 |
+
if (result.error) {
|
| 849 |
+
throw new Error(result.error);
|
| 850 |
+
}
|
|
|
|
| 851 |
|
| 852 |
+
// Créer une URL de l'image à partir de la chaîne base64
|
| 853 |
+
const imageUrl = `data:image/png;base64,${result.image_base64}`;
|
| 854 |
+
|
| 855 |
+
// Afficher l'image
|
| 856 |
+
resultImage.onload = () => {
|
| 857 |
+
// Afficher les options de téléchargement une fois l'image chargée
|
| 858 |
+
document.getElementById("downloadSection").style.display = "block";
|
| 859 |
+
placeholderText.textContent = "";
|
| 860 |
+
};
|
| 861 |
+
|
| 862 |
+
resultImage.src = imageUrl;
|
| 863 |
+
resultImage.style.display = "block";
|
|
|
|
| 864 |
|
| 865 |
} catch (error) {
|
| 866 |
console.error("Erreur:", error);
|
|
|
|
| 874 |
const downloadGraph = (format) => {
|
| 875 |
const resultImage = document.getElementById('graphResultImage');
|
| 876 |
if (!resultImage.src || resultImage.style.display === "none") {
|
| 877 |
+
alert("Veuillez d'abord générer un graphique");
|
| 878 |
return;
|
| 879 |
}
|
| 880 |
|
|
|
|
| 900 |
// Conversion et téléchargement
|
| 901 |
canvas.toBlob((blob) => {
|
| 902 |
downloadFile(blob, `graphique.${extension}`);
|
| 903 |
+
}, mimeType, format === 'jpg' ? 0.92 : 1); // Qualité à 92% pour JPG, 100% pour PNG
|
| 904 |
};
|
| 905 |
|
| 906 |
// 7. Fonction utilitaire pour le téléchargement
|