Parcourir la source

ricerca.js spacchettata

Alessia il y a 1 an
Parent
commit
d7feb644f2

+ 6 - 3
site2/index.html

@@ -44,7 +44,8 @@
 
 <body>
 
-   <script type="text/javascript" src="js/ricerca.js"></script>
+   <!--<script type="text/javascript" src="js/ricerca.js"></script>-->
+   <script type="module" src="js/index.js"></script>
    
    <div class="container">
 
@@ -145,7 +146,8 @@
       </div>
 
       <div id="searchBar" class="row">
-         <button id="lauchSearch" class="btn btn-primary" onclick="funzioneRicerca()">Cerca</button>
+         <!--<button id="lauchSearch" class="btn btn-primary" onclick="funzioneRicerca()">Cerca</button>-->
+         <button id="lauchSearch" class="btn btn-primary">Cerca</button>
       </div>
 
       <span id="params"></span><br />
@@ -189,7 +191,8 @@
          <div id="navPagination"></div>
       </div>
       
-      <button id="lauchSearchContext" class="btn btn-primary" style="display:none;" onclick="checkContext()">Vai ai contesti</button>
+      <!--<button id="lauchSearchContext" class="btn btn-primary" style="display:none;" onclick="checkContext()">Vai ai contesti</button>-->
+      <button id="lauchSearchContext" class="btn btn-primary" style="display:none;">Vai ai contesti</button>
 
    </div>
 

+ 61 - 0
site2/js/cercaContesti.js

@@ -0,0 +1,61 @@
+import {arrayResponse} from './processData.js'
+import {queryDTO, flask_be_address, getData} from './toExport.js'
+import {processOccData, processSingleContext} from './processData.js' 
+
+
+export function checkContext() {
+    let resulTable = document.getElementById("result");
+    const checkBoxes = resulTable.querySelectorAll('input[type="checkbox"]');
+    let arrayContesti = [];
+  
+    var selected = [];
+    $('#result input:checked').each(function() {
+        //selected.push($(this).attr('id'));
+        var checkNum = $(this).attr('id');
+        selected.push(checkNum);
+    });
+  
+    for (var i=0; i<arrayResponse.length; i++) {
+      for (var j=0; j<selected.length; j++) {
+        if (arrayResponse[i]["cod"] == selected[j]) {
+          arrayResponse[i]["selected"] = true;
+          arrayContesti.push(arrayResponse[i]);
+        }
+      }
+    }
+  
+    queryDTO["listResults"] = arrayContesti; 
+  
+    console.log(queryDTO);
+  
+    $("#result").html("");
+    $("#loader").css("display", "block");
+  
+    getData('/get_context', queryDTO)
+    // After request finishes, process response data
+    .done(response => processOccData(response))
+    .fail(err => {
+      console.log(err);
+      $("#loader").css("display", "none");
+      alert('Something went wrong!');
+    });
+  //  .always(response => console.log(response));
+  }
+
+  export function goToSingleContext(num, parole, periodi, brani) {
+    let params = {"indice": num, "parole": parole, "periodi": periodi, "brani": brani};
+  
+    let queryGSC = {
+      elem: arrayResponse[num],
+      params: params
+    }
+  
+    getData('/get_single_context', queryGSC)
+      // After request finishes, process response data
+      .done(response => processSingleContext(response))
+      .fail(err => {
+        console.log(err);
+        $("#loader").css("display", "none");
+        alert('Something went wrong!');
+      });
+  }

+ 132 - 0
site2/js/createCooccorrenza.js

