From 865d182a1798d96df347c91d26edcec6ddea74c5 Mon Sep 17 00:00:00 2001 From: Antoine Duquenoy Date: Tue, 2 Oct 2018 22:52:57 +0200 Subject: [PATCH] Upload d'un fichier --- Front/index.html | 25 ++++++++++++++++++++++++- Front/js/home.js | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 142 insertions(+), 18 deletions(-) diff --git a/Front/index.html b/Front/index.html index f12bd70..04f59fd 100644 --- a/Front/index.html +++ b/Front/index.html @@ -151,19 +151,42 @@

Choix du fichier

+
Clic ou dépose un fichier ici
-
25%
+
+ + + + + diff --git a/Front/js/home.js b/Front/js/home.js index f5f60a0..ce1418e 100644 --- a/Front/js/home.js +++ b/Front/js/home.js @@ -1,21 +1,122 @@ -var tableNodes; - $(document).ready(function() { - tableNodes = $('#nodes-table').DataTable( { - select: { - style: 'multi' - } - } ); - - tableNodes.on( 'select', function (e, dt, type, indexes) { - var rowData = tableNodes.rows( indexes ).data().toArray(); - console.log(JSON.stringify(rowData)); - } ); - - tableNodes.on( 'deselect', function (e, dt, type, indexes) { - var rowData = tableNodes.rows(indexes).data().toArray(); - console.log(JSON.stringify(rowData)); - } ); +/********** Tableau **********/ + + var tableNodes = $('#nodes-table').DataTable( { + select: { + style: 'multi' + } + } ); + + var nodeSet = new Set(); + + tableNodes.on('select', function (e, dt, type, indexes) { + var rowData = tableNodes.rows(indexes).data().toArray()[0]; + nodeSet.add(rowData[0]); + } ); + + tableNodes.on('deselect', function (e, dt, type, indexes) { + var rowData = tableNodes.rows(indexes).data().toArray()[0]; + nodeSet.delete(rowData[0]); + } ); + +/********** Drop Zone **********/ + + var formData = new FormData(); + var dropZone = document.querySelector("#drop-zone"); + dropZone.style.cursor = "pointer"; + var file = document.getElementById("filesExplorer"); + var fileProgress = document.getElementById("file-progress"); + var readyToSend = false; + + dropZone.addEventListener('click', function() { + delete formData; + formData = new FormData(); + file.click(); + }) + + file.addEventListener('change', function() { + dropZone.innerHTML = this.files[0].name; + formData.append("file", this.files[0]); + formData.append("filename", this.files[0].name); + readyToSend = true; + }, false) + + dropZone.addEventListener('drop', function(e) { + e.preventDefault(); + delete formData; + formData = new FormData(); + dropZone.style.borderWidth = '2px'; + var files = e.dataTransfer.files; + + if(files.length > 1) { + $("#warningFilesNumber").modal() + return; + } + dropZone.innerHTML = files[0].name; + formData.append("file", files[0]); + formData.append("filename", files[0].name); + readyToSend = true; + }, false) + + dropZone.addEventListener('dragenter', function(e) { + console.log("Enter"); + dropZone.style.borderWidth = '5px'; + }, false); + + dropZone.addEventListener('dragleave', function(e) { + console.log("Leave"); + dropZone.style.borderWidth = '2px'; + }, false); + + dropZone.addEventListener('dragover', function(e) { + e.preventDefault(); + }, false); + + document.getElementById("sendButton").addEventListener('click', function() { + var modalContent = document.getElementById("modal-content"); + var modalTitle = document.getElementById("modal-title"); + if(readyToSend && nodeSet.size > 0) { + formData.append("nodes", Array.from(nodeSet).join(';')); + var request = new XMLHttpRequest(); + request.open("POST", "file.php"); + + request.upload.onloadstart = function(e) { + fileProgress.style.display = 'block'; + fileProgress.style.width = 0 + "px" + fileProgress.innerHTML = "0%"; + } + + request.upload.onprogress = function(e) { + var p = 100 - ((e.total - e.loaded) / e.total * 100); + fileProgress.style.width = Math.ceil(p) + "%" + fileProgress.innerHTML = Math.ceil(p) + "%"; + } + + request.upload.onloadend = function(e) { + fileProgress.style.width = 100 + "%" + fileProgress.innerHTML = "100%"; + var modalButton = document.getElementById("modal-button"); + + modalButton.addEventListener('click', function(e) { + location.reload(); + }) + + modalContent.innerHTML = "Upload terminé !"; + modalTitle.innerHTML = "Félicitations"; + $("#warningFilesNumber").modal() + } + + request.send(formData); + + delete formData; + formData = new FormData(); + } + else { + modalContent.innerHTML = "Veuillez choisir un fichier !"; + modalTitle.innerHTML = "Attention"; + $("#warningFilesNumber").modal() + } + }) } ); -- libgit2 0.21.2