LiDa_Search/js/guimanager.js

616 lines
18 KiB
JavaScript

/**
*
*/
$(document).ready(function() {
grammarconditions = 0
sintconditions = 0
filterconditions = 0
var aggettivoJson = {
"filtriaggettivo": {
"Classe": ["1ª", "2ª"],
"Genere": ["Femminile", "Maschile"],
"Numero": ["Singolare", "Plurale"],
"Con oggetto indiretto": ["Con ogg.Indiretto"],
"Tipo": ["Qualificativo", "Indefinito", "Interrogativo", "Esclamativo", "Numerale", "Dimostrativo", "Relativo", "Possessivo", "In locuzione"],
"Grado": ["Comparativo di maggioranza", "Comparativo di minoranza", "Comparativo di uguaglianza", "Superlativo relativo", "Superlativo assoluto"],
"Tipo di Complemento": ["Introdotto da A", "Introdotto da CON", "Introdotto da CONTRO", "Introdotto da DA", "Introdotto da DI", "Introdotto da IN",
"Introdotto da PER", "Introdotto da SU", "Introdotto da TRA", "Introdotto da VERSO", "Introdotto da SOPRA",
"Introdotto da SOTTO", "Introdotto da DINANZI", "Introdotto da prep.", "Oggetto ind.", "Ogg. indi. + compl. con DI", "Ogg. ind. pronom."],
"Tipo di frase": ["Con infinito retto da A", "Con infinito retto da DA", "Con infinito retto da DI", "Con infinito retto da PER",
"Con infinito retto da SE", "Con subordinata all'indic.", "Con subordinata al cong.", "In locuzione imp.+infinito",
"In locuzione imp.+che+indic.", "In locuzione imp.+che+cong.", "In locuzione imp.+se+indic.", "In locuzione imp.+se+cong.",
"In locuzione imp.+come+indic.", "In locuzione imp.+quando+indic.", "In locuzione imp.+perché+cong.", "In locuzione imp.+a+infinito"]
}
}
var pronomeJson = {
"filtripronome": {
"Classe/Persona": ["1ª", "2ª", "3ª"],
"Genere": ["Femminile", "Maschile"],
"Numero": ["Singolare", "Plurale"],
"Tipo": ["Personale", "Riflessivo", "Interrogativo", "Esclamativo", "Dimostrativo", "Relativo", "Possessivo"],
"Forma (Personali/Riflessivi)": ["Libero", "Libero in Composizione", "Proclitico", "Enclitico"],
"Funzione (Personali)": ["Libero - soggetto", "Libero - soggetto impersonale", "Libero - complemento", "Libero - rafforzativo",
"Clitico - accusativo", "Clitico - dativo", "Clitico - partitivo"],
"Tipo (Riflessivi)": ["Proprio", "Lessicalizzato", "Impersonale", "Passivo", "Reciproco"]
}
}
var articoloJson = {
"filtriarticolo": {
"Genere": ["Femminile", "Maschile"],
"Numero": ["Singolare", "Plurale"],
"Tipo": ["Determinativo", "Indeterminativo"]
}
}
var avverbioJson = {
"filtriavverbio": {
"Tipo": ["Al comparativo di maggioranza", "Al comparativo di minoranza",
"Al superlativo assoluto", "Al superlativo relativo",
"In Locuzione", "In Locuzione separato", "Proclitico", "Enclitico"]
}
}
var preposizioneJson = {
"filtripreposizione": {
"Tipo I": ["Propria", "Impropria"],
"Tipo II": ["Semplice", "Articolata", "In locuzione", "In locuzione separata"],
"Sintassi": ["Soggettiva", "Oggettiva", "Dichiarativa", "Completiva obliqua", "Finale",
"Causale", "Concessiva", "Consecutiva", "Temporale", "Modale", "Eccettuativa", "Esclusiva",
"Limitativa", "Comparativa", "Avversativa"],
"Complemento (I)": ["Di stato in luogo", "Di moto a luogo", "Di moto da luogo", "Di moto per luogo",
"Di luogo", "Predicativo del soggetto", "Predicativo dell'oggetto", "Di distanza",
"Di tempo determinato", "Di tempo continuato", "Di tempo", "Di termine", "Di vantaggio",
"Di svantaggio", "Di specificazione", "Di modo", "Di mezzo", "Di compagnia",
"Di unione", "Di allontanamento/separazione", "Di materia"],
"Complemento (II)": ["di limitazione", "di qualità", "di causa", "di agente", "di causa efficiente", "di fine o scopo",
"di paragone", "di argomento", "distributivo", "di sostituzione", "di estensione", "di rapporto",
"di esclusione", "di peso", "di quantità", "di colpa", "di denominazione", "partitivo",
"di abbondanza-privazione", "di origine-provenienza", "concessivo", "di effetto", "di pena",
"simmetrico", "indiretto esperiente", "indiretto dativo", "indiretto oggetto", "indiretto possessore",
"indiretto benefattivo"]
}
}
var congiunzioneJson = {
"filtricongiunzione": {
"Tipo": ["Semplice", "Composta", "Locuzione", "Locuzione separata"],
"Coo./sub": ["coordinativa", "subordinativa"],
"Coord. tipo": ["copulativa", "disgiuntiva", "avversativa", "esplicativa", "conclusiva", "correlativa"],
"Subord. tipo": ["soggettiva", "oggettiva", "dichiarativa", "completiva obliqua", "interrogativa",
"finali", "causali", "concessiva", "consecutiva", "temporale", "modale",
"eccettuativa", "comparativa", "condizionale", "esclusiva", "limitativa"]
}
}
var onomasticacitazioneJson = {
"filtrionomastica": {
"Tipo": ["Nome proprio", "Nome proprio separato", "Titolo"]
},
"filtricitazione": {
"Tipo": ["Latina", "Provenzale", "Francese", "Spagnola", "Ebraica", "Greca"]
}
}
var categorie = {
"pronomevolgare": "filtripronome",
"aggettivovolgare": "filtriaggettivo",
"articolovolgare": "filtriarticolo",
"avverbiovolgare": "filtriavverbio",
"preposizionevolgare": "filtripreposizione",
"congiunzionevolgare": "filtricongiunzione",
"onomasticavolgare": "filtrionomastica",
"citazionevolgare": "filtricitazione"
}
var catGrammsenzaspec = ['all', 'interiezionevolgare']
var subordinazioneJson = {
"subordinazione": {
"livello": ["Qualsiasi livello di subordinazione", "principale", "coordinata a una principale", "subordinata di I grado",
"subordinata di II grado", "subordinata di III grado", "subordinata di IV grado", "subordinata di V grado",
"subordinata di VI grado", "subordinata di VII grado", "coordinata a una subordinata di I grado",
"coordinata a una subordinata di II grado", "coordinata a una subordinata di III grado",
"coordinata a una subordinata di IV grado", "coordinata a una subordinata di V grado", "pseudo-coordinata",
"parentetica", "coordinata a una parentetica"]
}
}
var categorieJson = $.extend({}, pronomeJson, aggettivoJson, articoloJson, avverbioJson, preposizioneJson, congiunzioneJson, onomasticacitazioneJson);
var condizioniFiltro = {}
$('.tabs__menu-item').on('click', function() {
$(this).addClass('bg-white').addClass('red');
$(this).siblings().removeClass('bg-white').removeClass('red');
});
jQuery(document).delegate('a.add-record-sint', 'click', function(e) {
e.preventDefault();
var content = jQuery('#tiposintattico >div'),
size = jQuery('#condizioni >div').length + 1,
element = null,
element = content.clone();
element.attr('id', 'ts-' + size);
element.find('.remove-filter').attr('target', 'ts-' + size);
element.find('.set-filter').attr('targetfilter', 'ts-' + size);
element.appendTo('#condizioni');
element.find('.sn').html(size);
sintconditions = sintconditions + 1
if (size == 1)
jQuery('#grammarbutton').attr('style', "display:block;")
});
/**
SCELTA TIPO SINTATTICO
*/
jQuery(document).delegate('select.synttype', 'change', function(e) {
e.preventDefault();
//alert(($(this).closest('div')).closest('div').attr('id'))
//var pare=$(this).parents()[2];
var sbs = ($(this).closest('div')).siblings()
condizioniFiltro["Tipo Sintattico"] = $(this).val();
sbs.find(".set-filter").attr('style', 'display.block')
})
/** SCELTA FUNZIONE SINTATTICA
*/
jQuery(document).delegate('select.syntfun', 'change', function(e) {
e.preventDefault();
//alert(($(this).closest('div')).closest('div').attr('id'))
//var pare=$(this).parents()[2];
var sbs = ($(this).closest('div')).siblings()
condizioniFiltro["Funzione Sintattica"] = $(this).val();
sbs.find(".set-filter").attr('style', 'display.block')
})
/**
SCELTA CATEGORIA GRAMMATICALE
*/
jQuery(document).delegate('select.catgram', 'change', function(e) {
e.preventDefault();
//alert(($(this).closest('div')).closest('div').attr('id'))
var pare = $(this).parents()[2];
var sbs = ($(this).closest('div')).siblings()
sbs.find(".add-details").attr('style', 'display.block')
sbs.find(".set-filter").attr('style', 'display.block')
//alert(pare.id)
containerid = 'dettaglio_' + pare.id;//$(this).closest('div').attr('id')
sbs.find(".add-details").attr('target', containerid)
sbs.find(".set-filter").attr('target', containerid)
//if ($('#types').find(":selected").val()=='verbovolgare'){
condizioniFiltro["Categoria Grammaticale"] = $(this).val();
if ($(this).val() == 'verbovolgare') {
var content = jQuery('#categoriaverbo >div'),
size = jQuery('#dettaglifiltri').length + 1,
element = null,
element = content.clone();
}
if ($(this).val() == 'sostantivovolgare') {
//alert($('#types').find(":selected").val());
var content = jQuery('#categoriasostantivo >div'),
size = jQuery('#dettaglifiltri').length + 1,
element = null,
element = content.clone();
}
if (Object.keys(categorie).includes($(this).val())) {
var filtro = categorie[$(this).val()]
//var keys = Object.keys(aggettivoJson.filtri);
var keys = Object.keys(categorieJson[filtro])
for (key in keys) {
//alert(aggettivoJson.filtri[keys[key]])
var vals = categorieJson[filtro][keys[key]]
if (vals.length == 2) {
var element = $('<div />');
element.attr('class', ' w-15 pa1 mr2');
var rbfieldset = $('<fieldset />'),
flexdiv1 = $('<div />'),
flexdiv2 = $('<div />'),
input1 = $('<input />'),
input2 = $('<input />'),
label1 = $('<label />'),
label2 = $('<label />');
rbfieldset.attr('id', keys[key]);
rbfieldset.attr('class', 'bn');
flexdiv1.attr('class', 'flex items-center mb2');
flexdiv2.attr('class', 'flex items-center mb2');
input1.attr('class', 'mr2 f6');
input2.attr('class', 'mr2 f6');
input1.attr('type', 'radio');
input2.attr('type', 'radio');
input1.attr('id', vals[0]);
input2.attr('id', vals[1]);
input1.attr('value', vals[0]);
input2.attr('value', vals[1]);
input1.attr('name', 'tra');
input2.attr('name', 'tra');
label1.attr('class', 'lh-copy');
label2.attr('class', 'lh-copy');
label1.attr('for', vals[0]);
label2.attr('for', vals[1]);
label1.append(vals[0]);
label2.append(vals[1]);
input1.appendTo(flexdiv1);
input2.appendTo(flexdiv2);
label1.appendTo(flexdiv1);
label2.appendTo(flexdiv2);
flexdiv1.appendTo(rbfieldset);
flexdiv2.appendTo(rbfieldset);
rbfieldset.appendTo(element);
element.attr('style', 'display:none')
element.appendTo('#dettaglifiltri');
}
}
for (key in keys) {
var vals = categorieJson[filtro][keys[key]]
if (vals.length == 1) {
var element = $('<div />');
element.attr('class', ' w-15 pa1 mr2');
var rbfieldset = $('<fieldset />'),
flexdiv1 = $('<div />'),
input1 = $('<input />'),
label1 = $('<label />');
rbfieldset.attr('id', keys[key]);
rbfieldset.attr('class', 'bn');
flexdiv1.attr('class', 'flex items-center mb2');
input1.attr('class', 'mr2 f6');
input1.attr('type', 'checkbox');
input1.attr('id', vals[0]);
input1.attr('value', vals[0]);
input1.attr('name', 'tra');
label1.attr('class', 'lh-copy');
label1.attr('for', vals[0]);
label1.append(vals[0]);
input1.appendTo(flexdiv1);
label1.appendTo(flexdiv1);
flexdiv1.appendTo(rbfieldset);
rbfieldset.appendTo(element);
element.attr('style', 'display:none')
element.appendTo('#dettaglifiltri');
}
}
for (key in keys) {
var vals = categorieJson[filtro][keys[key]]
if (vals.length > 2) {
var element = $('<div />');
element.attr('class', ' w-15 pa1 mr2');
var select = $('<select id="coniug" class="w-100 db h2 f6 bg-near-white ba b--sliver gray"/>')
select.attr('id', keys[key])
select.attr('title', keys[key])
for (val in vals) {
//alert(vals[val])
var seloption = $('<option />');
seloption.attr('value', vals[val]);
seloption.append(vals[val])
seloption.appendTo(select)
}
select.appendTo(element)
element.attr('style', 'display:none')
element.appendTo('#dettaglifiltri');
}
}
}
if (element === undefined) {
var test = jQuery('#' + containerid)
sbs.find(".add-details").attr('style', 'display.none')
sbs.find(".set-filter").attr('style', 'display.none')
test.remove()
}
else {
element.attr('style', "display: none;")
//element.appendTo('#dettaglifiltri');
var test = jQuery('#' + containerid)
/*if (test.val() !== undefined){
//alert (test)
var flexdivreplace = $('<div />');
flexdivreplace.attr('class', 'flex flex-wrap')
flexdivreplace.attr('id', containerid)
element.appendTo(flexdivreplace)
test.replaceWith(flexdivreplace)
}
else{*/
test.remove()
//<legend class="pa0 f5 f4-ns mb3 black-80">Sostantivo</legend>
//var legend=$('<legend class="pa0 f5 f4-ns mb3 black-80">'+$(this).val()+'</legend>');
//var fset=$('<fieldset class="cf bn ma0 pa0">')
element.appendTo('#dettaglifiltri');
var container = jQuery('#dettaglifiltri');
container.attr('id', containerid);
var divdf = jQuery('#divdettaglifiltri >div'),
detelement = null,
detelement = divdf.clone();
detelement.attr('id', 'dettaglifiltri')
detelement.appendTo("#query")
//}
element.find('.sn').html(size);
}
});
jQuery(document).delegate('input.delete-record', 'click', function(e) {
e.preventDefault();
var didConfirm = confirm("Sei sicuro di voler eliminare la clausola?");
if (didConfirm == true) {
var id = jQuery(this).attr('data-id');
var targetDiv = jQuery(this).attr('targetDiv');
jQuery('#rec-' + id).remove();
if (jQuery('#condizioni >tbody >tr').length == 0)
jQuery('#grammarbutton').attr('style', "display:none;")
//regnerate index number on table
$('#condizioni_body tr').each(function(index) {
$(this).find('span.sn').html(index + 1);
});
return true;
} else {
return false;
}
});
jQuery(document).delegate('a.remove-filter', 'click', function(e) {
e.preventDefault();
var didConfirm = confirm("Sei sicuro di voler eliminare la clausola?");
if (didConfirm == true) {
var targetDiv = jQuery(this).attr('target');
rmel = jQuery('#' + targetDiv)
rmeldetail = jQuery('#' + 'dettaglio_' + targetDiv)
jQuery(rmel).remove();
jQuery(rmeldetail).remove();
return true;
} else {
return false;
}
});
/**
Il Filtro viene "scritto"
*/
jQuery(document).delegate('a.set-filter', 'click', function(e) {
e.preventDefault();
var didConfirm = confirm("Sei sicuro di voler definire il filtro?");
if (didConfirm == true) {
var content = jQuery('#filtro'),
size = jQuery('#filtri >div').length + 1,
element = null,
element = content.clone();
if (size == 1)
filterconditions = 1;
else
filterconditions = filterconditions + 1;
element.attr('id', 'filtro-' + filterconditions);
element.find('.delete-written-filter').attr('target', 'filtro-' + filterconditions);
var keys = Object.keys(condizioniFiltro)
for (key in keys) {
var dlclass = $('<dl class="f6 lh-title mv2" />'),
dtclass = $('<dt class="dib b mainflabel" />'),
ddclass = $('<dd class="dib ml0 gray mainfvalue"/>');
dtclass.append([keys[key]]);
ddclass.append(condizioniFiltro[[keys[key]]]);
dlclass.append(dtclass);
dlclass.append(ddclass);
element.find('.listacondizioni').append(dlclass);
}
//element.find('.listacondizioni').append(dlclass);
element.attr('style', 'display.block');
element.appendTo('#filtri');
if (size > 1) {
element.find('.andorconditions').attr('style', 'display.block');
}
//$('a.remove-filter').trigger('click');
var targetDiv = jQuery(this).attr('targetfilter');
rmel = jQuery('#' + targetDiv)
rmeldetail = jQuery('#' + 'dettaglio_' + targetDiv)
jQuery(rmel).remove();
jQuery(rmeldetail).remove();
condizioniFiltro = {}
return true;
} else {
return false;
}
})
/**
Il Filtro "scritto" viene eliminato
*/
jQuery(document).delegate('a.delete-written-filter', 'click', function(e) {
e.preventDefault();
var didConfirm = confirm("Sei sicuro di voler cancellare il filtro?");
if (didConfirm == true) {
var targetDiv = jQuery(this).attr('target');
rmel = jQuery('#' + targetDiv)
rmeldetail = jQuery('#' + targetDiv)
jQuery(rmel).remove();
jQuery(rmeldetail).remove();
// se c'è un solo filtro, mi assicuro che non sia visibile il dropbox and/or
size = jQuery('#filtri >div').length
//nasconde la condizione logica dal primo della lista dei filtri
if (size > 0) {
var filtriscr = jQuery('#filtri >div');
filtriscr.first().find('.andorconditions').attr('style', 'display:none');
}
return true;
} else {
return false;
}
});
jQuery(document).delegate('a.add-record', 'click', function(e) {
e.preventDefault();
showCategoriaGrammaticale();
});
/**
Il Filtro "scritto" viene editato
*/
jQuery(document).delegate('a.edit-written-filter', 'click', function(e) {
e.preventDefault();
var didConfirm = confirm("Sei sicuro di voler editare il filtro?");
if (didConfirm == true) {
showCategoriaGrammaticale()
}
return true;
/*} else {
return false;
}*/
});
/**
*
* Visualizza Categoria Grammaticale
*/
function showCategoriaGrammaticale() {
$("#types").val("verbovolgare").trigger("change");
// Per Cesare... il valore viene cambiato infatti se aggiungo il filtro è corretto, ma nella dropdown non è visibile
var content = jQuery('#categoriagrammaticale >div'),
size = jQuery('#condizioni >div').length + 1,
element = null,
element = content.clone();
alert("Value: " + $("#types").val());
element.attr('id', 'cg-' + size);
element.find('.remove-filter').attr('target', 'cg-' + size);
element.find('.set-filter').attr('targetfilter', 'cg-' + size);
element.appendTo('#condizioni');
element.find('.sn').html(size);
grammarconditions = grammarconditions + 1
if (size == 1)
jQuery('#grammarbutton').attr('style', "display:block;")
}
jQuery(document).delegate('a.add-details', 'click', function(e) {
e.preventDefault();
var targetDiv = jQuery(this).attr('target');
rmel = jQuery('#' + targetDiv)
var curstyle = rmel.attr('view')
if (curstyle !== undefined && curstyle === 'y') {
rmel.children().attr('style', 'display:none');
rmel.attr('view', 'n')
}
else {
rmel.attr('view', 'y')
rmel.children().attr('style', 'display:block');
}
return true;
});
});