/*
 *  Codice javascript per l'applicazione
 */

// necessità comuni

function Coda() {
  // E infine un footer a chiudere la pagina
  container.append("footer")
    .attr("class", "row page-footer")
    .append("figure")
    .append("a")
    .attr("href", "https://www.campiaperti.org/")
    .attr("target", "_blank")
    .append("center")
    .html("<h2>Campi Aperti</h2>")
};

function Pulisci() {
  $("div.container-fluid").remove();
};

var nomi = [];

var quanti = [];


function Aziende(stringexel) {
  var container = d3.select("#viz")
    .append("div")
    .attr("class", "container-fluid");

  // Inseriamo il titolo in un contenitore che funga da "header" con classe "row", sempre per sfruttare bootstrap.
  var header = container.append("header") // Definiamo semanticamente le parti della pagina con i nuovi tag dell'HTML5
    .attr("class", "row page-header aziende noprint");


  // Rendiamo il tutto ricercabile mediante shufflejs attraverso un campo di input testuale
  header.append("nav")
    .append("input")
    .attr("id", "search")
    .attr("class", "center-block input-lg noprint")
    .attr("placeholder", "Cerca per unità produttiva...")
    .attr("value", "");


  d3.csv(stringexel, function(data) {
    dataset = data.map(function(d) {
      return d["your-name"]
    });
    //console.log(dataset);



    var schede = container.append("section")
      .attr("id", "grid")
      .attr("class", "row page-body") // Dopo l'header, un'altra "row", ma con classe "body"
      .selectAll("div") // La selezione dei "div" contenitori viene assegnata alla variabile "albi" e poi riutilizzata successivamente.
      .data(data)
      .enter()
      .append("div")
      .attr("class", "col-sm-12 card accordion")
      // Associamo una classe ai div contenitori degli albi per sfruttare la grid di bootstrap che ci assicura la responsiveness
      .attr("data-groups", function(d) { // Shufflejs effettua il filtro su categorie personalizzate che vanno definite nell'attributo data-groups
        var groups = [];
        // Nel nostro caso le categorie sono i nomi degli autori e devono comparire come json di un array di stringhe: ["nome1","nome2",...]
        // Sappiamo però che nelle nostre colonne ci possono essere più nomi, che divideremo in un array con split() usando la virgola come separatore.
        // Non possiamo tornare però un array, perché l'attributo si aspetta una stringa, per cui... stringify, non prima di aver eliminato dall'array
        // gli elementi duplicati.

        //.concat(d["checkbox-530"].split(",")).concat(d["Bioregione"].split(","))

        return JSON.stringify(_.uniq(groups.concat(d["your-name"].split(",")).concat(d["Mercati svolti"].split(",")).concat(d["Situazione mercato"].split(",")))).replace(/"/g, "'");
      })
      .attr("data-title", function(d) { // Perché allora non inserire tutte e informazioni negli attributi data-?
        return d["your-name"].replace(/"/g, "");
      })
      .attr("data-summary", function(d) {
        return d["tel-216"].replace(/"/g, "");
      });

    /*dividione in tre blocchi*/

    var schede_info = schede.append("div")
      .attr("class", "card-body");

    var schede_infoprivate = schede.append("div")
      .attr("class", "card-hidden, hide");

    var header_schede = schede.append("div")
      .attr("class", "card-header")
      .attr("id", function(d) {
        return d["Data"].replace(/"/g, "");
      });


    /*parte anagrafica e prodotti*/

    var schede_h1 = header_schede.append("h1")
      .attr("class", "mb-0 realeinfo")
      .text(function(d) {
        return "" + d["your-name"].replace(/"/g, ""); // Concatenazione di stringhe, sempre con il "+".
      });
      header_schede.append("p")
        .attr("class", "luogo")
        .text(function(d) {
          return "  " + d["text-122"].replace(/"/g, "")+ ""+ d["your-subject"].replace(/"/g, "") + " (" + d["text-597"].replace(/"/g, "") + ")";
        });

    header_schede.append("p")
      .append("span")
      .text("Referente d'azienda: ")
      .append("span")
      .attr("class", "nomeinfo")
      .text(function(d) {
        return "" + d["text-357"].replace(/"/g, "");
      });

    header_schede.append("p");
    header_schede.append("span")
      .attr("class", "")
      .text(function(d) {
        return "Contatti: " + d["tel-216"].replace(/"/g, "") + " " + d["your-email"].replace(/"/g, "");
      });
    header_schede.append("span")
      .html(function(d) {
        return "&nbsp;" + d["url-933"].replace(/"/g, "");
      });

    header_schede.append("p")
      .append("span")
      .attr("class", "info")
      .text("Bioregione:")
      .append("span")
      .text(function(d) {
        return " " + d["checkbox-666"].replace(/"/g, "");
      });
    header_schede.append("p")
      .append("span")
      .attr("class", "uppercase")
      .text("SAU:")
      .append("span")
      .text(function(d) {
        return " " + d["text-121"].replace(/"/g, "");
      });
    header_schede.append("p")
      .append("span")
      .attr("class", "")
      .text("Numero di dipendenti:")
      .append("span")
      .text(function(d) {
        return " " + d["number-202"].replace(/"/g, "");
      });
    header_schede.append("p")
      .append("span")
      .attr("class", "")
      .text("Stagioni disponibili per mercati:")
      .append("span")
      .text(function(d) {
        return " " + d["checkbox-530"].replace(/"/g, "");
      });
    header_schede.append("p")
      .append("span")
      .attr("class", "info uppercase")
      .text("Mercati:")
      .append("span")
      .text(function(d) {
        return " " + d["Mercati svolti"].replace(/"/g, "");
      });


    header_schede.append("p")
      .attr("class", "prodotti")
      .append("span")
      .attr("class", "info uppercase")
      .text("Prodotti offerti:")
      .append("span")
      .text(function(d) {
        return " " + d["checkbox-101"].replace(/"/g, "");
      });
    header_schede.append("p")
      .append("span")
      .attr("class", "info")
      .text("Trasformati:")
      .append("span")
      .text(function(d) {
        return " " + d["text-746"].replace(/"/g, "");
      });
    header_schede.append("p").attr("class","tratteggio");

    header_schede.append("p")
      .append("span")
      .attr("class", "info")
      .text("Ingredienti non autoprodotti (nei trasformati):")
      .append("span")
      .text(function(d) {
        return " " + d["textarea-491"].replace(/"/g, "");
      });



    /*Parte descrizione, collaborazioni e produzione (forse)*/



    schede_info.append("p")
      .append("span")
      .text("Descrizione:")
      .append("span")
      .text(function(d) {
        return " " + d["textarea-777"].replace(/"/g, "");
      });

    schede_info.append("p")
      .append("span")
      .text("Collaborazioni:")
      .append("span")
      .text(function(d) {
        return " " + d["textarea-627"].replace(/"/g, "");
      });

    schede_info.append("p")
      .append("span")
      .attr("class", "")
      .text("Produzioni (in ettari o capi o arnie o zone di raccolta):")
      .append("span")
      .text(function(d) {
        return " " + d["checkbox-119"].replace(/"/g, "") +
          " " + d["text-761"].replace(/"/g, "") +
          " " + d["textarea-933"].replace(/"/g, "") +
          " " + d["text-469"].replace(/"/g, "") +
          " " + d["textarea-381"].replace(/"/g, "") +
          " " + d["checkbox-271"].replace(/"/g, "") +
          " " + d["text-924"].replace(/"/g, "") +
          " " + d["textarea-112"].replace(/"/g, "") +
          " " + d["checkbox-895"].replace(/"/g, "") +
          " " + d["text-968"].replace(/"/g, "") +
          " " + d["textarea-453"].replace(/"/g, "") +
          " " + d["text-963"].replace(/"/g, "") +
          " " + d["checkbox-553"].replace(/"/g, "") +
          " " + d["text-45"].replace(/"/g, "") +
          " " + d["textarea-448"].replace(/"/g, "") +
          " " + d["checkbox-908"].replace(/"/g, "") +
          " " + d["text-436"].replace(/"/g, "") +
          " " + d["textarea-624"].replace(/"/g, "") +
          " " + d["checkbox-332"].replace(/"/g, "") +
          " " + d["number-509"].replace(/"/g, "") +
          " " + d["textarea-830"].replace(/"/g, "") +
          " " + d["checkbox-81"].replace(/"/g, "") +
          " " + d["text-561"].replace(/"/g, "") +
          " " + d["textarea-368"].replace(/"/g, "") +
          " " + d["checkbox-552"].replace(/"/g, "") +
          " " + d["number-156"].replace(/"/g, "") +
          " " + d["text-210"].replace(/"/g, "") +
          " " + d["checkbox-978"].replace(/"/g, "") +
          " " + d["text-741"].replace(/"/g, "") +
          " " + d["number-965"].replace(/"/g, "") +
          " " + d["text-302"].replace(/"/g, "") +
          " " + d["number-345"].replace(/"/g, "") +
          " " + d["text-605"].replace(/"/g, "") +
          " " + d["number-190"].replace(/"/g, "") +
          " " + d["text-629"].replace(/"/g, "") +
          " " + d["number-974"].replace(/"/g, "") +
          " " + d["text-683"].replace(/"/g, "") +
          " " + d["number-463"].replace(/"/g, "") +
          " " + d["text-892"].replace(/"/g, "") +
          " " + d["number-600"].replace(/"/g, "");
        /* inserire
                Checkbox-841		checkbox-332	checkbox-81	checkbox-552	Checkbox-978	checkbox-57	checkbox-106
*/
      });
    schede_info.append("p")
      .append("span")
      .attr("class", "")
      .text("Provenienza mangimi e foraggi qualora non autoprodotti:")
      .append("span")
      .html(function(d) {
        return " " + d["textarea-474"].replace(/"/g, "");
      });

    /*parte info aggiuntive, alcune da togliere dal csv*/
    schede_infoprivate.append("p")
      .append("span")
      .text("Referente di visita:")
      .append("span")
      .attr("class", "menoinfo")
      .text(function(d) {
        return " " + d["Referente visita ingresso"].replace(/"/g, "");
      });

    schede_infoprivate.append("p")
      .append("span")
      .attr("class", "menoinfo")
      .text("Desidera un altro mercato:")
      .append("span")
      .text(function(d) {
        return " " + d["Situazione mercato"].replace(/"/g, "");
      });
    schede_infoprivate.append("p")
      .append("span")
      .attr("class", "menoinfo")
      .text("Motivi/note (ingresso, sospensioni, espulsioni, visita GP)")
      .append("span")
      .text(function(d) {
        return " " + d["note"].replace(/"/g, "");
      });

    schede_infoprivate.append("p")
      .append("span")
      .attr("class", "menoinfo")
      .text("Targhe dei mezzi:")
      .append("span")
      .text(function(d) {
        return " " + d["text-697"].replace(/"/g, "");
      });
    schede_infoprivate.append("p")
      .append("span")
      .attr("class", "menoinfo")
      .text("Tipo di realtà:")
      .append("span")
      .text(function(d) {
        return " " + d["radio-226"].replace(/"/g, "");
      });
    schede_infoprivate.append("p")
      .append("span")
      .attr("class", "menoinfo")
      .text("Ragione sociale:")
      .append("span")
      .text(function(d) {
        return " " + d["text-10"].replace(/"/g, "");
      });
    schede_infoprivate.append("p")
      .append("span")
      .attr("class", "menoinfo")
      .text("Titolare:")
      .append("span")
      .text(function(d) {
        return " " + d["text-540"].replace(/"/g, "");
      });
    schede_infoprivate.append("p")
      .append("span")
      .attr("class", "menoinfo")
      .text("Codice fiscale:")
      .append("span")
      .text(function(d) {
        return " " + d["text-893"].replace(/"/g, "");
      });
    schede_infoprivate.append("p")
      .append("span")
      .attr("class", "menoinfo")
      .text("Partita IVA:")
      .append("span")
      .text(function(d) {
        return " " + d["text-878"].replace(/"/g, "");
      });
    schede_infoprivate.append("p")
      .append("span")
      .attr("class", "menoinfo")
      .text("Certificazione bio:")
      .append("span")
      .text(function(d) {
        return " " + d["radio-273"].replace(/"/g, "");
      });

    coseshuffle();

    scriviQuanti();

  }); // fine data Aziende();
}; // fine Aziende();


function coseshuffle() {


  $("#grid").shuffle({
    itemSelector: ".card"
  });

  // Attacchiamo una funzione di callback a un evento del form di input: viene eseguita ogni volta che il contenuto cambia
  // a causa della digitazione di un testo all'interno da parte dell'utente
  $("#search").on('keyup change', function() { // Eventi "rilascio di un pulsante della tastiera" e "cambio del contenuto"
    // Effettuando una ricerca in data-groups è necessario ripulire un po' sia le stringa di ricerca
    // (ignorando per$('#print').click(function() { esempio le maiuscole e altri caratteri non letterali) che quella in cui viene effettuata
    // la ricerca (che è il json di un array di stringhe)
    // per il numero delle card
    /* scriviQuanti();*/

    var val = this.value.toLowerCase().replace(/[^a-z] /g, ""); // Il valore digitato corrente
    $('#grid').shuffle('shuffle', function($el, shuffle) {
      // La funzione viene valutata per ogni elemento della grid:
      // se vera l'elemento viene tenuto, altrimenti viene nascosto
      return $el.data('groups').toLowerCase().indexOf(val) > -1;
    });
    scriviQuanti();
  });

  $("#search").autocomplete({
    source: dataset
  });


};



$(function() {
  // bottoni delle 3  liste

  $('#ingressi').click(function() {
    Pulisci();
    Aziende("./Excel_produttori/campiaperti-richieste-nuovi-ingressi.csv");
    $("header").addClass("ingressi");
  });
  $('#aziende').click(function() {
    Pulisci();
    Aziende("./Excel_produttori/campiaperti-aziende.csv");
    $("header").addClass("aziende");
  });
  $('#scartati').click(function() {
    Pulisci();
    Aziende("./Excel_produttori/campiaperti-scartati.csv");
    $("header").addClass("scartati");
  });

  // decidiamo di caricare per primo i produttori in CA
  Aziende("./Excel_produttori/campiaperti-aziende.csv");
  $("header").addClass("aziende");

  var my = [];

  /* NN LA STIAMO USANDOOOO*/

  $('#print').click(function() {
    my = $("h5");
    console.log("fdsfs");

    var doc = new jsPDF();
    doc.setFontSize(16);
    var i = 0;
    for (i = 0; i < my.length; i++) {
      doc.text(20, 30 + (10 * i), my[i].textContent);
    }

    //doc.setFontSize(16);
    //doc.text(20, 30, 'This is some normal sized text underneath.');

    // Output as Data URI
    doc.save('export_desidera_mercato.pdf');

  });


});


var quanti = 0;

function scriviQuanti() {
  $("#quanti").empty();
  quanti = $(".card.filtered");
  console.log(quanti.length);
  quanti = quanti.length;
  $("#quanti").append(quanti);
};