@@ -0,0 +1,132 @@
+export function createNewCC(occ) {
+  
+    var new_id = "occ_" + occ;
+    var new_par = document.createElement('div');
+    new_par.className = "row height d-flex justify-content-center align-items-center";
+    new_par.id = new_id;
+    
+    var search_params = document.createElement('div');
+    search_params.className = "col search_params";
+  
+    var choose_param = document.createElement('div');
+    choose_param.className = "row choose_param";
+  
+    var col_6 = document.createElement('div');
+    col_6.className = "col-5";
+  
+    var input_group = document.createElement('div');
+    input_group.className = "input-group form-check";
+  
+    var inputSel = document.createElement('input');
+    inputSel.className = "barraDiRicerca form-control";
+    inputSel.type = "text";
+  
+    //Create and append select list
+    var selectList = document.createElement("select");
+    selectList.className = "flViewBy";
+  
+    //Create and append the options
+    var optionForma = document.createElement("option");
+    optionForma.value = "forma";
+    optionForma.text = "Forma";
+    optionForma.selected = "selected";
+    selectList.appendChild(optionForma);
+  
+    var optionLemma = document.createElement("option");
+    optionLemma.value = "lemma";
+    optionLemma.text = "Lemma";
+    selectList.appendChild(optionLemma);
+  
+    var col_form = document.createElement("div");
+    col_form.className = "col-2";
+  
+    var form_check = document.createElement("div");
+    form_check.className = "form-check";
+  
+    var input_ricerca_espansa = document.createElement("input");
+    input_ricerca_espansa.className = "ricercaEx form-check-input";
+    input_ricerca_espansa.value = "ricerca_espansa";
+    input_ricerca_espansa.type = "checkbox";
+    input_ricerca_espansa.name = "espansa";
+  
+    var label_ricerca_espansa = document.createElement("label");
+    label_ricerca_espansa.className = "form-check-label";
+    label_ricerca_espansa.innerHTML = "Ricerca espansa";
+  
+    var col_form2 = document.createElement("div");
+    col_form2.className = "col-2";
+  
+    var form_check2 = document.createElement("div");
+    form_check2.className = "form-check";
+  
+    var input_ricerca_raddoppiata = document.createElement("input");
+    input_ricerca_raddoppiata.className = "raddoppiata form-check-input";
+    input_ricerca_raddoppiata.value = "raddoppiata";
+    input_ricerca_raddoppiata.type = "checkbox";
+    input_ricerca_raddoppiata.name = "raddoppiata";
+  
+    var label_ricerca_raddoppiata = document.createElement("label");
+    label_ricerca_raddoppiata.className = "form-check-label";
+    label_ricerca_raddoppiata.innerHTML = "Iniziale raddoppiata";
+  
+    var col_form3 = document.createElement("div");
+    col_form3.className = "col-2";
+  
+    var form_check3 = document.createElement("div");
+    form_check3.className = "form-check";
+  
+    var input_ricerca_lemmatizzata = document.createElement("input");
+    input_ricerca_lemmatizzata.className = "lemmatizzata form-check-input";
+    input_ricerca_lemmatizzata.value = "lemmatizzata";
+    input_ricerca_lemmatizzata.type = "checkbox";
+    input_ricerca_lemmatizzata.name = "lemmatizzata";
+    input_ricerca_lemmatizzata.disabled = "true";
+  
+    var label_ricerca_lemmatizzata = document.createElement("label");
+    label_ricerca_lemmatizzata.className = "form-check-label";
+    label_ricerca_lemmatizzata.innerHTML = "Cerca solo lemmatizzate";
+  
+    var col_form4 = document.createElement("div");
+    col_form4.className = "col-1";
+  
+    var form_check4 = document.createElement("div");
+    form_check4.className = "form-check deleteCC";
+    form_check4.id = occ;
+  
+    var trash_button = document.createElement("button");
+    trash_button.className = "btn";
+    var trash_icon = document.createElement("i");
+    trash_icon.className = "fa fa-trash";
+  
+    input_group.appendChild(inputSel);
+    input_group.appendChild(selectList);
+    col_6.appendChild(input_group);
+  
+    form_check.appendChild(input_ricerca_espansa);
+    form_check.appendChild(label_ricerca_espansa);
+    col_form.appendChild(form_check);
+  
+    form_check2.appendChild(input_ricerca_raddoppiata);
+    form_check2.appendChild(label_ricerca_raddoppiata);
+    col_form2.appendChild(form_check2);
+  
+    form_check3.appendChild(input_ricerca_lemmatizzata);
+    form_check3.appendChild(label_ricerca_lemmatizzata);
+    col_form3.appendChild(form_check3);
+  
+    trash_button.appendChild(trash_icon);
+    form_check4.appendChild(trash_button);
+    col_form4.appendChild(form_check4);
+  
+    choose_param.appendChild(col_6);
+    choose_param.appendChild(col_form);
+    choose_param.appendChild(col_form2);
+    choose_param.appendChild(col_form3);
+    choose_param.appendChild(col_form4);
+  
+    search_params.appendChild(choose_param);
+  
+    new_par.appendChild(search_params);
+  
+    $("#search_form").append(new_par);
+  }

+ 188 - 0
site2/js/createSingleContext.js

