diff --git a/LoadFile.js b/LoadFile.js index 75fcc63bed5f9f4effee6e6e3cd6fc06efaa77a4..505f698fba02d09b31327e9ac907de601be8d3e1 100644 --- a/LoadFile.js +++ b/LoadFile.js @@ -25,29 +25,27 @@ $(document).ready(function () { //funzione che definisce tutti gli elementi responsabili dell'apertura di un file. //Sono definiti quindi l'albero e il bottone per l'importazione da locale function setImportFile() { + //genero e leggo il contenuto della directory "filesystem" + var jsonResponse; var xmlListingFile = new XMLHttpRequest(); xmlListingFile.open("GET", "https://baltig.infn.it/api/v4/projects/819/repository/tree?recursive=1&path=RemoteFileSystem", false); xmlListingFile.setRequestHeader('PRIVATE-TOKEN', 'kEzw3Lo1-T7ZaacK1s9z'); xmlListingFile.onreadystatechange = function () { if (xmlListingFile.readyState === 4) { if (xmlListingFile.status === 200) { - var jsonResponse = JSON.parse(xmlListingFile.responseText); - alert(jsonResponse[0].name); + jsonResponse = JSON.parse(xmlListingFile.responseText); } } }; xmlListingFile.send(null); - //Leggo il contenuto del file XML e ne eseguo il parse - // var contentfilesystem: any = document.getElementById('contentfilesystem').innerHTML; - // var parser: any = new DOMParser(); - // var xmlDoc: any = parser.parseFromString(contentfilesystem, "text/xml"); + generateTree(jsonResponse); //ora genero l'albero e definisco l'evento in caso di selezione di un nodo - // $('#FileTreeview').treeview({data: generateTree(xmlDoc)}); - // $('#FileTreeview').on('nodeSelected', function(e, node){ - // if(node['url'] != undefined){ - // openFileFromServer(node['url']); - // } - // }); + /* $('#FileTreeview').treeview({data: generateTree(jsonResponse)}); + $('#FileTreeview').on('nodeSelected', function(e, node){ + if(node['url'] != undefined){ + //openFileFromServer(node['url']); + } + });*/ //bottone per l'importazione locale var fileInputButton = document.getElementById('myImport'); fileInputButton.onchange = function () { @@ -61,71 +59,104 @@ function setImportFile() { }; } //funzione che genera automaticamente l'albero -function generateTree(xmlDoc) { - var tree = []; - var first = true; - var oldFolderParent = ""; - var oldFolder = ""; - //inizio leggendo tutti gli elementi da inserire nell'albero (caratterizzati - //dall'avere un url di riferimento) - var entry = xmlDoc.getElementsByTagName("d:href"); - //per ogni elemento controllo se si tratta di una cartella o di un documento - for (var i = 0; i < entry.length; i++) { - var path = entry[i].childNodes[0].nodeValue.split(""); - //cartella, creo l'oggetto corrsipondente - if (path[path.length - 1] == "/") { - var folderName = entry[i].childNodes[0].nodeValue.split("/"); +function generateTree(jsonDoc) { + var tree = [{ + text: "XRF-File-System", + nodes: [] + }]; + //scorro ogni elemento dell'albero + for (var i = 0; i < jsonDoc.length; i++) { + if (jsonDoc[i].type == "tree") { var Folder = { - text: folderName[folderName.length - 2], + text: jsonDoc[i].name, nodes: [] }; - //posiziono la radice del file system, ne memorizzo il path e il padre - if (first) { - tree.push(Folder); - first = false; - oldFolder = entry[i].childNodes[0].nodeValue; - oldFolderParent = - oldFolder.slice(0, oldFolder.lastIndexOf(folderName[folderName.length - 2])); - } - else { - var newFolder = entry[i].childNodes[0].nodeValue; - var newFolderParent = newFolder.slice(0, newFolder.lastIndexOf(folderName[folderName.length - 2])); - //cartella sorella con quella memorizzata - if (newFolderParent == oldFolderParent) { - oldFolder = newFolder; - insertOBJinFS(Folder, tree, folderName, 0); - } - else if (newFolderParent == oldFolder) { - oldFolder = newFolder; - oldFolderParent = newFolderParent; - insertOBJinFS(Folder, tree, folderName, 0); - } - else { - //arretro nell'albero fino a trovare lo stesso padre. Per fare questo - //tolgo al padre memorizzato in precedenza prima "/" poi il nome dell' - //ultima cartella - while (newFolderParent != oldFolderParent) { - oldFolderParent = oldFolderParent.slice(0, oldFolderParent.length - 1); - oldFolderParent = oldFolderParent.slice(0, (oldFolderParent.lastIndexOf("/") + 1)); - } - oldFolder = newFolder; - insertOBJinFS(Folder, tree, folderName, 0); - } - } + //posiziono la cartella nella posizione coorretta: + //seleziono nel path della cartella corrente il path della + //cartella genitore + var parentPath = jsonDoc[i].path.split("/"); + alert(parentPath); } else { - var fileName = entry[i].childNodes[0].nodeValue.split("/"); - var filePath = "https://oc-chnet.cr.cnaf.infn.it:8443" - + entry[i].childNodes[0].nodeValue; - var File = { - text: fileName[fileName.length - 1], - icon: "glyphicon glyphicon-file", - selectedIcon: "glyphicon glyphicon-file", - url: filePath - }; - insertOBJinFS(File, tree, fileName, 1); + alert("File"); } } + ; + /* + var tree: any = []; + var first: boolean = true; + var oldFolderParent: string = ""; + var oldFolder: string = ""; + + + //inizio leggendo tutti gli elementi da inserire nell'albero (caratterizzati + //dall'avere un url di riferimento) + var entry: string[] = jsonDoc.getElementsByTagName("d:href"); + + //per ogni elemento controllo se si tratta di una cartella o di un documento + for (var i:number = 0; i < entry.length; i++) { + var path: string[] = entry[i].childNodes[0].nodeValue.split(""); + + //cartella, creo l'oggetto corrsipondente + if (path[path.length-1] == "/") { + var folderName: string[] = entry[i].childNodes[0].nodeValue.split("/"); + var Folder = { + text: folderName[folderName.length-2], + nodes: [] + } + + //posiziono la radice del file system, ne memorizzo il path e il padre + if (first) { + tree.push(Folder); + first=false; + oldFolder = entry[i].childNodes[0].nodeValue; + oldFolderParent = + oldFolder.slice(0, oldFolder.lastIndexOf(folderName[folderName.length-2])); + + //per ogni cartella determino la relazione con la cartella precedente + } else { + var newFolder: string = entry[i].childNodes[0].nodeValue; + var newFolderParent: string = + newFolder.slice(0, newFolder.lastIndexOf(folderName[folderName.length-2])); + + //cartella sorella con quella memorizzata + if(newFolderParent == oldFolderParent){ + oldFolder = newFolder; + insertOBJinFS(Folder, tree, folderName, 0); + //cartella figlia di quella memorizzata + } else if(newFolderParent == oldFolder){ + oldFolder = newFolder; + oldFolderParent = newFolderParent; + insertOBJinFS(Folder, tree, folderName, 0); + //nessuno dei casi precedenti + } else { + //arretro nell'albero fino a trovare lo stesso padre. Per fare questo + //tolgo al padre memorizzato in precedenza prima "/" poi il nome dell' + //ultima cartella + while(newFolderParent != oldFolderParent){ + oldFolderParent = oldFolderParent.slice(0, oldFolderParent.length-1); + oldFolderParent = oldFolderParent.slice(0, (oldFolderParent.lastIndexOf("/")+1)); + } + oldFolder = newFolder; + insertOBJinFS(Folder, tree, folderName, 0); + } + } + + //documento, creo l'oggetto corrispondente e lo inserisco nell'albero + } else { + var fileName: string[] = entry[i].childNodes[0].nodeValue.split("/"); + var filePath: string = + "https://oc-chnet.cr.cnaf.infn.it:8443" + + entry[i].childNodes[0].nodeValue; + var File = { + text: fileName[fileName.length-1], + icon: "glyphicon glyphicon-file", + selectedIcon: "glyphicon glyphicon-file", + url: filePath + } + insertOBJinFS(File, tree, fileName, 1); + } + }*/ return tree; } //funzione che posiziona l'oggetto passato in input nell'albero diff --git a/LoadFile.ts b/LoadFile.ts index 258fb29aeb4320f60f49d7326eba7ed87fd8bff9..76ac3a312f729ff6de9c2082f9991f9b40769351 100644 --- a/LoadFile.ts +++ b/LoadFile.ts @@ -50,13 +50,16 @@ function setImportFile(){ } xmlListingFile.send(null); + + generateTree(jsonResponse); + //ora genero l'albero e definisco l'evento in caso di selezione di un nodo - $('#FileTreeview').treeview({data: generateTree(jsonResponse)}); +/* $('#FileTreeview').treeview({data: generateTree(jsonResponse)}); $('#FileTreeview').on('nodeSelected', function(e, node){ if(node['url'] != undefined){ //openFileFromServer(node['url']); } - }); + });*/ //bottone per l'importazione locale var fileInputButton: any = document.getElementById('myImport'); @@ -75,10 +78,37 @@ function setImportFile(){ //funzione che genera automaticamente l'albero function generateTree(jsonDoc){ + var tree: any = [ { + text:"XRF-File-System", + nodes: [ ] + }]; + + //scorro ogni elemento dell'albero + for (var i: number = 0; i < jsonDoc.length; i++) { + if(jsonDoc[i].type == "tree"){ //è una cartella + var Folder = { + text: jsonDoc[i].name, + nodes: [] + } + //posiziono la cartella nella posizione coorretta: + //seleziono nel path della cartella corrente il path della + //cartella genitore + + var parentPath: string[] = jsonDoc[i].path.split("/"); + alert(parentPath); + + } else { //è un file + alert("File"); + } + }; + + + /* var tree: any = []; var first: boolean = true; var oldFolderParent: string = ""; var oldFolder: string = ""; + //inizio leggendo tutti gli elementi da inserire nell'albero (caratterizzati //dall'avere un url di riferimento) @@ -147,7 +177,7 @@ function generateTree(jsonDoc){ } insertOBJinFS(File, tree, fileName, 1); } - } + }*/ return tree; } diff --git a/RemoteFileSystem/Pergamena-Medioevale/La-Muta/La-Muta/codapavone_500.txt b/XRF-File-System/Pergamena-Medioevale/La-Muta/La-Muta/codapavone_500.txt similarity index 100% rename from RemoteFileSystem/Pergamena-Medioevale/La-Muta/La-Muta/codapavone_500.txt rename to XRF-File-System/Pergamena-Medioevale/La-Muta/La-Muta/codapavone_500.txt diff --git a/RemoteFileSystem/Pergamena-Medioevale/codapavone_250.txt b/XRF-File-System/Pergamena-Medioevale/codapavone_250.txt similarity index 100% rename from RemoteFileSystem/Pergamena-Medioevale/codapavone_250.txt rename to XRF-File-System/Pergamena-Medioevale/codapavone_250.txt diff --git a/RemoteFileSystem/Pergamena-Medioevale/codapavone_500.txt b/XRF-File-System/Pergamena-Medioevale/codapavone_500.txt similarity index 100% rename from RemoteFileSystem/Pergamena-Medioevale/codapavone_500.txt rename to XRF-File-System/Pergamena-Medioevale/codapavone_500.txt diff --git a/RemoteFileSystem/Pergamena-Medioevale/mappa-integrale.txt b/XRF-File-System/Pergamena-Medioevale/mappa-integrale.txt similarity index 100% rename from RemoteFileSystem/Pergamena-Medioevale/mappa-integrale.txt rename to XRF-File-System/Pergamena-Medioevale/mappa-integrale.txt diff --git a/RemoteFileSystem/Raffaello/La-Muta/mappa4_codapavone_500_v05.txt b/XRF-File-System/Raffaello/La-Muta/mappa4_codapavone_500_v05.txt similarity index 100% rename from RemoteFileSystem/Raffaello/La-Muta/mappa4_codapavone_500_v05.txt rename to XRF-File-System/Raffaello/La-Muta/mappa4_codapavone_500_v05.txt