Skip to content
Snippets Groups Projects
Forked from chnet / XRF-App
57 commits behind the upstream repository.
loaddir.ts 7.11 KiB
//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: any;
  var xmlListingFile: any = new XMLHttpRequest();
  xmlListingFile.open("GET", "https://baltig.infn.it/api/v4/projects/819/repository/tree?recursive=1&path=XRF-File-System", false);
  xmlListingFile.onreadystatechange = function(){
    if(xmlListingFile.readyState === 4){
      if(xmlListingFile.status === 200){
        jsonResponse = JSON.parse(xmlListingFile.responseText);
      }
    }
  }
  xmlListingFile.send(null);

  //ora genero l'albero e definisco l'evento in caso di selezione di un nodo
  $('#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'); 
  fileInputButton.onchange = function(){
    var fileName: string = fileInputButton.files[0];
    var readerObject: any = new FileReader();
    readerObject.readAsBinaryString(fileName);  
    readerObject.onload = function() {
      var fileString: string = readerObject.result; 
      readData(fileString);
    }
  }

}

//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 = {  //definisco l'oggetto Folder
        text: jsonDoc[i].name,
        relativePath: jsonDoc[i].path, 
        nodes: []
      }
      insertOBJinFS(Folder, tree);
    } else { //è un file
      var File = { //definisco l'oggetto File
        text: jsonDoc[i].name,
        relativePath: jsonDoc[i].path,
        icon: "glyphicon glyphicon-file",
        selectedIcon: "glyphicon glyphicon-file",
        url: jsonDoc[i].path
      }
      //inserisco il file nella giusta posizione
      insertOBJinFS(File, tree);
    }
  }

  return tree;