@@ -0,0 +1,188 @@
+export function createPage(elem) {
+
+    $("#single-context-box").css("display", "block");
+  
+    var contesto = elem["contesto"];
+    var titolo_abbreviato = "";
+    var rif_organico = "";
+    var tipo_stanza = "";
+    var stanza = "";
+    var verso = "";
+    var pag = "";
+    var riga = "";
+  
+    var autore = "";
+    var titolo = "";
+    var data_descr = "";
+    var area_gen = "";
+    var area_spec = "";
+    var genere = "";
+    var curatore = "";
+    var sigla = "";
+  
+    var note = "";
+    var testo_associato = "";
+  
+    console.log(elem);
+  
+    if (elem.hasOwnProperty('Titolo Abbreviato')) {
+      titolo_abbreviato = elem["Titolo Abbreviato"];
+    }
+    if (elem.hasOwnProperty('Rif_organico')) {
+      rif_organico = elem["Rif_organico"];
+    }
+    if (elem.hasOwnProperty('tipostanza')) {
+      var ts = elem["tipostanza"];
+      tipo_stanza = writeStanza(ts);
+    }
+    if (elem.hasOwnProperty('stanza')) {
+      stanza = elem["stanza"];
+    }
+    if (elem.hasOwnProperty('verso')) {
+      verso = elem["verso"];
+    }
+    if (elem.hasOwnProperty('pag')) {
+      pag = elem["pag"];
+    }
+    if (elem.hasOwnProperty('riga')) {
+      riga = elem["riga"];
+    }
+  
+    if (elem.hasOwnProperty('Autore')) {
+      autore = elem["Autore"];
+    }
+    if (elem.hasOwnProperty("Area generica")) {
+      area_gen = elem["Area generica"];
+    }
+    if (elem.hasOwnProperty("Area specifica")) {
+      area_spec = elem["Area specifica"];
+    }
+    if (elem.hasOwnProperty("Data descrittiva")) {
+      data_descr = elem["Data descrittiva"];
+    }
+    if (elem.hasOwnProperty("Genere")) {
+      genere = elem["Genere"];
+    }
+    if (elem.hasOwnProperty("sigla")) {
+      sigla = elem["sigla"];
+    }
+    if (elem.hasOwnProperty('Curatore')) {
+      curatore = "a cura di " + elem["Curatore"];
+    }
+    if (elem.hasOwnProperty('Titolo')) {
+      titolo = elem["Titolo"];
+    }
+  
+    if (elem.hasOwnProperty('nota')) {
+      note = elem["nota"];
+      $("#notes_box").css("display", "block");
+    } else {
+      $("#notes_box").css("display", "none");
+    }
+  
+    if (elem.hasOwnProperty('testo associato')) {
+      testo_associato = elem["testo associato"];
+      $("#associated-text-box").css("display", "block");
+    } else {
+      $("#associated-text-box").css("display", "none");
+    }
+  
+    var title_box = "<p>" + titolo_abbreviato + ", " + rif_organico + ", " + tipo_stanza + 
+    "." + stanza + ", v." + verso + ", " + pag + "." + riga + "</p>";
+  
+    var add_info = "<p>" + "Autore: " + autore + "<br />" +
+    "Titolo: " + titolo + "<br />" +
+    "Titolo abbreviato: " + titolo_abbreviato + "<br />" +
+    "Riferimenti cronologici: " + data_descr + "<br />" +
+    "Area generica: " + area_gen + "<br />" +
+    "Area specifica: " + area_spec + "<br />" +
+    "Genere: " + genere + "<br />" +
+    "Curatore: " + curatore + "<br />" +
+    "Sigla: " + sigla + "<br />" +
+    "</p>";
+  
+    var container_div = document.getElementsByClassName('search_params');
+    var count = container_div.length;
+    console.log(count);
+    let highlights = elem['highlights_combined'];
+    let firstNum = highlights[0];
+    let ind = parseInt(firstNum);
+    let arrayStrings = [];
+    console.log(highlights);
+  
+    let split_index = [ind];
+  
+    if (count>0) {
+      for (var i=1; i<count; i++) {
+        var hh = highlights[i][0];
+        var ii = parseInt(hh);
+        split_index.push(ii);
+      }
+    }
+  
+    split_index.sort(function(a, b){return a-b});
+  
+    var ll = split_index.length;
+    var tmp = 0;
+  
+    for (var j=0; j<split_index.length; j++) {
+      var num = split_index[j];
+      var snip = contesto.substring(tmp, num);
+      tmp = num;
+      arrayStrings.push(snip);
+    }
+  
+    var lastSnip = contesto.substring(split_index[ll-1]);
+    arrayStrings.push(lastSnip);
+  
+    console.log(arrayStrings);
+  
+    var la = arrayStrings.length;
+  
+    var newString = arrayStrings[0] + "<span class='highlight'>";
+  
+    
+      for (var x=1; x<arrayStrings.length; x++) {
+        var stringToAdd = arrayStrings[x].replace(" ", "</span> ");
+        newString = newString + stringToAdd + "<span class='highlight'>";
+      }
+    
+  
+    newString = newString.replace(/\n/g, "<br />");
+  
+    document.getElementById("context-text").innerHTML = newString;
+    document.getElementById("context-title").innerHTML = title_box;
+    document.getElementById("additional_info").innerHTML = add_info;
+  
+    document.getElementById("notes-text").innerHTML = note;
+    document.getElementById("associated-text").innerHTML = testo_associato;
+    
+  }
+
+  export function writeStanza(stanza) {
+    var tipo_stanza = "";
+  
+    if (stanza = 0) {
+      tipo_stanza = "prosa";
+    } else if (stanza = 1) {
+      tipo_stanza = "verso";
+    } else if (stanza = 2) {
+      tipo_stanza = "distico";
+    } else if (stanza = 4) {
+      tipo_stanza = "terzina";
+    } else if (stanza = 8) {
+      tipo_stanza = "quartina";
+    } else if (stanza = 16) {
+      tipo_stanza = "sestina";
+    } else if (stanza = 32) {
+      tipo_stanza = "ottava";
+    } else if (stanza = 64) {
+      tipo_stanza = "sonetto";
+    } else if (stanza = 99) {
+      tipo_stanza = "stanza";
+    } else {
+      tipo_stanza = stanza;
+    }
+  
+    return tipo_stanza;
+  }

