465 baris
14 KiB
JavaScript
465 baris
14 KiB
JavaScript
/*
|
|
* 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 " " + 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);
|
|
};
|