Update app.py
Browse files
app.py
CHANGED
@@ -429,8 +429,8 @@ def list_tasks():
|
|
429 |
|
430 |
@app.route('/template')
|
431 |
def get_template():
|
432 |
-
template_content = '''
|
433 |
-
<html lang="fr">
|
434 |
<head>
|
435 |
<meta charset="UTF-8">
|
436 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
@@ -557,7 +557,8 @@ def get_template():
|
|
557 |
<h3>📁 Glisser-déposer votre image ici</h3>
|
558 |
<p>ou cliquez pour sélectionner un fichier</p>
|
559 |
<input type="file" id="fileInput" accept="image/*" style="display: none;">
|
560 |
-
|
|
|
561 |
Choisir un fichier
|
562 |
</button>
|
563 |
</div>
|
@@ -584,7 +585,6 @@ def get_template():
|
|
584 |
<button class="btn" id="downloadBtn">📥 Télécharger la solution</button>
|
585 |
</div>
|
586 |
</div>
|
587 |
-
|
588 |
<script>
|
589 |
const socket = io();
|
590 |
let currentTaskId = null;
|
@@ -592,8 +592,21 @@ def get_template():
|
|
592 |
// Gestion de l'upload
|
593 |
const uploadBox = document.getElementById('uploadBox');
|
594 |
const fileInput = document.getElementById('fileInput');
|
|
|
|
|
595 |
|
|
|
596 |
uploadBox.addEventListener('click', () => fileInput.click());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
597 |
uploadBox.addEventListener('dragover', (e) => {
|
598 |
e.preventDefault();
|
599 |
uploadBox.classList.add('dragover');
|
@@ -610,6 +623,7 @@ def get_template():
|
|
610 |
}
|
611 |
});
|
612 |
|
|
|
613 |
fileInput.addEventListener('change', (e) => {
|
614 |
if (e.target.files.length > 0) {
|
615 |
uploadFile(e.target.files[0]);
|
@@ -703,7 +717,9 @@ def get_template():
|
|
703 |
});
|
704 |
</script>
|
705 |
</body>
|
706 |
-
</html>
|
|
|
|
|
707 |
return template_content
|
708 |
|
709 |
if __name__ == '__main__':
|
|
|
429 |
|
430 |
@app.route('/template')
|
431 |
def get_template():
|
432 |
+
template_content = '''
|
433 |
+
<html lang="fr">
|
434 |
<head>
|
435 |
<meta charset="UTF-8">
|
436 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
557 |
<h3>📁 Glisser-déposer votre image ici</h3>
|
558 |
<p>ou cliquez pour sélectionner un fichier</p>
|
559 |
<input type="file" id="fileInput" accept="image/*" style="display: none;">
|
560 |
+
<!-- MODIFICATION 1: Suppression du onclick et ajout d'un id -->
|
561 |
+
<button class="btn" id="uploadButton">
|
562 |
Choisir un fichier
|
563 |
</button>
|
564 |
</div>
|
|
|
585 |
<button class="btn" id="downloadBtn">📥 Télécharger la solution</button>
|
586 |
</div>
|
587 |
</div>
|
|
|
588 |
<script>
|
589 |
const socket = io();
|
590 |
let currentTaskId = null;
|
|
|
592 |
// Gestion de l'upload
|
593 |
const uploadBox = document.getElementById('uploadBox');
|
594 |
const fileInput = document.getElementById('fileInput');
|
595 |
+
// MODIFICATION 2: Sélection du bouton par son nouvel id
|
596 |
+
const uploadButton = document.getElementById('uploadButton');
|
597 |
|
598 |
+
// L'utilisateur peut cliquer sur toute la zone
|
599 |
uploadBox.addEventListener('click', () => fileInput.click());
|
600 |
+
|
601 |
+
// MODIFICATION 3: Ajout d'un écouteur dédié au bouton
|
602 |
+
uploadButton.addEventListener('click', (e) => {
|
603 |
+
// Empêche le clic de "remonter" à la div parente (uploadBox),
|
604 |
+
// ce qui évite de déclencher l'ouverture de la fenêtre deux fois.
|
605 |
+
e.stopPropagation();
|
606 |
+
fileInput.click();
|
607 |
+
});
|
608 |
+
|
609 |
+
// Gestion du glisser-déposer (Drag & Drop)
|
610 |
uploadBox.addEventListener('dragover', (e) => {
|
611 |
e.preventDefault();
|
612 |
uploadBox.classList.add('dragover');
|
|
|
623 |
}
|
624 |
});
|
625 |
|
626 |
+
// Gestion de la sélection de fichier
|
627 |
fileInput.addEventListener('change', (e) => {
|
628 |
if (e.target.files.length > 0) {
|
629 |
uploadFile(e.target.files[0]);
|
|
|
717 |
});
|
718 |
</script>
|
719 |
</body>
|
720 |
+
</html>
|
721 |
+
|
722 |
+
'''
|
723 |
return template_content
|
724 |
|
725 |
if __name__ == '__main__':
|