+ 220 - 0
site2/js/createTable.js

@@ -0,0 +1,220 @@
+export function createFirstRow(param) {
+
+    var row = document.createElement('div');
+    row.className = "row height d-flex justify-content-center align-items-center";
+    row.id = "first_row";
+  
+    
+      if (param.includes("forma")) {
+        var colForma = document.createElement('div');
+        colForma.className = "col formaCol";
+        colForma.append("Forma");
+        row.append(colForma);
+      }
+  
+      if (param.includes("lemma")) {
+        var colLemma = document.createElement('div');
+        colLemma.className = "col lemmaCol";
+        colLemma.append("Lemma");
+        row.append(colLemma);
+      }
+      
+      if (param.includes("cat_gr")) {
+        var categoria = document.createElement('div');
+        categoria.className = "col cat_gr";
+        categoria.append("Categoria Grammaticale");
+        row.append(categoria);
+      }
+      
+      if (param.includes("disambiguatore")) {
+        var colDis = document.createElement('div');
+        colDis.className = "col disambiguatore";
+        colDis.append("Disambiguatore");
+        row.append(colDis);
+      }
+      
+      if (param.includes("occ")) {
+        var colOcc = document.createElement('div');
+        colOcc.className = "col occorrenze";
+        colOcc.append("Occorrenze");
+        row.append(colOcc);
+      }
+  
+    var colSel = document.createElement('div');
+      colSel.className = "col seleziona_elemento";
+      colSel.append("Seleziona");
+      row.append(colSel);
+  
+  
+    $("#result").append(row);
+  
+  }
+  
+  //Crea prima riga per contesti multipli 
+  
+  export function createFirstRowOcc(param) {
+  
+    var row = document.createElement('div');
+    row.className = "row height d-flex justify-content-center align-items-center";
+    row.id = "first_row";
+  
+    var colRif = document.createElement('div');
+    colRif.className = "col-4 rifCol";
+    colRif.append("Riferimenti");
+    row.append(colRif);
+  
+    var colInfoLemma = document.createElement('div');
+    colInfoLemma.className = "col-2 lemmaCol";
+    row.append(colInfoLemma);
+  
+    var colContesto = document.createElement('div');
+    colContesto.className = "col-6 contestoCol";
+    colContesto.append("Contesto");
+    row.append(colContesto);
+  
+    $("#result").append(row);
+  
+  }
+
+  export function createRow(num, elem) {
+    var cat_gr = elem["cat_gr"];
+    var disambiguatore = elem["disambiguatore"];
+    var forma = elem["forma"];
+    var lemma = elem["lemma"];
+    var occ = elem["occ"];
+    var cod = elem["cod"];
+  
+    var row = document.createElement('div');
+    row.className = "row height d-flex justify-content-center align-items-center";
+    row.id = num;
+  
+    if (elem.hasOwnProperty('forma')) {
+      var colForma = document.createElement('div');
+      colForma.className = "col formaCol";
+      colForma.append(forma);
+      row.append(colForma);
+    }
+    
+    if (elem.hasOwnProperty('lemma')) {
+      var colLemma = document.createElement('div');
+      colLemma.className = "col lemmaCol";
+      colLemma.append(lemma);
+      row.append(colLemma);
+    }
+    
+    if (elem.hasOwnProperty('cat_gr')) {
+      var categoria = document.createElement('div');
+      categoria.className = "col cat_gr";
+      categoria.append(cat_gr);
+      row.append(categoria);
+    }
+    
+    if (elem.hasOwnProperty('disambiguatore')) {
+      var colDis = document.createElement('div');
+      colDis.className = "col disambiguatore";
+      colDis.append(disambiguatore);
+      row.append(colDis);
+    }
+    
+    if (elem.hasOwnProperty('occ')) {
+      var colOcc = document.createElement('div');
+      colOcc.className = "col occorrenze";
+      colOcc.append(occ);
+      row.append(colOcc);
+    }
+    
+    var colSel = document.createElement('div');
+    colSel.className = "col seleziona_elemento";
+    var inputSel = document.createElement('input');
+    inputSel.className = "form-check-selected";
+    inputSel.id = cod;
+    inputSel.type = "checkbox";
+    colSel.append(inputSel);
+    row.append(colSel);
+  
+    $("#result").append(row);
+  
+  }
+
+  export function createOccRow(num, elem, pp) {
+    var titolo_abbreviato = elem["Titolo Abbreviato"];
+    var contesto = elem["contesto"];
+    contesto = contesto.replace(/\n/g, "<br />");
+    let words = elem["highlights_combined"];
+    var rif_organico = elem["Rif_organico"];
+    var pag = elem["pag"];
+    var riga = elem["riga"];
+    var stanza = elem["stanza"];
+    var tipostanza = elem["tipostanza"];
+    var ts = writeStanza(tipostanza);
+    var verso = elem["verso"];
+    var lemma = elem["lemma"];
+    var cat_gr = elem["cat_gr"];
+  
+   
+    var riferimenti = titolo_abbreviato + ", " + rif_organico + ", " + ts + "." + stanza +
+    " v. " + verso + ", " + pag + "." + riga;
+  
+    var info_lemma = lemma + " " + cat_gr;
+  
+    /*
+    for (var i=0; i<words.length; i++) {
+      contesto = contesto.replace(words[i], '<span class="highlight">' + words[i] + '</span>');
+    }*/
+    
+    var row = document.createElement('div');
+    row.className = "row singleContext height d-flex justify-content-center align-items-center pag_" + pp;
+    row.id = num;
+    //var onClickCommand = "goToSingleContext(" + num + ", 31, 0, 0)";
+    //row.setAttribute("onclick", onClickCommand);
+  
+    var colRiferimenti = document.createElement('div');
+    colRiferimenti.className = "col-4 rifCol";
+    colRiferimenti.append(riferimenti);
+    row.append(colRiferimenti);
+  
+    var colInfoLemma = document.createElement('div');
+    colInfoLemma.className = "col-2 lemCol";
+    colInfoLemma.append(info_lemma);
+    row.append(colInfoLemma);
+  
+    var colContesto = document.createElement('div');
+    colContesto.className = "col-6 contestoCol";
+    colContesto.innerHTML = contesto;
+    row.append(colContesto);
+  
+    $("#pag_" + pp).append(row);
+  
+  }
+  
+  //
+  
+  //WRITE TIPOSTANZA 
+  
+  function writeStanza(stanza) {
+    var tipo_stanza = "";
+  
+    if (stanza = 0) {
+      tipo_stanza = "prosa";
+    } else if (stanza = 1) {
+      tipo_stanza = "verso";
+    } else if (stanza = 2) {
+      tipo_stanza = "distico";
+    } else if (stanza = 4) {
+      tipo_stanza = "terzina";
+    } else if (stanza = 8) {
+      tipo_stanza = "quartina";
+    } else if (stanza = 16) {
+      tipo_stanza = "sestina";
+    } else if (stanza = 32) {
+      tipo_stanza = "ottava";
+    } else if (stanza = 64) {
+      tipo_stanza = "sonetto";
+    } else if (stanza = 99) {
+      tipo_stanza = "stanza";
+    } else {
+      tipo_stanza = stanza;
+    }
+  
+    return tipo_stanza;
+  }

