1228 lines
48 KiB
JavaScript
1228 lines
48 KiB
JavaScript
|
/**
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
var getJsonQuery;
|
||
|
|
||
|
$(document).ready(function() {
|
||
|
|
||
|
// Funzioni di gestione del comportamento dei bottoni collapse
|
||
|
$('#collapseLogic').on('hidden.bs.collapse', function (e) {
|
||
|
if (e.target.id == "collapseLogic") {
|
||
|
$("#showLogic").html('<span class="text-muted">Mostra</span>');
|
||
|
$("#collapseAdvanced").collapse('hide');
|
||
|
};
|
||
|
})
|
||
|
|
||
|
$('#collapseLogic').on('shown.bs.collapse', function () {
|
||
|
$("#showLogic").html('<span class="font-weight-bold text-muted">Nascondi</span>');
|
||
|
$("#collapseAdvanced").collapse('show');
|
||
|
})
|
||
|
|
||
|
$('#collapseOptions').on('hidden.bs.collapse', function (e) {
|
||
|
if (e.target.id == "collapseOptions") {
|
||
|
$("#showOptions").html('<span class="text-muted">Opzioni</span>');
|
||
|
};
|
||
|
})
|
||
|
|
||
|
$('#collapseOptions').on('shown.bs.collapse', function () {
|
||
|
$("#showOptions").html('<span class="font-weight-bold text-muted">Opzioni</span>');
|
||
|
})
|
||
|
|
||
|
$('.collapse').on('hide.bs.collapse', function (e) {
|
||
|
if (e.target.id.substr(0,11) == "collapseCla") {
|
||
|
var claIdNum = e.target.id.substr(11);
|
||
|
$("#claCollapse" + claIdNum)[0].removeAttribute("style");
|
||
|
$("#claCollapse" + claIdNum).removeClass( "border-bottom-0" );
|
||
|
$("#claCollapse" + claIdNum).addClass( "border border-lida4" );
|
||
|
e.stopPropagation();
|
||
|
};
|
||
|
})
|
||
|
|
||
|
$('.collapse').on('show.bs.collapse', function (e) {
|
||
|
if (e.target.id.substr(0,11) == "collapseCla") {
|
||
|
var claIdNum = e.target.id.substr(11);
|
||
|
$("#claCollapse" + claIdNum)[0].setAttribute("style", "background-color: #edf9f3 !important;border-bottom-left-radius: 0;border-bottom-right-radius: 0;");
|
||
|
$("#claCollapse" + claIdNum).removeClass( "border border-lida4" );
|
||
|
$("#claCollapse" + claIdNum).addClass( "border-bottom-0" );
|
||
|
e.stopPropagation();
|
||
|
};
|
||
|
})
|
||
|
|
||
|
// Evento: click sullo switch di ricerca avanzata
|
||
|
$('#searchToggle').on('change', function() {
|
||
|
if ($(this).prop('checked')) {
|
||
|
queryJson.QueryAvanzata = "1";
|
||
|
$("#simpleSearchDiv").removeClass( "d-flex" )
|
||
|
$("#simpleSearchDiv").attr('style', "display: none;");
|
||
|
$("#collapseOptions").collapse('hide');
|
||
|
$("#advancedSearchDiv").addClass( "d-flex" )
|
||
|
$("#advancedSearchDiv").attr('style', "display: flex;");
|
||
|
$("#collapseAdvanced").collapse('show');
|
||
|
$("#collapseLogic").collapse('show');
|
||
|
} else {
|
||
|
queryJson.QueryAvanzata = "0";
|
||
|
$("#collapseAdvanced").collapse('hide');
|
||
|
$("#advancedSearchDiv").removeClass( "d-flex" )
|
||
|
$("#advancedSearchDiv").attr('style', "display: none;");
|
||
|
$("#simpleSearchDiv").addClass( "d-flex" )
|
||
|
$("#simpleSearchDiv").attr('style', "display: flex;");
|
||
|
};
|
||
|
});
|
||
|
|
||
|
// Inizializza sortable
|
||
|
$( "#sortable0" ).sortable({
|
||
|
items: "> li",
|
||
|
handle: ".handle"
|
||
|
});
|
||
|
|
||
|
// Inizializza selectable-xX0 e definisce le funzioni
|
||
|
$("#selectable-xX0").selectable({
|
||
|
filter: ".sel-canto",
|
||
|
selected: function(event, ui) {
|
||
|
window.context0[ui.selected.id.substring(0,1)][ui.selected.id.substring(2)] = 1;
|
||
|
var tmpFocusBtn = "#plusBtn" + ui.selected.id.substring(0,1) + "-xX" + tabID;
|
||
|
$(tmpFocusBtn).focus();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Inizializza resizable
|
||
|
$(".menuNavigazione").resizable({
|
||
|
handles: "e",
|
||
|
minWidth: 100,
|
||
|
maxWidth: 350,
|
||
|
stop: function(event, ui) {
|
||
|
setWidthInPercent(ui.element);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$(".menuRicerca").resizable({
|
||
|
handles: "w",
|
||
|
minWidth: 350,
|
||
|
resize: function(event, ui) {
|
||
|
ui.position.left = 0;
|
||
|
$("#displaycanto").width("100%");
|
||
|
},
|
||
|
stop: function(event, ui) {
|
||
|
setWidthInPercent(ui.element);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$(".visCanto").resizable({
|
||
|
handles: "s",
|
||
|
minHeight: 80,
|
||
|
maxHeight: 800,
|
||
|
alsoResize: "#displaycanto",
|
||
|
resize: function(event, ui) {
|
||
|
getDimDiv();
|
||
|
},
|
||
|
stop: function(event, ui) {
|
||
|
ui.element.width("");
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Evento: modifica dell'unitaRicerca'
|
||
|
$("#unitaRicerca").on('change', function() {
|
||
|
queryJson.unitaRicerca = $("#unitaRicerca")[0].options[$("#unitaRicerca")[0].selectedIndex].value;
|
||
|
});
|
||
|
|
||
|
// Evento: modifica di un campo clausole
|
||
|
$("form #lemma_forma,#queryText,#opzioni_testo").on('change', function() {
|
||
|
if ($(this)[0].id == "queryText"){
|
||
|
var orgSelection = $('#lemma_forma option:selected')[0].value
|
||
|
var qText = $(this)[0].value;
|
||
|
if (qText !== null && qText !== '') {qText = ' "' + qText + '"';}
|
||
|
setLemmaForma(qText,orgSelection);
|
||
|
};
|
||
|
refreshClaList();
|
||
|
});
|
||
|
|
||
|
$('#cla-TabContent').on('change', '.monMe', function() {
|
||
|
refreshClaList();
|
||
|
});
|
||
|
|
||
|
// Evento: click sull'icona rimuovi clausola
|
||
|
$('#cla-TabContent').on('click', '.removeCla', function() {
|
||
|
var claListItemId = $(this).closest('li').attr('id');
|
||
|
var claIdNum = claListItemId.substr(6);
|
||
|
claListLen--;
|
||
|
$("#" + claListItemId)[0].remove();
|
||
|
delete queryJson["Clausola" + claIdNum];
|
||
|
delete window["context" + claIdNum];
|
||
|
refreshClaList();
|
||
|
refreshSortables();
|
||
|
});
|
||
|
|
||
|
// Evento: click sull'icona rimuovi condizione
|
||
|
$('#sortable0').on('click', '.removeCond', function() {
|
||
|
$(this).closest('ul').parent().remove();
|
||
|
condListLen--;
|
||
|
refreshClaList();
|
||
|
refreshSortables();
|
||
|
refreshConnectWith();
|
||
|
if (claListLen == 0 && condListLen == 0) {
|
||
|
$('#sortable0').html(emptyClaList);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Evento: click sulla lista di clausole nel dropbox "Aggiungi clausola di tipo:" o "aggiungi condizione logica:"
|
||
|
$('.addCCbtn').on('click', function() {
|
||
|
var addCC = $(this).attr('id');
|
||
|
switch (addCC) {
|
||
|
case "btnAddCla1":
|
||
|
tabID++;
|
||
|
addGramCla("#sortable0",1,tabID,1);
|
||
|
break;
|
||
|
case "btnAddCla2":
|
||
|
tabID++;
|
||
|
addSyntCla("#sortable0",1,tabID,1);
|
||
|
break;
|
||
|
case "btnAddCla3":
|
||
|
tabID++;
|
||
|
addMetaCla("#sortable0",0,tabID,0);
|
||
|
break;
|
||
|
case "btnAddCond":
|
||
|
addLogicCond("#sortable0","OR");
|
||
|
break;
|
||
|
default:
|
||
|
};
|
||
|
refreshClaList();
|
||
|
refreshSortables();
|
||
|
});
|
||
|
|
||
|
// Evento: clausola spostata nella lista
|
||
|
$('#sortable0').sortable({
|
||
|
opacity: 0.6,
|
||
|
cursor: 'move',
|
||
|
update: function() {
|
||
|
refreshClaList();
|
||
|
refreshSortables();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Evento: cambiato il tipo della condizione logica
|
||
|
$('#cla-TabContent').on('change', '.condType', function() {
|
||
|
var condtype = $(this).val();
|
||
|
var condId = $(this).attr('id').substring(12);
|
||
|
if (condtype == "AND") {
|
||
|
$("#cond" + condId).removeClass( "condLI-OR bg-lida11" )
|
||
|
$("#cond" + condId).addClass( "condLI-AND bg-lida10g" )
|
||
|
$(this).removeClass( "bg-lida11" )
|
||
|
$(this).addClass( "bg-lida10g" )
|
||
|
} else {
|
||
|
$("#cond" + condId).removeClass( "condLI-AND bg-lida10g" )
|
||
|
$("#cond" + condId).addClass( "condLI-OR bg-lida11" )
|
||
|
$(this).removeClass( "bg-lida10g" )
|
||
|
$(this).addClass( "bg-lida11" )
|
||
|
};
|
||
|
refreshClaList();
|
||
|
});
|
||
|
|
||
|
// Evento: click sul bottone di edit delle clausole
|
||
|
$('#cla-TabContent').on('click', '.claAct', function() {
|
||
|
var claListItemId = $(this).closest('li').attr('id');
|
||
|
var tabPanelId = "#" + claListItemId.substring(3);
|
||
|
if ($(this).prop('checked')) {
|
||
|
$(tabPanelId).attr("data-claActive", 1);
|
||
|
$(this).closest('li').find('.clatext').fadeTo( "slow", 1 );
|
||
|
} else {
|
||
|
$(tabPanelId).attr("data-claActive", 0);
|
||
|
$(this).closest('li').find('.clatext').fadeTo( "slow", 0.6 );
|
||
|
}
|
||
|
refreshSortables();
|
||
|
});
|
||
|
|
||
|
// Evento: click sull'icona di refresh dei radio button
|
||
|
$('#cla-TabContent').on('click', '.radioReset', function() {
|
||
|
fSet = $(this).siblings('fieldset');
|
||
|
if (fSet.find(":checked").length) {
|
||
|
radioChecked = fSet.find(":checked")[0];
|
||
|
radioChecked.checked = false;
|
||
|
};
|
||
|
refreshClaList();
|
||
|
});
|
||
|
|
||
|
// Evento: click sull'icona di trash del contesto
|
||
|
$('#rigaRicerca').on('click', '.trashClaCont', function() {
|
||
|
var claIdNum = $(this)[0].id.substring(15);
|
||
|
resetContext(claIdNum);
|
||
|
refreshClaList();
|
||
|
});
|
||
|
|
||
|
// Evento: click sull'icona di add del contesto
|
||
|
$('#rigaRicerca').on('click', '.addClaCont', function() {
|
||
|
var claIdNum = $(this).closest('.ui-selectable').attr('id').substr(13);
|
||
|
var selectedCanti = $(this).closest('.card').find('.ui-selected');
|
||
|
if (selectedCanti.length == 0) {
|
||
|
$(this).closest('.card').find('.ui-selectee').each(function() {
|
||
|
$(this).addClass( "ui-selected" );
|
||
|
window["context" + claIdNum][$(this).attr("id").substring(0,1)][$(this).attr("id").substring(2)] = 1;
|
||
|
});
|
||
|
};
|
||
|
parseContext(claIdNum);
|
||
|
hideContextCanti(claIdNum);
|
||
|
if ($(this).closest('.card').find('span:visible').length == 1) {
|
||
|
$(this).closest('.card').find('div .sel-canti-intro').text("Selezionati tutti i canti.");
|
||
|
};
|
||
|
refreshClaList();
|
||
|
});
|
||
|
|
||
|
// Evento: click sull'icona di save local
|
||
|
$('#advancedSearchDiv').on('click', 'ion-icon[name="save-outline"]', function() {
|
||
|
var fileA = document.createElement("a");
|
||
|
fileA.href = window.URL.createObjectURL(new Blob([JSON.stringify(queryJson)], {type: "text/plain;charset=utf-8"}));
|
||
|
fileA.download = "LiDaQuery.txt";
|
||
|
fileA.click();
|
||
|
fileA.remove();
|
||
|
});
|
||
|
|
||
|
// Evento: click sull'icona di load local
|
||
|
$('#advancedSearchDiv').on('click', 'ion-icon[name="folder-open-outline"]', function() {
|
||
|
$('#apriFile').click();
|
||
|
});
|
||
|
|
||
|
$("#apriFile").on('change', function() {
|
||
|
var file = $(this).prop('files')[0];
|
||
|
var reader = new FileReader();
|
||
|
reader.onload = function(data){
|
||
|
queryJson = JSON.parse(data.target.result)
|
||
|
makeUpGui(queryJson);
|
||
|
};
|
||
|
if (file) {reader.readAsText(file);}
|
||
|
});
|
||
|
|
||
|
// Evento: SCELTA CATEGORIA GRAMMATICALE
|
||
|
$('#cla-TabContent').on('change', 'select.catgram', function(e) {
|
||
|
e.preventDefault();
|
||
|
var tabPaneId = ($(this).closest('.tab-pane').attr("id"));
|
||
|
var selectedValue = $(this).val();
|
||
|
addCatgramSubcla(tabPaneId,selectedValue);
|
||
|
refreshClaList();
|
||
|
});
|
||
|
|
||
|
// Evento: Submit form
|
||
|
$("form").submit(function(e){
|
||
|
e.preventDefault();
|
||
|
});
|
||
|
|
||
|
// Evento: click sul bottone di reset semplice
|
||
|
$('#cleanresult').on('click', function() {
|
||
|
resetResult();
|
||
|
resetSimpleGui();
|
||
|
refreshClaList();
|
||
|
});
|
||
|
|
||
|
// Evento: click sul bottone di reset azanzata
|
||
|
$('#cleanresult2').on('click', function() {
|
||
|
resetResult();
|
||
|
resetAdvGui();
|
||
|
refreshClaList();
|
||
|
});
|
||
|
|
||
|
// Variabili JSON per i filtri
|
||
|
var verboJson = {
|
||
|
"filtriverbo": {
|
||
|
"Diatesi": ["Attivo", "Passivo"],
|
||
|
"Transitivita": ["Transitivo", "Intransitivo"],
|
||
|
"Genere": ["Femminile", "Maschile"],
|
||
|
"Numero": ["Singolare", "Plurale"],
|
||
|
"Pers": ["Impersonale"],
|
||
|
"Rifl": ["Riflessivo"],
|
||
|
"Coniugazione": ["Qualsiasi coniugazione", "Prima coniugazione", "Seconda coniugazione", "Terza coniugazione", "Essere coniugazione", "Avere coniugazione"],
|
||
|
"Tempi": ["Qualsiasi tempo verbale", "Indicativo presente", "Indicativo passato prossimo", "Indicativo imperfetto", "Indicativo passato remoto",
|
||
|
"Indicativo trapassato prossimo", "Indicativo trapassato remoto", "Indicativo futuro semplice", "Indicativo futuro anteriore", "Congiuntivo presente",
|
||
|
"Congiuntivo imperfetto", "Congiuntivo passato", "Congiuntivo trapassato", "Condizionale presente", "Condizionale passato", "Imperativo presente",
|
||
|
"Infinito presente", "Infinito passato", "Participio presente", "Participio passato", "Gerundio presente", "Gerundio passato"],
|
||
|
"Persona" : ["Qualsiasi persona", "1ª persona singolare", "2ª persona singolare", "3ª persona singolare", "1ª persona plurale", "2ª persona plurale", "3ª persona plurale"],
|
||
|
"Funzione": ["Tutte le funzioni", "Aggettivo", "Sostantivo maschile", "Sostantivo femminile"],
|
||
|
"Declinazione": ["Tutte le declinazioni", "Prima declinazione", "Seconda declinazione", "Terza declinazione"],
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var sostantivoJson = {
|
||
|
"filtrisostantivo": {
|
||
|
"Numero": ["Singolare", "Plurale"],
|
||
|
"Genere_lemma": ["Lemma femminile", "Lemma maschile"],
|
||
|
"Genere_forma": ["Forma femminile", "Forma maschile"],
|
||
|
"riflpers": ["In locuzione"],
|
||
|
"Declinazione_sostantivo": ["Tutte le declinazioni", "Prima declinazione", "Seconda declinazione", "Terza declinazione"],
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var aggettivoJson = {
|
||
|
"filtriaggettivo": {
|
||
|
"Classe": ["1ª", "2ª"],
|
||
|
"Genere": ["Femminile", "Maschile"],
|
||
|
"Numero": ["Singolare", "Plurale"],
|
||
|
"Con_oggetto_indiretto": ["Con oggetto indiretto"],
|
||
|
"Tipo_aggettivo": ["Qualsiasi tipo aggettivo", "Qualificativo", "Indefinito", "Interrogativo", "Esclamativo", "Numerale", "Dimostrativo", "Relativo", "Possessivo", "In locuzione"],
|
||
|
"Grado": ["Qualsiasi grado", "Comparativo di maggioranza", "Comparativo di minoranza", "Comparativo di uguaglianza", "Superlativo relativo", "Superlativo assoluto"],
|
||
|
"Tipo_di_Complemento": ["Qualsiasi 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": ["Qualsiasi 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": {
|
||
|
"Genere": ["Femminile", "Maschile"],
|
||
|
"Numero": ["Singolare", "Plurale"],
|
||
|
"Classe_Persona": ["Qualsiasi Classe Persona", "1ª", "2ª", "3ª"],
|
||
|
"Tipo": ["Qualsiasi tipo", "Personale", "Riflessivo", "Interrogativo", "Esclamativo", "Dimostrativo", "Relativo", "Possessivo"],
|
||
|
"Forma_Personali_Riflessivi": ["Qualsiasi forma (Personali-Riflessivi)", "Libero", "Libero in Composizione", "Proclitico", "Enclitico"],
|
||
|
"Funzione_Personali": ["Qualsiasi funzione (Personali)", "Libero - soggetto", "Libero - soggetto impersonale", "Libero - complemento", "Libero - rafforzativo",
|
||
|
"Clitico - accusativo", "Clitico - dativo", "Clitico - partitivo"],
|
||
|
"Tipo_Riflessivi": ["Qualsiasi tipo (Riflessivi)", "Proprio", "Lessicalizzato", "Impersonale", "Passivo", "Reciproco"]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var articoloJson = {
|
||
|
"filtriarticolo": {
|
||
|
"Genere": ["Femminile", "Maschile"],
|
||
|
"Numero": ["Singolare", "Plurale"],
|
||
|
"Tipo": ["Determinativo", "Indeterminativo"]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var avverbioJson = {
|
||
|
"filtriavverbio": {
|
||
|
"Tipo": ["Qualsiasi 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_preposizione": ["Qualsiasi tipo preposizione", "Semplice", "Articolata", "In locuzione", "In locuzione separata"],
|
||
|
"Sintassi": ["Qualsiasi sintassi", "Soggettiva", "Oggettiva", "Dichiarativa", "Completiva obliqua", "Finale",
|
||
|
"Causale", "Concessiva", "Consecutiva", "Temporale", "Modale", "Eccettuativa", "Esclusiva",
|
||
|
"Limitativa", "Comparativa", "Avversativa"],
|
||
|
"Complemento_(I)": ["Qualsiasi 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)": ["Qualsiasi 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": {
|
||
|
"Coo_sub": ["Coordinativa", "Subordinativa"],
|
||
|
"Tipo": ["Qualsiasi tipo", "Semplice", "Composta", "Locuzione", "Locuzione separata"],
|
||
|
"Coord_tipo": ["Qualsiasi coord. tipo", "Copulativa", "Disgiuntiva", "Avversativa", "Esplicativa", "Conclusiva", "Correlativa"],
|
||
|
"Subord_tipo": ["Qualsiasi subord. tipo", "Soggettiva", "Oggettiva", "Dichiarativa", "Completiva obliqua", "Interrogativa",
|
||
|
"Finali", "Causali", "Concessiva", "Consecutiva", "Temporale", "Modale",
|
||
|
"Eccettuativa", "Comparativa", "Condizionale", "Esclusiva", "Limitativa"]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var onomasticacitazioneJson = {
|
||
|
"filtrionomastica": {
|
||
|
"Tipo": ["Qualsiasi tipo", "Nome proprio", "Nome proprio separato", "Titolo"]
|
||
|
},
|
||
|
|
||
|
"filtricitazione": {
|
||
|
"Tipo": ["Qualsiasi tipo", "Latina", "Provenzale", "Francese", "Spagnola", "Ebraica", "Greca"]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var categorie = {
|
||
|
"verbovolgare": "filtriverbo",
|
||
|
"sostantivovolgare": "filtrisostantivo",
|
||
|
"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({}, verboJson, sostantivoJson, pronomeJson, aggettivoJson, articoloJson, avverbioJson, preposizioneJson, congiunzioneJson, onomasticacitazioneJson);
|
||
|
|
||
|
|
||
|
// Variabili testuali per compattezza
|
||
|
const iconReset = '<div class="text-right text-lida4 radioReset"><ion-icon name="refresh-circle"></ion-icon></div>';
|
||
|
const iconCloseCond = '<div class="p-0 mr-3 mt-0 text-right text-lida4"><span class="iconClClass removeCond"><ion-icon name="close-circle"></ion-icon></span></div>';
|
||
|
const emptyClaList = '<li id="li-cla0" class="list-group-item align-items-center my-1 ui-state-default ui-state-disabled border text-muted bg-white ui-state-disabled-opacity-06 small">Nessuna clausola aggiunta.</li>';
|
||
|
const defaultCond = '<div id="cla-defaultCond" class="col-12 px-0 pb-1 small font-weight-bold text-muted">Clausole e condizioni in AND di default</div>';
|
||
|
const canticheList = ["Inferno","Purgatorio","Paradiso"];
|
||
|
const cla0JsonText = '{"queryText": "", "lemma_forma": "lemma", "opzioni_testo": "parola", "TipoClausola": "0", "Attiva": "0"}';
|
||
|
const condLIplaceholderText1 = 'Trascina qui almeno 1 clausola o condizione';
|
||
|
const condLIplaceholderText2 = 'Trascina qui almeno 2 clausole o condizioni';
|
||
|
const condLIplaceholderText1d = 'Trascina qui almeno 1 clausola o condizione, oppure attiva le clausole inattive';
|
||
|
const condLIplaceholderText2d = 'Trascina qui almeno 2 clausole o condizioni, oppure attiva le clausole inattive';
|
||
|
const condLIplaceholderPart1 = '<li id="placeholderSort';
|
||
|
const condLIplaceholderPart2 = '" class="mx-0 my-1 p-1 pl-3 list-group-item align-items-center border text-muted small bg-light ui-state-disabled ui-state-disabled-opacity-06">';
|
||
|
|
||
|
// Variabili e costanti funzionali
|
||
|
var tabID = 0;
|
||
|
var claListLen = 0;
|
||
|
var condListLen = 0;
|
||
|
var logicExprString = ``;
|
||
|
var guiLogicString = ``;
|
||
|
const cc0 = new Array(34).fill(0);
|
||
|
const cc1 = new Array(33).fill(0);
|
||
|
const cc2 = new Array(33).fill(0);
|
||
|
const contextEmpty = [cc0,cc1,cc2];
|
||
|
var queryJson = JSON.parse('{"EsprLogica":"", "LogicaGui":"", "QueryAvanzata": "0"}');
|
||
|
queryJson.LiDaVersion = "1.0";
|
||
|
queryJson.unitaRicerca = "verso";
|
||
|
queryJson.Clausola0 = JSON.parse(cla0JsonText);
|
||
|
queryJson.Clausola0.contesto = JSON.stringify(contextEmpty);
|
||
|
window.context0 = JSON.parse(JSON.stringify(contextEmpty));
|
||
|
const jsonReplacer = (key, value) =>
|
||
|
typeof value === 'undefined' ? 0 : value;
|
||
|
|
||
|
// Fine variabili
|
||
|
|
||
|
getJsonQuery = function(){
|
||
|
return queryJson;
|
||
|
}
|
||
|
|
||
|
// Funzione di creazione del tab delle clausole grammaticali
|
||
|
function addGramCla(sortableId,active,tabID,toExpand){
|
||
|
if (active > 0) {
|
||
|
var checkInsert = ' checked="checked"';
|
||
|
} else {
|
||
|
var checkInsert = '';
|
||
|
};
|
||
|
var claText = "Categoria grammaticale: <br>";
|
||
|
addLIitem(sortableId,tabID,claText,checkInsert,toExpand);
|
||
|
var claClone = document.getElementById("tipogrammaticaleN").cloneNode(true);
|
||
|
claClone.setAttribute("id","cla" + tabID);
|
||
|
claClone.setAttribute("data-claActive", active);
|
||
|
claClone.setAttribute("aria-labelledby","cla" + tabID + "-tab");
|
||
|
claClone.setAttribute("style", "background-color: #edf9f3 !important;");
|
||
|
$('#claBody' + tabID).append(claClone);
|
||
|
// se non cambio l'id della select react non rileva l'evento onchange:
|
||
|
$('#cla' + tabID + " #grammtypesN").attr("id","grammtypes" + tabID);
|
||
|
$('#cla' + tabID + " #lemma_formaN").attr("id","lemma_forma" + tabID);
|
||
|
$('#cla' + tabID + " #queryTextN").attr("id","queryText" + tabID);
|
||
|
$('#cla' + tabID + " #opzioni_testoN").attr("id","opzioni_testo" + tabID);
|
||
|
$('#cla' + tabID + " #contextDivN").attr("id","contextDiv" + tabID);
|
||
|
addClaContext(tabID);
|
||
|
}
|
||
|
|
||
|
// Funzione di creazione delle subclausole grammaticali basate sul valore scelto
|
||
|
function addCatgramSubcla(tabPaneId,selectedValue){
|
||
|
var dettagliBox = $("#" + tabPaneId + " .dettaglifiltri");
|
||
|
dettagliBox.html("");
|
||
|
if (Object.keys(categorie).includes(selectedValue)) {
|
||
|
var filtro = categorie[selectedValue]
|
||
|
var keys = Object.keys(categorieJson[filtro])
|
||
|
for (var key in keys) {
|
||
|
var vals = categorieJson[filtro][keys[key]]
|
||
|
switch (vals.length) {
|
||
|
case 2:
|
||
|
var element = $('<div />');
|
||
|
element.attr('class', ' d-flex flex-sm-nowrap pr-2 py-1 mb-1 form-group form-control justify-content-between bg-light');
|
||
|
var rbfieldset = $('<fieldset />');
|
||
|
var flexdiv1 = $('<div />');
|
||
|
var flexdiv2 = $('<div />');
|
||
|
var input1 = $('<input />');
|
||
|
var input2 = $('<input />');
|
||
|
var label1 = $('<label />');
|
||
|
var label2 = $('<label />');
|
||
|
|
||
|
rbfieldset.attr('id', tabPaneId + keys[key].replace(/\s/g, ''));
|
||
|
rbfieldset.attr('class', 'custom-control-inline monMe');
|
||
|
flexdiv1.attr('class', 'custom-control custom-radio custom-control-inline m-0 pb-0');
|
||
|
flexdiv2.attr('class', 'custom-control custom-radio custom-control-inline m-0 pb-0');
|
||
|
input1.attr('class', 'custom-control-input');
|
||
|
input2.attr('class', 'custom-control-input');
|
||
|
input1.attr('type', 'radio');
|
||
|
input2.attr('type', 'radio');
|
||
|
input1.attr('id', tabPaneId + vals[0].replace(/\s/g, ''));
|
||
|
input2.attr('id', tabPaneId + vals[1].replace(/\s/g, ''));
|
||
|
input1.attr('value', vals[0]);
|
||
|
input2.attr('value', vals[1]);
|
||
|
input1.attr('name', tabPaneId + keys[key]);
|
||
|
input2.attr('name', tabPaneId + keys[key]);
|
||
|
label1.attr('class', 'custom-control-label form-control-sm custom-control-inline m-0 pl-1 text-muted');
|
||
|
label2.attr('class', 'custom-control-label form-control-sm custom-control-inline m-0 pl-1 text-muted');
|
||
|
label1.attr('for', tabPaneId + vals[0].replace(/\s/g, ''));
|
||
|
label2.attr('for', tabPaneId + vals[1].replace(/\s/g, ''));
|
||
|
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);
|
||
|
var iconR = $(iconReset);
|
||
|
iconR.appendTo(element);
|
||
|
element.appendTo(dettagliBox);
|
||
|
break;
|
||
|
case 1:
|
||
|
var element = $('<div />');
|
||
|
element.attr('class', ' d-flex flex-sm-nowrap pr-2 py-1 mb-1 form-group form-control bg-light');
|
||
|
var rbfieldset = $('<fieldset />');
|
||
|
flexdiv1 = $('<div />');
|
||
|
input1 = $('<input />');
|
||
|
label1 = $('<label />');
|
||
|
rbfieldset.attr('id', tabPaneId + keys[key].replace(/\s/g, ''));
|
||
|
rbfieldset.attr('class', 'custom-control-inline monMe');
|
||
|
flexdiv1.attr('class', 'custom-control custom-checkbox custom-control-inline');
|
||
|
input1.attr('class', 'custom-control-input');
|
||
|
input1.attr('type', 'checkbox');
|
||
|
input1.attr('id', tabPaneId + vals[0].replace(/\s/g, ''));
|
||
|
input1.attr('value', vals[0]);
|
||
|
input1.attr('name', keys[key]);
|
||
|
label1.attr('class', 'custom-control-label form-control-sm custom-control-inline m-0 pl-1 text-muted');
|
||
|
label1.attr('for', tabPaneId + vals[0].replace(/\s/g, ''));
|
||
|
label1.append(vals[0]);
|
||
|
|
||
|
input1.appendTo(flexdiv1);
|
||
|
label1.appendTo(flexdiv1);
|
||
|
flexdiv1.appendTo(rbfieldset);
|
||
|
rbfieldset.appendTo(element);
|
||
|
element.appendTo(dettagliBox);
|
||
|
break;
|
||
|
default:
|
||
|
var element = $('<div />');
|
||
|
element.attr('class', ' form-group px-0 pb-1 m-0');
|
||
|
var select = $('<select class="form-control custom-select-sm monMe bg-light text-muted border btn-outline-lida4"/>');
|
||
|
select.attr('id', tabPaneId + keys[key].replace(/\s/g, ''));
|
||
|
select.attr('title', keys[key]);
|
||
|
select.attr('name', keys[key]);
|
||
|
for (var val in vals) {
|
||
|
var seloption = $('<option />');
|
||
|
seloption.attr('value', vals[val]);
|
||
|
seloption.append(vals[val]);
|
||
|
seloption.appendTo(select);
|
||
|
}
|
||
|
select.appendTo(element);
|
||
|
element.appendTo(dettagliBox);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (element) {
|
||
|
element.attr('style', "display: block;");
|
||
|
element.appendTo(dettagliBox);
|
||
|
};
|
||
|
}
|
||
|
|
||
|
// Funzione di creazione del tab delle clausole sintattiche
|
||
|
function addSyntCla(sortableId,active,tabID,toExpand){
|
||
|
if (active > 0) {
|
||
|
var checkInsert = ' checked="checked"';
|
||
|
} else {
|
||
|
var checkInsert = '';
|
||
|
};
|
||
|
var claText = "Tipo sintattico: <br>";
|
||
|
addLIitem(sortableId,tabID,claText,checkInsert,toExpand);
|
||
|
var claClone = document.getElementById("tiposintatticoN").cloneNode(true);
|
||
|
claClone.setAttribute("id","cla" + tabID);
|
||
|
claClone.setAttribute("data-claActive",active);
|
||
|
claClone.setAttribute("aria-labelledby","cla" + tabID + "-tab");
|
||
|
claClone.setAttribute("style", "background-color: #edf9f3 !important;");
|
||
|
$('#claBody' + tabID).append(claClone);
|
||
|
$('#cla' + tabID + " #lemma_formaN").attr("id","lemma_forma" + tabID);
|
||
|
$('#cla' + tabID + " #queryTextN").attr("id","queryText" + tabID);
|
||
|
$('#cla' + tabID + " #opzioni_testoN").attr("id","opzioni_testo" + tabID);
|
||
|
$('#cla' + tabID + " #contextDivN").attr("id","contextDiv" + tabID);
|
||
|
addClaContext(tabID);
|
||
|
}
|
||
|
|
||
|
// Funzione di creazione del tab delle clausole metafore
|
||
|
function addMetaCla(sortableId,active,tabID,toExpand){
|
||
|
var checkInsert = ' disabled';
|
||
|
//if (active > 0) {
|
||
|
// var checkInsert = '" checked="checked"';
|
||
|
//} else {
|
||
|
// var checkInsert = '"';
|
||
|
//};
|
||
|
var claText = "Clausola Metafore - non ancora implementata";
|
||
|
addLIitem(sortableId,tabID,claText,checkInsert,toExpand);
|
||
|
var claClone = document.getElementById("tipometaforaN").cloneNode(true);
|
||
|
claClone.setAttribute("id","cla" + tabID);
|
||
|
claClone.setAttribute("data-claActive",active);
|
||
|
claClone.setAttribute("aria-labelledby","cla" + tabID + "-tab");
|
||
|
claClone.setAttribute("style", "background-color: #edf9f3 !important;");
|
||
|
$('#claBody' + tabID).append(claClone);
|
||
|
}
|
||
|
|
||
|
// Funzione di creazione della parte di definizione del contesto delle clausole
|
||
|
function addClaContext(tabID){
|
||
|
var contClone = document.getElementById("contextTable-xX0").cloneNode(true);
|
||
|
contClone.setAttribute("style", "background-color: #edf9f3 !important;");
|
||
|
contClone.setAttribute("class","row no-gutters px-2 pt-0 pb-2 border-top border-lida4");
|
||
|
contClone = contClone.outerHTML.replace(/xX0/g, "xX" + tabID)
|
||
|
$("#contextDiv" + tabID).append($(contClone)[0]);
|
||
|
resetContext(tabID);
|
||
|
$("#selectable-xX" + tabID).selectable({
|
||
|
filter: ".sel-canto",
|
||
|
selected: function(event, ui) {
|
||
|
window["context" + tabID][ui.selected.id.substring(0,1)][ui.selected.id.substring(2)] = 1;
|
||
|
var tmpFocusBtn = "#plusBtn" + ui.selected.id.substring(0,1) + "-xX" + tabID;
|
||
|
$(tmpFocusBtn).focus();
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
// Funzione di creazione del LI delle condizioni logiche
|
||
|
function addLogicCond(sortableId,condtype){
|
||
|
condListLen++;
|
||
|
var cloneLI = document.getElementById("condxX4Xx").cloneNode(true);
|
||
|
cloneLI.removeAttribute("style");
|
||
|
cloneLI = cloneLI.outerHTML.replace(/xX4Xx/g, condListLen)
|
||
|
cloneLI = cloneLI.replace(/xX5Xx/g, condtype)
|
||
|
if (condtype == "AND") {
|
||
|
cloneLI = cloneLI.replace(/xX6Xx/g, "lida10g")
|
||
|
} else {
|
||
|
cloneLI = cloneLI.replace(/xX6Xx/g, "lida11")
|
||
|
}
|
||
|
if ($("#li-cla0")[0]) {
|
||
|
$("#li-cla0")[0].remove();
|
||
|
};
|
||
|
$(sortableId).append($(cloneLI)[0]);
|
||
|
$("#andOrSelect-" + condListLen).val(condtype);
|
||
|
$("#sortable" + condListLen).sortable();
|
||
|
$("#sortable" + condListLen).sortable( "option", "appendTo", document.body );
|
||
|
$("#sortable" + condListLen).sortable({
|
||
|
items: "> li",
|
||
|
handle: ".handle",
|
||
|
opacity: 0.6,
|
||
|
cursor: 'move',
|
||
|
update: function() {refreshSortables();}
|
||
|
});
|
||
|
refreshConnectWith();
|
||
|
}
|
||
|
|
||
|
// Funzione di creazione del LI di una clausola nella lista sortable
|
||
|
function addLIitem(sortableId,tabID,claText,checkInsert,toExpand){
|
||
|
claListLen++;
|
||
|
var cloneLI = document.getElementById("li-claxX1Xx").cloneNode(true);
|
||
|
cloneLI.setAttribute("style", "opacity: 0.1;");
|
||
|
cloneLI = cloneLI.outerHTML.replace(/xX1Xx/g, tabID)
|
||
|
cloneLI = cloneLI.replace(/xX2Xx/g, claText)
|
||
|
cloneLI = cloneLI.replace(/xX3Xx"/g, tabID + '" ' + checkInsert)
|
||
|
$(sortableId).append($(cloneLI)[0]);
|
||
|
if (toExpand == 1){
|
||
|
$("#claCollapse" + tabID).focus();
|
||
|
$("#claCollapse" + tabID).trigger("click");
|
||
|
}
|
||
|
$("#li-cla" + tabID).fadeTo(1000,1);
|
||
|
};
|
||
|
|
||
|
// Funzione di refresh della lista clausole nella tab principale e del json della query
|
||
|
function refreshClaList(){
|
||
|
var l_f = $("form #lemma_forma")[0].options[$("form #lemma_forma")[0].selectedIndex].value;
|
||
|
var qText = $("form #queryText")[0].value;
|
||
|
var optText = $("form #opzioni_testo")[0].value;
|
||
|
if (qText == "") { //disattivo clausola 0 se il testo e' vuoto
|
||
|
var claActive = 0
|
||
|
} else {
|
||
|
var claActive = 1
|
||
|
};
|
||
|
queryJson.Clausola0 = JSON.parse('{"queryText": "' + qText + '", "lemma_forma": "' + l_f + '", "opzioni_testo": "' + optText + '", "TipoClausola": "0", "Attiva": "' + claActive + '"}');
|
||
|
queryJson.Clausola0.contesto = JSON.stringify(window.context0);
|
||
|
queryJson.unitaRicerca = $("#unitaRicerca")[0].options[$("#unitaRicerca")[0].selectedIndex].value;
|
||
|
var tabsContent = $("#sortable0").find(".claLI");
|
||
|
if ($(tabsContent).length) {
|
||
|
if ($("#li-cla0")[0]) {
|
||
|
$("#li-cla0")[0].remove();
|
||
|
};
|
||
|
$(tabsContent).each(function(){
|
||
|
var claIdNum = $(this).attr('id').substr(6);
|
||
|
updateClaListItem(claIdNum, "#sortable0");
|
||
|
});
|
||
|
} else {
|
||
|
if (claListLen == 0 && condListLen == 0) {
|
||
|
$('#sortable0').html(emptyClaList);
|
||
|
queryJson.EsprLogica = "";
|
||
|
queryJson.LogicaGui = "";
|
||
|
}
|
||
|
tabID = 0;
|
||
|
};
|
||
|
if ($('#sortable0').children("li").length <= 1) {
|
||
|
$("#cla-defaultCond").remove();
|
||
|
} else {
|
||
|
if ($('#cla-defaultCond').length == 0) {
|
||
|
$("#cla-list-row").prepend($(defaultCond));
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
// Funzione di creazione del LI nella lista delle clausole nel tab principale, aggiunta della clausola nel JSON
|
||
|
function updateClaListItem(claIdNum, sortableId){
|
||
|
var claText = '';
|
||
|
var termText = '';
|
||
|
var checkInsert = '';
|
||
|
var claId = "cla" + claIdNum;
|
||
|
var claListItemId = "li-cla" + claIdNum;
|
||
|
var claType = $("#" + claId).attr('data-claType');
|
||
|
var claActive = $("#" + claId).attr('data-claActive');
|
||
|
if (claActive > 0) {
|
||
|
checkInsert = ' checked="checked"';
|
||
|
};
|
||
|
switch (claType) {
|
||
|
case "Grammaticale":
|
||
|
var l_f = $("form #lemma_forma" + claIdNum)[0].options[$("form #lemma_forma" + claIdNum)[0].selectedIndex].value;
|
||
|
var l_f_t = $("form #lemma_forma" + claIdNum)[0].options[$("form #lemma_forma" + claIdNum)[0].selectedIndex].text;
|
||
|
var qText = $("form #queryText" + claIdNum)[0].value;
|
||
|
var optText = $("form #opzioni_testo" + claIdNum)[0].value;
|
||
|
var optText_t = $("form #opzioni_testo" + claIdNum)[0].options[$("form #opzioni_testo" + claIdNum)[0].selectedIndex].text;
|
||
|
if (qText != "") {
|
||
|
termText = l_f_t + ' <span class="text-dark font-weight-bold">' + qText + '</span> ' + optText_t + '.<br>';
|
||
|
};
|
||
|
var jsonTextToParse = '{"queryText": "' + qText + '", "lemma_forma": "' + l_f + '", "opzioni_testo": "' + optText + '", "TipoClausola": "' + claType + '", "Attiva": "' + claActive + '"';
|
||
|
var gramSelect = $("#" + claId).find(".catgram");
|
||
|
var contextText = $("#contextText-xX" + claIdNum).text();
|
||
|
claText = termText + "Categoria grammaticale: " + gramSelect[0].options[gramSelect[0].selectedIndex].text;
|
||
|
jsonTextToParse = jsonTextToParse + ', "' + gramSelect.attr('name') + '": "' + gramSelect[0].options[gramSelect[0].selectedIndex].value + '"';
|
||
|
var claSubParList = $("#" + claId).children(".dettaglifiltri").find("select, fieldset");
|
||
|
claSubParList.each(function(){
|
||
|
var claSubParType = $(this)[0].type;
|
||
|
if (claSubParType == "fieldset" && $(this).find(":checked").length) {
|
||
|
var claSubParName = $(this).find(":checked")[0].name;
|
||
|
if (claSubParName.startsWith(claId)) {
|
||
|
claSubParName = claSubParName.replace(claId,'');
|
||
|
}
|
||
|
claText = claText + "; " + $(this).find(":checked")[0].defaultValue;
|
||
|
jsonTextToParse = jsonTextToParse + ', "' + claSubParName + '": "' + $(this).find(":checked")[0].value + '"';
|
||
|
};
|
||
|
if (claSubParType == "select-one" && $(this)[0].selectedIndex != 0) {
|
||
|
claText = claText + "; " + $(this)[0].options[$(this)[0].selectedIndex].text;
|
||
|
jsonTextToParse = jsonTextToParse + ', "' + $(this)[0].name + '": "' + $(this)[0].options[$(this)[0].selectedIndex].value + '"';
|
||
|
};
|
||
|
});
|
||
|
claText = claText + '.<br>Contesto: ' + contextText;
|
||
|
break;
|
||
|
case "Sintattico":
|
||
|
var l_f = $("form #lemma_forma" + claIdNum)[0].options[$("form #lemma_forma" + claIdNum)[0].selectedIndex].value;
|
||
|
var l_f_t = $("form #lemma_forma" + claIdNum)[0].options[$("form #lemma_forma" + claIdNum)[0].selectedIndex].text;
|
||
|
var qText = $("form #queryText" + claIdNum)[0].value;
|
||
|
var optText = $("form #opzioni_testo" + claIdNum)[0].value;
|
||
|
var optText_t = $("form #opzioni_testo" + claIdNum)[0].options[$("form #opzioni_testo" + claIdNum)[0].selectedIndex].text;
|
||
|
if (qText != "") {
|
||
|
termText = l_f_t + ' <span class="text-dark font-weight-bold">' + qText + '</span> ' + optText_t + '.<br>';
|
||
|
};
|
||
|
var jsonTextToParse = '{"queryText": "' + qText + '", "lemma_forma": "' + l_f + '", "opzioni_testo": "' + optText + '", "TipoClausola": "' + claType + '", "Attiva": "' + claActive + '"';
|
||
|
var syntSelect = $("#" + claId).find("#synttypes");
|
||
|
var funcSelect = $("#" + claId).find("#syntfunc");
|
||
|
var contextText = $("#contextText-xX" + claIdNum).text();
|
||
|
claText = termText + "Tipo sintattico: " + syntSelect[0].options[syntSelect[0].selectedIndex].text + ';<br>Livello di subordinazione: ' + funcSelect[0].options[funcSelect[0].selectedIndex].text + '.<br>Contesto: ' + contextText;
|
||
|
jsonTextToParse = jsonTextToParse + ', "' + syntSelect.attr('name') + '": "' + syntSelect[0].options[syntSelect[0].selectedIndex].value + '", "' + funcSelect.attr('name') + '": "' + funcSelect[0].options[funcSelect[0].selectedIndex].value + '"';
|
||
|
break;
|
||
|
default:
|
||
|
claText = $("#" + claListItemId + " .clatext").text();
|
||
|
checkInsert = ' disabled';
|
||
|
var jsonTextToParse = '{"queryText": "", "lemma_forma": "", "opzioni_testo": "", "TipoClausola": "' + claType + '", "Attiva": "' + claActive + '"';
|
||
|
};
|
||
|
if ($("#" + claListItemId)[0]) {
|
||
|
$("#" + claListItemId + " .clatext").replaceWith('<span class="small clatext">' + claText + '</span>');
|
||
|
} else {
|
||
|
addLIitem(sortableId,claIdNum,claText,checkInsert,0);
|
||
|
};
|
||
|
queryJson["Clausola" + claIdNum] = JSON.parse(jsonTextToParse + '}');
|
||
|
queryJson["Clausola" + claIdNum].contesto = JSON.stringify(window["context" + claIdNum]);
|
||
|
};
|
||
|
|
||
|
// Funzione di refresh dei placeholders e attivazione/disattivazione bottoni nelle liste sortable
|
||
|
function refreshSortables(){
|
||
|
$("#sortable0").children(".claLI").each(function() {
|
||
|
if ($(this).find("input")[0].checked){
|
||
|
$(this).find('.clatext').css({ opacity: 1 });
|
||
|
};
|
||
|
if ($(this).find("input")[0].checked == false){
|
||
|
$(this).find('.clatext').css({ opacity: 0.6 });
|
||
|
};
|
||
|
});
|
||
|
$("#cla-TabContent .ui-sortable:not(:first)").each(function() {
|
||
|
var sortableID = $(this)[0].id;
|
||
|
var placeholderID = "#placeholderSort" + sortableID.slice(-1);
|
||
|
var iconSpan = $(this).find(".iconClClass")[0];
|
||
|
var iconDiv = $(iconSpan).parent()[0];
|
||
|
var activeUL = $(this).children("li").children("ul").length;
|
||
|
var activeLI = 0;
|
||
|
var inactiveLI = 0;
|
||
|
var condLIplaceholder = "";
|
||
|
$(this).children("li .claLI").each(function() {
|
||
|
if ($(this).find("input")[0].checked){
|
||
|
activeLI++;
|
||
|
$(this).find('.clatext').css({ opacity: 1 });
|
||
|
};
|
||
|
if ($(this).find("input")[0].checked == false){
|
||
|
inactiveLI++;
|
||
|
$(this).find('.clatext').css({ opacity: 0.6 });
|
||
|
};
|
||
|
});
|
||
|
switch (activeLI + activeUL) {
|
||
|
case 0:
|
||
|
if ($(placeholderID).length) {
|
||
|
if (inactiveLI > 0){
|
||
|
$(placeholderID).text(condLIplaceholderText2d);
|
||
|
} else {
|
||
|
$(placeholderID).text(condLIplaceholderText2);
|
||
|
};
|
||
|
} else {
|
||
|
if (inactiveLI > 0){
|
||
|
condLIplaceholder = condLIplaceholderPart1 + sortableID.slice(-1) + condLIplaceholderPart2 + condLIplaceholderText2d + '</li>';
|
||
|
} else {
|
||
|
condLIplaceholder = condLIplaceholderPart1 + sortableID.slice(-1) + condLIplaceholderPart2 + condLIplaceholderText2 + '</li>';
|
||
|
}
|
||
|
$("#" + sortableID).append(condLIplaceholder);
|
||
|
};
|
||
|
if (inactiveLI == 0){
|
||
|
$(iconSpan).attr("class","iconClClass removeCond");
|
||
|
$(iconDiv).attr("class","p-0 mr-3 mt-0 text-right text-lida4");
|
||
|
};
|
||
|
break;
|
||
|
case 1:
|
||
|
if ($(placeholderID).length) {
|
||
|
if (inactiveLI > 0){
|
||
|
$(placeholderID).text(condLIplaceholderText1d);
|
||
|
} else {
|
||
|
$(placeholderID).text(condLIplaceholderText1);
|
||
|
};
|
||
|
} else {
|
||
|
if (inactiveLI > 0){
|
||
|
condLIplaceholder = condLIplaceholderPart1 + sortableID.slice(-1) + condLIplaceholderPart2 + condLIplaceholderText1d + '</li>';
|
||
|
} else {
|
||
|
condLIplaceholder = condLIplaceholderPart1 + sortableID.slice(-1) + condLIplaceholderPart2 + condLIplaceholderText1 + '</li>';
|
||
|
}
|
||
|
$("#" + sortableID).append(condLIplaceholder);
|
||
|
};
|
||
|
$(iconSpan).attr("class","iconClClass NOremoveCond");
|
||
|
$(iconDiv).attr("class","p-0 mr-3 mt-1 text-right text-muted");
|
||
|
break;
|
||
|
case 2:
|
||
|
if ($(placeholderID).length) {
|
||
|
$(placeholderID).remove();
|
||
|
};
|
||
|
$(iconSpan).attr("class","iconClClass NOremoveCond");
|
||
|
$(iconDiv).attr("class","p-0 mr-3 mt-1 text-right text-muted");
|
||
|
break;
|
||
|
default:
|
||
|
if ($(placeholderID).length) {
|
||
|
$(placeholderID).remove();
|
||
|
};
|
||
|
};
|
||
|
});
|
||
|
logicExprString = parseCond("#sortable0", "AND", 0);
|
||
|
guiLogicString = parseCond("#sortable0", "AND", 1);
|
||
|
queryJson.EsprLogica = logicExprString.split(' ');
|
||
|
queryJson.LogicaGui = guiLogicString.split(' ');
|
||
|
};
|
||
|
|
||
|
// Funzione di refresh dei collegamenti tra elementi sortable
|
||
|
function refreshConnectWith(){
|
||
|
for (var i=0; i <= condListLen; i++) {
|
||
|
var cw = "";
|
||
|
for (var j=0; j <= condListLen; j++) {
|
||
|
if (i != j) {
|
||
|
cw = cw + "#sortable" + j + ", ";
|
||
|
};
|
||
|
$( "#sortable" + i ).sortable( "option", "connectWith", cw.slice(0, -2) );
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
// Funzione usata da resizable
|
||
|
function setWidthInPercent(element) {
|
||
|
var percentageWidth = (element.width() / element.parent().width()) * 100;
|
||
|
element.width(percentageWidth + '%');
|
||
|
};
|
||
|
|
||
|
|
||
|
// Funzione di parsing delle clausole e delle condizioni logiche
|
||
|
function parseCond(sortableList, condType, forGui){
|
||
|
var condText = "";
|
||
|
var items = $(sortableList).children("li");
|
||
|
var itemsText = [];
|
||
|
$(items).each(function() {
|
||
|
if ($(this).hasClass("condLI-AND")) {
|
||
|
var andID = "#" + $(this).children("ul").attr("id");
|
||
|
var andText = parseCond(andID, "AND", forGui);
|
||
|
if (andText.length){
|
||
|
itemsText.push(andText);
|
||
|
};
|
||
|
};
|
||
|
if ($(this).hasClass("condLI-OR")) {
|
||
|
var orID = "#" + $(this).children("ul").attr("id");
|
||
|
var orText = parseCond(orID, "OR", forGui);
|
||
|
if (orText.length){
|
||
|
itemsText.push(orText);
|
||
|
};
|
||
|
};
|
||
|
if ($(this).hasClass("claLI")) {
|
||
|
var claNum = "Clausola" + $(this)[0].id.substr(6);
|
||
|
if (forGui || ($(this).find("input")[0].checked == true)){
|
||
|
itemsText.push(claNum);
|
||
|
};
|
||
|
};
|
||
|
});
|
||
|
var iTlen = itemsText.length;
|
||
|
switch (iTlen) {
|
||
|
case 0:
|
||
|
break;
|
||
|
case 1:
|
||
|
if (forGui) {
|
||
|
condText = "( " + condType + " " + itemsText[0] + " )";
|
||
|
} else {
|
||
|
condText += itemsText[0];
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
condText = "( " + condType + " ";
|
||
|
for (let i = 0; i < iTlen; i++) {
|
||
|
condText += itemsText[i] + " ";
|
||
|
}
|
||
|
condText += ")";
|
||
|
};
|
||
|
return condText;
|
||
|
};
|
||
|
|
||
|
function hideContextCanti(claIdNum) {
|
||
|
$('#selectable-xX' + claIdNum + " .ui-selected").each(function() {
|
||
|
$(this).attr('style', "display: none;");
|
||
|
$(this).removeClass( "ui-selected" )
|
||
|
});
|
||
|
};
|
||
|
|
||
|
function makeUpGui(queryJson) {
|
||
|
// 1. verifica json legit --> TO DO
|
||
|
// -------------------
|
||
|
// Pulizia ricerca avanzata:
|
||
|
resetAdvGui();
|
||
|
// Imposta checkbox: .attr("checked", true)
|
||
|
if (queryJson["QueryAvanzata"] == 1) {
|
||
|
$("#cla-Advanced").attr('style', "display: block;");
|
||
|
$("#searchToggle").prop("checked", true);
|
||
|
} else {
|
||
|
$("#cla-Advanced").attr('style', "display: none;");
|
||
|
$("#searchToggle").prop("checked", false);
|
||
|
};
|
||
|
// Rigenerazione Clausola0:
|
||
|
if (queryJson["Clausola0"].Attiva) {
|
||
|
$("#queryText").val(queryJson["Clausola0"].queryText);
|
||
|
$("#opzioni_testo").val(queryJson["Clausola0"].opzioni_testo);
|
||
|
var qText = queryJson["Clausola0"].queryText;
|
||
|
if (qText !== null && qText !== '') {qText = ' "' + qText + '"';}
|
||
|
setLemmaForma(qText,queryJson["Clausola0"].lemma_forma);
|
||
|
resetContext(0);
|
||
|
window.context0 = JSON.parse(queryJson.Clausola0.contesto);
|
||
|
parseContext(0);
|
||
|
};
|
||
|
$("#unitaRicerca").val(queryJson.unitaRicerca);
|
||
|
// Generazione lista clausole e condizioni con elementi padre:
|
||
|
guiLogicString = queryJson.LogicaGui;
|
||
|
var clau2Make = "";
|
||
|
var claParent = []; // array di coppie [elemento, elemento padre]
|
||
|
var treeLevel = []; // pila di elementi padre
|
||
|
var condNum = 0;
|
||
|
for (var i=0; i < guiLogicString.length; i++) {
|
||
|
switch (guiLogicString[i]) {
|
||
|
case "(":
|
||
|
break;
|
||
|
case ")":
|
||
|
treeLevel.pop();
|
||
|
break;
|
||
|
case "OR":
|
||
|
claParent.push([guiLogicString[i], treeLevel[treeLevel.length - 1]]);
|
||
|
treeLevel.push("#sortable" + ++condNum);
|
||
|
break;
|
||
|
case "AND":
|
||
|
if (i > 1) {
|
||
|
claParent.push([guiLogicString[i], treeLevel[treeLevel.length - 1]]);
|
||
|
treeLevel.push("#sortable" + ++condNum);
|
||
|
} else {
|
||
|
treeLevel.push("#sortable0");
|
||
|
};
|
||
|
break;
|
||
|
default:
|
||
|
claParent.push([guiLogicString[i].replace("Clausola", ""), treeLevel[treeLevel.length - 1]]);
|
||
|
};
|
||
|
};
|
||
|
$(claParent).each(function(){
|
||
|
var itm = $(this)[0]
|
||
|
if ($(this)[0] == "OR" || $(this)[0] == "AND") {
|
||
|
addLogicCond($(this)[1],$(this)[0]);
|
||
|
}
|
||
|
if (itm != "OR" && itm != "AND") {
|
||
|
clau2Make = queryJson["Clausola" + itm].TipoClausola;
|
||
|
active = queryJson["Clausola" + itm].Attiva
|
||
|
tabID++;
|
||
|
switch (clau2Make) {
|
||
|
case "Grammaticale":
|
||
|
selectedValue = queryJson["Clausola" + itm].typeGramm0;
|
||
|
addGramCla($(this)[1],active,tabID,0);
|
||
|
$("#lemma_forma" + tabID).val(queryJson["Clausola" + itm].lemma_forma);
|
||
|
$("#queryText" + tabID).val(queryJson["Clausola" + itm].queryText);
|
||
|
$("#opzioni_testo" + tabID).val(queryJson["Clausola" + itm].opzioni_testo);
|
||
|
if (selectedValue != "all") {
|
||
|
$("#grammtypes" + tabID).val(selectedValue);
|
||
|
addCatgramSubcla("cla" + tabID, selectedValue);
|
||
|
var ks = Object.keys(queryJson["Clausola" + itm]);
|
||
|
for (var j = 6; j < ks.length - 1; j++) {
|
||
|
var melID = "cla" + tabID + ks[j];
|
||
|
var melement = document.getElementById(melID);
|
||
|
switch (melement.type) {
|
||
|
case "fieldset":
|
||
|
var sval = queryJson["Clausola" + itm][ks[j]]
|
||
|
$("#cla" + tabID + sval.replace(/\s/g, '')).attr("checked", true);
|
||
|
break;
|
||
|
case "select-one":
|
||
|
melement.value = ([queryJson["Clausola" + itm][ks[j]]])
|
||
|
break;
|
||
|
default:
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
window["context" + tabID] = JSON.parse(queryJson["Clausola" + itm].contesto);
|
||
|
parseContext(tabID);
|
||
|
break;
|
||
|
case "Sintattico":
|
||
|
addSyntCla($(this)[1],active,tabID,0);
|
||
|
$("#lemma_forma" + tabID).val(queryJson["Clausola" + itm].lemma_forma);
|
||
|
$("#queryText" + tabID).val(queryJson["Clausola" + itm].queryText);
|
||
|
$("#opzioni_testo" + tabID).val(queryJson["Clausola" + itm].opzioni_testo);
|
||
|
if (queryJson["Clausola" + itm].typeSyntax0 != ".+") {
|
||
|
$("#cla" + tabID + " #synttypes").val(queryJson["Clausola" + itm].typeSyntax0);
|
||
|
}
|
||
|
if (queryJson["Clausola" + itm].functionSyntax != ".+") {
|
||
|
$("#cla" + tabID + " #syntfunc").val(queryJson["Clausola" + itm].functionSyntax);
|
||
|
}
|
||
|
window["context" + tabID] = JSON.parse(queryJson["Clausola" + itm].contesto);
|
||
|
parseContext(tabID);
|
||
|
break;
|
||
|
case "Metafora":
|
||
|
addMetaCla($(this)[1],active,tabID,0);
|
||
|
break;
|
||
|
default:
|
||
|
};
|
||
|
};
|
||
|
});
|
||
|
refreshClaList();
|
||
|
refreshSortables();
|
||
|
};
|
||
|
|
||
|
function resetSimpleGui() {
|
||
|
$('#queryText').val("");
|
||
|
setLemmaForma("","forma");
|
||
|
$('#opzioni_testo').val("parola");
|
||
|
resetContext(0);
|
||
|
};
|
||
|
|
||
|
function setLemmaForma(qText,newSelection) {
|
||
|
var newOptions = {['La forma' + qText]: 'forma', ['Il lemma' + qText]: 'lemma', ['Il testo' + qText]: 'testo'};
|
||
|
$("#lemma_forma").empty();
|
||
|
$.each(newOptions, function(key,value) {
|
||
|
$("#lemma_forma").append($("<option></option>").attr("value", value).text(key));
|
||
|
});
|
||
|
$("#lemma_forma").val(newSelection);
|
||
|
};
|
||
|
|
||
|
function resetContext(claIdNum) {
|
||
|
$('#selectable-xX' + claIdNum + " .ui-selectee").each(function() {
|
||
|
$(this).attr('style', "line-height: 1.2em");
|
||
|
});
|
||
|
$('#selectable-xX' + claIdNum + " .ui-selected").removeClass( "ui-selected" )
|
||
|
$('#selectable-xX' + claIdNum + ' .sel-canti-intro').each(function() {
|
||
|
$(this).text("Seleziona i canti:")
|
||
|
});;
|
||
|
$("#contextText-xX" + claIdNum).html("Tutta l'opera");
|
||
|
window["context" + claIdNum] = JSON.parse(JSON.stringify(contextEmpty));
|
||
|
$('#selectable-xX' + claIdNum + " .show").removeClass("show");
|
||
|
};
|
||
|
|
||
|
function resetAdvGui() {
|
||
|
var tabsContent=$("#cla-TabContent").find(".tab-pane:not(:first)");
|
||
|
if ($(tabsContent).length) {
|
||
|
var claIdNum = '';
|
||
|
$(tabsContent).each(function(){
|
||
|
claIdNum = $(this)[0].id.substring(3);
|
||
|
delete window["context" + claIdNum];
|
||
|
$(this).remove();
|
||
|
});
|
||
|
};
|
||
|
claListLen = 0;
|
||
|
condListLen = 0;
|
||
|
tabID = 0;
|
||
|
$('#sortable0').html(emptyClaList);
|
||
|
};
|
||
|
|
||
|
function parseContext(claIdNum) {
|
||
|
var context = window["context" + claIdNum];
|
||
|
var contextStringParts = ["","",""];
|
||
|
var contextString = [];
|
||
|
var rangeHolderS = 0;
|
||
|
var rangeHolderE = -1;
|
||
|
var lastElem = "";
|
||
|
var totCan = 0;
|
||
|
for (var i=0; i < 3; i++) {
|
||
|
for (var j=0; j <= context[i].length; j++) {
|
||
|
if (context[i][j] == 1) {
|
||
|
if (j == (rangeHolderE+1)) {
|
||
|
rangeHolderE++;
|
||
|
} else {
|
||
|
rangeHolderS = j;
|
||
|
rangeHolderE = j;
|
||
|
};
|
||
|
totCan++;
|
||
|
} else {
|
||
|
if (rangeHolderE >= 0) {
|
||
|
if ( rangeHolderS == rangeHolderE) {
|
||
|
lastElem = (rangeHolderE+1);
|
||
|
} else {
|
||
|
lastElem = (rangeHolderS+1) + "-" + (rangeHolderE+1);
|
||
|
};
|
||
|
rangeHolderE = -1;
|
||
|
};
|
||
|
};
|
||
|
if (lastElem != "") {
|
||
|
if (contextStringParts[i] == "") {
|
||
|
contextStringParts[i] = " " + canticheList[i] + " [" + lastElem;
|
||
|
} else {
|
||
|
contextStringParts[i] = contextStringParts[i] + "," + lastElem;
|
||
|
};
|
||
|
lastElem = "";
|
||
|
};
|
||
|
};
|
||
|
rangeHolderS = 0;
|
||
|
rangeHolderE = -1;
|
||
|
if (contextStringParts[i] != "") {
|
||
|
contextStringParts[i] = contextStringParts[i] + "]"
|
||
|
contextString.push(contextStringParts[i]);
|
||
|
}
|
||
|
};
|
||
|
if ((contextString.toString() != "") && (totCan < 100)) {
|
||
|
$("#contextText-xX" + claIdNum).html(contextString.toString());
|
||
|
} else {
|
||
|
resetContext(claIdNum)
|
||
|
}
|
||
|
};
|
||
|
});
|
||
|
|