import {processData, processOccData} from './processData.js'

export const flask_be_address = 'http://147.213.76.243/data';

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");
    
  }