+ 123 - 0
site2/js/index.js

@@ -0,0 +1,123 @@
+import {funzioneRicerca} from './toExport.js'
+import {checkContext, goToSingleContext} from './cercaContesti.js'
+import {createNewCC} from './createCooccorrenza.js'
+
+document.querySelector('#lauchSearch').addEventListener('click', funzioneRicerca);
+document.querySelector('#lauchSearchContext').addEventListener('click', checkContext);
+
+$(document).on("click", ".singleContext", function (ev) {
+    var num = this.id;
+    var parole = 31;
+    var periodi = 0;
+    var brani = 0;
+    goToSingleContext(num, parole, periodi, brani);
+  
+  });
+
+var occ = 0;
+
+$("#btnGroupAddon").click(function() {
+    $("#cooccorrenze_options").css("display", "flex");
+    $("#inner_altro").css("display", "none");
+    $("#inner_lemmatizzato").css("display", "flex");
+
+    if (occ > 8) {
+      alert("Hai esaurito i parametri a disposizione");
+    }
+    else {
+      occ = occ + 1;
+      
+      createNewCC(occ);
+      
+    }
+});
+
+  $(document).on("click", ".deleteCC", function (ev) {
+    var deleteID = "occ_" + this.id;
+    const element = document.getElementById(deleteID);
+    element.remove();
+  
+    let numb = document.getElementById("search_form").childElementCount;
+    if (numb < 2) {
+      $("#cooccorrenze_options").css("display", "none");
+      $("#inner_altro").css("display", "flex");
+      $("#inner_lemmatizzato").css("display", "none");
+    }
+  
+  });
+  
+  $(document).on("change", ".flViewBy", function (ev) {
+    var check_tipo = this.value;
+    var parent = this.parentElement.parentElement.parentElement.parentElement.parentElement;
+    var cc = parent.getElementsByClassName("lemmatizzata");
+    
+    if (check_tipo == "forma") {
+      cc[0].disabled = true;
+      cc[0].checked = false;
+    } 
+    else if (check_tipo == "lemma"){
+      cc[0].disabled = false;
+    }
+  
+  });
+  
+  $( "#context-title" ).on( "click", function() {
+    $( "#additional_info" ).toggle( "slow", function() {
+      // Animation complete.
+    });
+  });
+  
+  $(document).on("click", ".page-item", function (ev) {
+    $(".page-item").removeClass("active");
+    var name = this.id;
+    this.className = "page-item active";
+    var num = name.replace("getPage_", "");
+    var page = "pag_" + num;
+    $("#" + page).css("display", "block");
+    $(".page:not(#" + page +")").css("display", "none"); 
+  
+  });
+  
+  $(document).on("click", "#prev", function (ev) {
+    var el = document.getElementsByClassName("page-item active")[0];
+    var name = el.id;
+    var n = name.replace("getPage_", "");
+    var num = parseInt(n) - 1;
+    if (num < 0) {
+      alert("No pages found");
+    } else {
+      var page = "pag_" + num;
+      var getPage = "getPage_" + num;
+      var elPage = document.getElementById(getPage);
+      if (elPage !== null) {
+        $(".page-item").removeClass("active");
+        elPage.classList.add("active");
+        $("#" + page).css("display", "block");
+        $(".page:not(#" + page +")").css("display", "none");
+      }
+      
+    }
+  
+  });
+  
+  $(document).on("click", "#next", function (ev) {
+    var el = document.getElementsByClassName("page-item active")[0];
+    var name = el.id;
+    var n = name.replace("getPage_", "");
+    var num = parseInt(n) + 1;
+    if (num < 0) {
+      alert("No pages found");
+    } else {
+      var page = "pag_" + num;
+      var getPage = "getPage_" + num;
+      var elPage = document.getElementById(getPage);
+      if (elPage !== null) {
+        $(".page-item").removeClass("active");
+        elPage.classList.add("active");
+        $("#" + page).css("display", "block");
+        $(".page:not(#" + page +")").css("display", "none");
+      }
+      
+    }
+  
+  });

+ 46 - 160
site2/js/pagination.js

@@ -1,161 +1,47 @@
-/*
- * jQuery Pagination
- * Author: Austin Wulf (@austinwulf)
- *
- * Call the paginate method on an array
- * of elements. Accepts # of items per page
- * as an argument. Defaults to 5.
- *
- * Example:
- *     $(selector).paginate(3);
- *
- * Released under the MIT License.
- *
- * v 1.0
- */
-
-(function($){
+export function createPagination(num) {
+    $("#navPagination").html("");
+  
+    var navbar = document.createElement('nav');
     
-    var paginate = {
-        startPos: function(pageNumber, perPage) {
-            // determine what array position to start from
-            // based on current page and # per page
-            return pageNumber * perPage;
-        },
-
-        getPage: function(items, startPos, perPage) {
-            // declare an empty array to hold our page items
-            var page = [];
-
-            // only get items after the starting position
-            items = items.slice(startPos, items.length);
-
-            // loop remaining items until max per page
-            for (var i=0; i < perPage; i++) {
-                page.push(items[i]); }
-
-            return page;
-        },
-
-        totalPages: function(items, perPage) {
-            // determine total number of pages
-            return Math.ceil(items.length / perPage);
-        },
-
-        createBtns: function(totalPages, currentPage) {
-            // create buttons to manipulate current page
-            var pagination = $('<div class="pagination" />');
-
-            // add a "first" button
-            pagination.append('<span class="pagination-button">&laquo;</span>');
-
-            // add pages inbetween
-            for (var i=1; i <= totalPages; i++) {
-                // truncate list when too large
-                if (totalPages > 5 && currentPage !== i) {
-                    // if on first two pages
-                    if (currentPage === 1 || currentPage === 2) {
-                        // show first 5 pages
-                        if (i > 5) continue;
-                    // if on last two pages
-                    } else if (currentPage === totalPages || currentPage === totalPages - 1) {
-                        // show last 5 pages
-                        if (i < totalPages - 4) continue;
-                    // otherwise show 5 pages w/ current in middle
-                    } else {
-                        if (i < currentPage - 2 || i > currentPage + 2) {
-                            continue; }
-                    }
-                }
-
-                // markup for page button
-                var pageBtn = $('<span class="pagination-button page-num" />');
-
-                // add active class for current page
-                if (i == currentPage) {
-                    pageBtn.addClass('active'); }
-
-                // set text to the page number
-                pageBtn.text(i);
-
-                // add button to the container
-                pagination.append(pageBtn);
-            }
-
-            // add a "last" button
-            pagination.append($('<span class="pagination-button">&raquo;</span>'));
-
-            return pagination;
-        },
-
-        createPage: function(items, currentPage, perPage) {
-            // remove pagination from the page
-            $('.pagination').remove();
-
-            // set context for the items
-            var container = items.parent(),
-                // detach items from the page and cast as array
-                items = items.detach().toArray(),
-                // get start position and select items for page
-                startPos = this.startPos(currentPage - 1, perPage),
-                page = this.getPage(items, startPos, perPage);
-
-            // loop items and readd to page
-            $.each(page, function(){
-                // prevent empty items that return as Window
-                if (this.window === undefined) {
-                    container.append($(this)); }
-            });
-
-            // prep pagination buttons and add to page
-            var totalPages = this.totalPages(items, perPage),
-                pageButtons = this.createBtns(totalPages, currentPage);
-
-            container.after(pageButtons);
-        }
-    };
-
-    // stuff it all into a jQuery method!
-    $.fn.paginate = function(perPage) {
-        var items = $(this);
-
-        // default perPage to 5
-        if (isNaN(perPage) || perPage === undefined) {
-            perPage = 5; }
-
-        // don't fire if fewer items than perPage
-        if (items.length <= perPage) {
-            return true; }
-
-        // ensure items stay in the same DOM position
-        if (items.length !== items.parent()[0].children.length) {
-            items.wrapAll('<div class="pagination-items" />');
-        }
-
-        // paginate the items starting at page 1
-        paginate.createPage(items, 1, perPage);
-
-        // handle click events on the buttons
-        $(document).on('click', '.pagination-button', function(e) {
-            // get current page from active button
-            var currentPage = parseInt($('.pagination-button.active').text(), 10),
-                newPage = currentPage,
-                totalPages = paginate.totalPages(items, perPage),
-                target = $(e.target);
-
-            // get numbered page
-            newPage = parseInt(target.text(), 10);
-            if (target.text() == '«') newPage = 1;
-            if (target.text() == '»') newPage = totalPages;
-
-            // ensure newPage is in available range
-            if (newPage > 0 && newPage <= totalPages) {
-                paginate.createPage(items, newPage, perPage); }
-        });
-    };
-
-})(jQuery);
-
-/* This part is just for the demo,
-not actually part of the plugin */
-$('.article-loop').paginate(2);
+    var ulNav = document.createElement('ul');
+    ulNav.className = "pagination";
+  
+    var liNavP = document.createElement('li');
+    //liNavP.className = "page-item";
+    liNavP.id = "prev";
+    
+    var aPrev = document.createElement('a');
+    aPrev.className = "page-link";
+    aPrev.innerHTML = "&laquo;";
+  
+    liNavP.append(aPrev);
+    ulNav.append(liNavP);
+  
+    for (var i=1; i<num+1; i++) {
+      var liNav = document.createElement('li');
+      liNav.className = "page-item";
+      if (i==1) {
+        liNav.classList.add("active");
+      }
+      liNav.id = "getPage_" + i;
+      var aNum = document.createElement('a');
+      aNum.className = "page-link";
+      aNum.innerHTML = i;
+      liNav.append(aNum)
+      ulNav.append(liNav);
+    }
+  
+    var liNavN = document.createElement('li');
+    //liNavN.className = "page-item";
+    liNavN.id = "next";
+    var aNext = document.createElement('a');
+    aNext.className = "page-link";
+    aNext.innerHTML = "&raquo;";
+    liNavN.append(aNext);
+    ulNav.append(liNavN);
+  
+    navbar.append(ulNav);
+  
+    
+    $("#navPagination").append(navbar);
+  }

+ 77 - 0
site2/js/processData.js

@@ -0,0 +1,77 @@
+import {createFirstRow, createFirstRowOcc, createRow} from "./createTable.js"
+import {createPagination} from './pagination.js'
+import {createOccRow} from './createTable.js'
+import {createPage} from './createSingleContext.js'
+
+export let arrayResponse = [];
+
+export function processData(response){
+    console.log(response);
+    $("#loader").css("display", "none");
+    if(response.length==0){
+        alert('No results!')
+    }
+    else {
+      arrayResponse = response;
+      var keys = Object.keys(response[0]);
+      createFirstRow(keys);
+      var ll = response.length;
+      for (var i=0; i<ll; i++) {
+        let newRow = response[i];
+        createRow(i, newRow);
+      }
+    }
+}
+
+export function processOccData(response){
+  console.log(response);
+  $("#loader").css("display", "none");
+  if(response.length==0){
+      alert('No results!')
+  }
+  else {
+    arrayResponse = response;
+    var keys = Object.keys(response[0]);
+    createFirstRowOcc(keys);
+    var ll = response.length;
+    let pags = Math.floor(ll / 10);
+    let extraP = ll % 10;
+    if (extraP != 0) {
+      pags = pags + 1;
+    }
+    let pp = 9;
+    let ref = 1;
+
+    createPagination(pags);
+
+    for (var j=1; j<pags+1; j++) {
+      var newDiv = document.createElement('div');
+      newDiv.id = "pag_" + j;
+      newDiv.className = "page";
+      $("#result").append(newDiv)
+    }
+    
+
+    for (var i=0; i<ll; i++) {
+      if (i >= pp) {
+        pp = pp + 10;
+        ref = ref + 1;
+      } else {
+        pp = pp;
+      }
+      let newRow = response[i];
+
+      createOccRow(i, newRow, ref);
+    }
+  }
+}
+
+export function processSingleContext(response){
+  if(response.length==0){
+      alert('No results!')
+  }
+  else {
+    console.log(response);
+    createPage(response[0]);
+  }
+}

+ 1 - 1
site2/js/ricerca.js

@@ -1101,4 +1101,4 @@ $(document).on("click", "#next", function (ev) {
     
   }
 
-});
+});

+ 130 - 0
site2/js/toExport.js

@@ -0,0 +1,130 @@
+import {processData, processOccData} from './processData.js'
+
+export const flask_be_address = 'http://127.0.0.1:5000';
+
+export function getData(endpoint, queryDTO){
+
+    let url = flask_be_address.concat(endpoint);
+
+    // This seems to work and it's definitely better than previous version
+    return $.ajax(
+      {
+        url: url,
+        type: 'POST',
+        contentType: 'application/json; charset=utf-8',
+        dataType: 'json',
+        data: JSON.stringify(queryDTO),
+      }
+    );
+
+}
+
+export let queryDTO = {};
+
+export function funzioneRicerca(){
+    $("#result").html("");
+    $("#loader").css("display", "block");
+    let collection_elementoDaRicercare = document.getElementsByClassName("barraDiRicerca");
+    var collection_types = document.getElementsByClassName("flViewBy");
+    var collection_lenght = collection_elementoDaRicercare.length;
+    let distanza = document.getElementById("distanza").value;
+    let queryList = [];
+    var periodo = 0;
+    var ordinate = 0;
+  
+    var i = 0;
+    for (i; i < collection_lenght; i++) {
+      let elementoDaRicercare = collection_elementoDaRicercare[i].value;
+      let word = elementoDaRicercare;
+      var tipo = "";
+      var espansa = 0;
+      var raddoppiata = 0;
+      var noLemma = 0;
+      var formeLemmi = 0;
+      var check_tipo = collection_types[i].value;
+   
+      //NOLEMMA DEVE ESSERE CONVERTITO IN TIPO (TIPO = 0, 1, 2), TIPO = 2 SE NOLEMMA è SELEZIONATO
+         
+      if ($('#occ_' + i + ' .ricercaEx').prop("checked"))
+      {
+        espansa = 1;
+      }
+      if ($('#occ_' + i + ' .raddoppiata').prop("checked"))
+      {
+        raddoppiata = 1;
+      }
+      if ($('#occ_' + i + ' .showOther').prop("checked"))
+      {
+        formeLemmi = 1;
+      }
+      if ($('#occ_' + i + ' .lemmatizzata').prop("checked"))
+      {
+        noLemma = 1;
+      }
+      
+  
+      if ((check_tipo == "forma") && (formeLemmi == 0)) {
+        tipo = "forma";
+      }
+      else if ((check_tipo == "forma") && (formeLemmi == 1)) {
+        tipo = "formaLemma";
+      }
+      else if ((check_tipo == "lemma") && (noLemma == 1)) {
+        tipo = "soloLemmatizzate";
+      }
+      else if ((check_tipo == "lemma") && (formeLemmi == 0)) {
+        tipo = "lemma";
+      }
+      else if ((check_tipo == "lemma") && (formeLemmi == 1)) {
+        tipo = "lemmaForma";
+      }
+  
+      queryList.push( {"stringa": word, "espansa": espansa, "raddoppiata": raddoppiata, "tipo": tipo} );
+      //$("#params").append("I tuoi parametri: " + word + "; " + tipo + "; " + espansa + "; " + raddoppiata + "; " + formeLemmi);
+    
+    }
+  
+    if ($('#periodo').prop("checked"))
+    {
+      periodo = 1;
+    }
+    if ($('#ordinate').prop("checked"))
+    {
+      ordinate = 1;
+    }
+  
+    let cooccorrenze = {"distanza": distanza, "stesso_periodo": periodo, "ordinate": ordinate};
+  
+    let numb = document.getElementById("search_form").childElementCount;
+    if (numb < 2) {
+        queryDTO = {
+          queryList: queryList
+      }
+      getData('/simple_get_query', queryDTO)
+      // After request finishes, process response data
+      .done(response => processData(response))
+      .fail(err => {
+        console.log(err);
+        $("#loader").css("display", "none");
+        alert('Something went wrong!');
+      });
+    } else {
+        queryDTO = {
+          queryList: queryList,
+          cooccorrenze: cooccorrenze
+      }
+      getData('/simple_get_query', queryDTO)
+      // After request finishes, process response data
+      .done(response => processOccData(response))
+      .fail(err => {
+        console.log(err);
+        $("#loader").css("display", "none");
+        alert('Something went wrong!');
+      });
+    } 
+  
+    console.log(queryDTO);
+  
+    $("#lauchSearchContext").css("display", "flex");
+    
+  }