LiDa_Search/js/script_4.6.js

1596 lines
65 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
*
*/
var getJsonQuery;
var fillStructCard;
var emptyStructCard;
var currPage = 0;
var latestPhraseId = "";
var numeroPagine = 0;
var latestOffset = 0;
const cssCantoHeight = 0.65;
const cssTableMainHeight = 0.95; //.tableMain {height: 95%;}
const bgImgUrl1 = "./images/fefeff.png";
const bgImgUrl2 = "./images/f8f9fa.png";
const textAbout = '<div class="container"><div class="row align-items-start pt-3"><div class="col">'
+ '<div><h3 class="font-weight-bold">Linking Dante <small class=\"text-muted\">(LiDa)</small></h3> '
+ '<p>Linking Dante (LiDa) è un progetto federatore sviluppato dall<a href="https://www.isti.cnr.it/" target="_blank" rel="noopener noreferrer">ISTI CNR</a> con lobiettivo di digitalizzare le '
+ 'opere dantesche e la conoscenza a esse relativa, collegando e in alcuni casi implementando precedenti progetti per mettere a disposizione dellutente una piattaforma integrata, dove sono '
+ 'possibili diverse tipologie di navigazione ed interrogazione. <br> La biblioteca digitale di LiDa è basata sulle tecnologie e sui linguaggi del Semantic Web e rispetta i principi FAIR (Findable, '
+ 'Accessible, Interoperable, Reusable): il testo di Dante si trova al centro di una rete che lo connette a diverse risorse che permettono di approfondire le sue caratteristiche linguistiche, '
+ 'retoriche e semantiche; per raggiungere questo scopo, LiDa ha tradotto la conoscenza relativa al testo dantesco che si trova disseminata in diversi strumenti digitali e cartacei in un grafo '
+ 'strutturato secondo logiche calcolabili ed espresso in linguaggio formale. In particolare, LiDa integra la conoscenza raccolta dai progetti:</p><ul class="m-0 mb-1"><li><strong> <a href="https://dantesearch.dantenetwork.it/" '
+ 'target="_blank" rel="noopener noreferrer">DanteSearch</a></strong> è una risorsa digitale che permette linterrogazione dellintero corpus delle opere volgari e latine di Dante, che sono state interamente '
+ 'lemmatizzate e annotate in XML-TEI per descriverne la morfologia e solo nel caso di Rime, Convivio e Commedia la sintassi. Il progetto attivato nel 1999 ed espanso nel 2009 con il coordinamento del '
+ 'prof. Mirko Tavoni dellUniversità di Pisa; allinterno di LiDa, la conoscenza raccolta da DanteSearch è stata strutturata grazie alle ontologie OLiRes e ORL, che sono a loro volta interoperabili '
+ 'con MOnt, lontologia delle metafore della Commedia realizzata da Carlo Meghini e Gaia Tomazzoli.</li><li><strong> <a href="https://dama.dantenetwork.it/" target="_blank" rel="noopener noreferrer">'
+ 'Dante Medieval Archive (DaMA)</a></strong>, allestito nellambito del progetto PRIN 2006 "La biblioteca medievale di Dante. Archivio digitale delle fonti volgari e latine (DaMA-Dante Medieval '
+ 'Archive) e edizioni commentate delle opere minori", coordinato dallUniversità di Pisa, è un archivio digitale che pubblica le opere dantesche e molte delle loro fonti classiche, tardoantiche e '
+ 'medievali, in latino e in volgare; tutte le opere possono essere consultate online o scaricate in formato XML-TEI. </li><li><strong> <a href="https://dantesources.dantenetwork.it/" target="_blank" '
+ 'rel="noopener noreferrer">DanteSources</a></strong> è stato sviluppato grazie a una collaborazione tra lISTI CNR e lUniversità di Pisa nellambito del progetto PRIN (2013-2016) "Per una Enciclopedia '
+ 'Dantesca Digitale". Il progetto mette a disposizione dellutente una biblioteca digitale delle fonti primarie delle opere minori di Dante, e permette interrogazioni complesse fornendo diverse tipologie '
+ 'di visualizzazione dei risultati. Lontologia alla base di DanteSources è stata arricchita con il progetto“Hypermedia Dante Network” (HDN), finanziato dal bando PRIN (2017) e coordinato dallUniversità '
+ 'di Pisa in collaborazione con lISTI CNR. Grazie a un accordo con la Società Dantesca Italiana e con lUniversità di Princeton, HDN rappresenta la conoscenza sulle fonti della Commedia disseminata nei '
+ 'commenti danteschi digitalizzati dal Dartmouth Dante Project.</li></ul><p class="m-0 p-1">&nbsp;</p></div>'
+ '</div></div><div class="row align-items-end justify-content-center"><div class="col align-self-end"><p class="text-muted text-center align-bottom border-top pt-2">Copyright © 2024 ISTI-CNR</p></div></div></div></div>';
$(document).ready(function() {
window.addEventListener("resize", function() {
clearTimeout(this.id);
this.id = setTimeout(doneResizing, 300);
}, true);
function doneResizing(){
$("#displayminimap").empty();;
$('#displayminimap').css('height', 'auto');
drawMinimap(currentMinimap, false, latestOffset);
};
$(displayCantoWrapperId).scroll(function() {
if (minimapScrolling) {
minimapScrolling = false
}
else {
trackScrollCanto()
}
});
// Evento: click sul cambio stile
$('.stileLink').on('click', function() {
var newStyle = $(this)[0].id;
setStyle(newStyle);
});
// Evento: click sulla voce about del menu info
$("#visAbout").PopupLayer({
to: 'bottom',
contentToggle: false,
screenRatio: 0.6,
blur: true,
content: textAbout,
color: "#212529",
backgroundColor: "rgb(246, 247, 245)",
});
$("#incrFontSize").click(function() {
newFontSize = incSize($('#displaycanto').css("font-size"), 10, 18, 58)
newH4FontSize = incSize($('#displaycanto h4').css("font-size"), 12, 24, 72)
//newLiFontSize = incSize($('#displaycanto li::marker').css("font-size"), 6, 12, 32)
$('#displaycanto').css("font-size", newFontSize);
$('#displaycanto h4').css("font-size", newH4FontSize);
//$('#displaycanto li::marker').css("font-size", newLiFontSize);
drawMinimap(currentMinimap, false);
$('iframe').contents().find('.blog-main').css("font-size", newFontSize);
$('iframe').contents().find('.blog-main h4').css("font-size", newH4FontSize);
});
// 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" );
$("#claCollapse" + claIdNum).blur();
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", "border-bottom-left-radius: 0;border-bottom-right-radius: 0;");
$("#claCollapse" + claIdNum).removeClass( "border" );
$("#claCollapse" + claIdNum).addClass( "border-bottom-0" );
$("#claCollapse" + claIdNum).blur();
e.stopPropagation();
};
})
// Evento: click sullo switch di ricerca avanzata
$('#searchAdvanced').on('click', function() {
$('#searchAdvanced').addClass('disabled');
$('#searchSimple').removeClass('disabled');
$('#checkmarkAdvanced').attr('style','opacity: 1');
$('#checkmarkSimple').attr('style','opacity: 0');
queryJson.QueryAvanzata = "1";
$("#collapseOptions").collapse('hide');
$("#simpleSearchDiv").fadeOut(300, function(){
$("#rigaRicercaSemplice").removeClass( "bg-lida08" )
$("#rigaRicercaSemplice").addClass( "bg-lida10" )
$("#simpleSearchDiv").removeClass( "d-flex" )
$("#advancedSearchDiv").addClass( "d-flex" )
$("#advancedSearchDiv").fadeIn(400, function(){
$("#collapseAdvanced").collapse('show');
$("#collapseLogic").collapse('show');
});
});
});
$('#searchSimple').on('click', function() {
$('#searchSimple').addClass('disabled');
$('#searchAdvanced').removeClass('disabled');
$('#checkmarkSimple').attr('style','opacity: 1');
$('#checkmarkAdvanced').attr('style','opacity: 0');
queryJson.QueryAvanzata = "0";
$("#collapseAdvanced").collapse('hide');
$("#advancedSearchDiv").fadeOut(300, function(){
$("#rigaRicercaSemplice").removeClass( "bg-lida10" )
$("#rigaRicercaSemplice").addClass( "bg-lida08" )
$("#advancedSearchDiv").removeClass( "d-flex" )
$("#simpleSearchDiv").addClass( "d-flex" )
$("#simpleSearchDiv").fadeIn(400);
});
});
// Inizializza sortable
$( "#sortable0" ).sortable({
items: "> li",
handle: ".handle",
opacity: 0.6,
cursor: 'move'
});
// 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,
resize: function(event, ui) {
getDimensionsDiv(true);
},
stop: function(event, ui) {
setWidthInPercent(ui.element);
}
});
$(".menuRicerca").resizable({
handles: "w",
minWidth: 350,
resize: function(event, ui) {
ui.position.left = 0;
getDimensionsDiv(true);
},
stop: function(event, ui) {
setWidthInPercent(ui.element);
}
});
$(".visCanto").resizable({
handles: "s",
minHeight: 60,
//maxHeight: 880,
alsoResize: "#displaycanto",
resize: function(event, ui) {
//console.log($("#colVisualizza").css("height"));
$("#displaycanto").width(" min-content");
var infoHeightToSet = $("body")[0].clientHeight*cssTableMainHeight - $(visCantoClass)[0].clientHeight-2-63-2-46;
$("#displayinfo").css("maxHeight", infoHeightToSet+"px");
$("#displayinfo").css("height", infoHeightToSet+"px");
$("#displaynote").css("maxHeight", infoHeightToSet+"px");
$("#displaynote").css("height", infoHeightToSet+"px");
$(".visInfo").css("height", (infoHeightToSet+4)+"px");
//console.log($("#colVisualizza").css("height"));
getDimensionsDiv(true);
},
stop: function(event, ui) {
$("#displaycanto").width(" min-content");
}
});
// Funzioni di gestione dei bottoni di paginazione
$('#collapseZero').on('shown.bs.collapse', function () {
managePage();
});
$('#paginaLista').on('change', function() {
currPage = $("#paginaLista")[0].options[$("#paginaLista")[0].selectedIndex].value;
managePage();
});
$('#pagPrecedente').on('click', function() {
if (!$(this).hasClass("disabled")){
currPage--;
$('#paginaLista option[value=' + currPage + ']').prop('selected', true);
managePage();
};
});
$('#pagSuccessiva').on('click', function() {
if (!$(this).hasClass("disabled")){
currPage++;
$('#paginaLista option[value=' + currPage + ']').prop('selected', true);
managePage();
};
});
// Evento: modifica dell'unita di ricerca'
$("#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--;
var thisIs = $("#" + claListItemId);
$("#" + claListItemId).fadeOut(300, function(){
thisIs.remove();
delete queryJson["Clausola" + claIdNum];
delete window["context" + claIdNum];
refreshClaList();
refreshSortables();
});
});
// Evento: click sull'icona rimuovi condizione
$('#sortable0').on('click', '.removeCond', function() {
var thisIs = $(this).closest('ul').parent();
$(this).closest('ul').fadeOut(300, function(){
thisIs.remove();
condListLen--;
if (claListLen == 0 && condListLen == 0) {
$('#sortable0').html(emptyClaList);
};
refreshClaList();
refreshSortables();
refreshConnectWith();
});
});
// 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-lida13" )
$("#cond" + condId).addClass( "condLI-AND bg-lida12" )
//$(this).removeClass( "bg-lida13" )
//$(this).addClass( "bg-lida12" )
} else {
$("#cond" + condId).removeClass( "condLI-AND bg-lida12" )
$("#cond" + condId).addClass( "condLI-OR bg-lida13" )
//$(this).removeClass( "bg-lida12" )
//$(this).addClass( "bg-lida13" )
};
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).parent().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);
$("#apriFile")[0].value = '';
};
});
// 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();
});
// Evento: click sull'icona rimuovi nota
$('#displaynote').on('click', '.closeNote', function() {
var noteListItemId = $(this).closest('.card');
if (($(noteListItemId).siblings(".card-body").length == 0) && !($(noteListItemId).hasClass("noteCardGroup")) ) {
$(noteListItemId).parent().remove()
} else {
$(noteListItemId).remove();
}
if ($('#displaynote .card').length == 0) {
$('#displaynote').append($(emptyNoteList))
};
});
// Evento: click sull'icona rimuovi periodo
$('#displayinfo').on('click', '.closeStruct', function() {
//$('#displayinfo').empty();
//$('#displayinfo').append($(emptyInfo))
$('#infoCard0').attr('style', "display: flex;");
$('#structGroupCard0').attr('style', "display: none;");
resetGraphStruct()
});
// 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="p-0 align-self-start align-items-start justify-content-end text-right"> \
<button class="btn btn-sm btn-outline-success bg-light radioReset border rounded text-success px-1 pb-0" style="margin-top: 1px !important;margin-right: 1px !important;"> \
<ion-icon name="refresh-circle"></ion-icon></button></div>';
const iconCloseCond = '<div class="p-0 mr-3 mt-0 text-right text-success"><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 p-1 small font-weight-bold text-muted"> Clausole e condizioni in AND di default</div>';
const emptyNoteList = '<div class="card card-body well well-sm m-1 mt-2 p-0" id="noteCard0"><span class="p-3 text-muted bg-lida-vis small" style="opacity: 0.6;">Nessun commento visualizzato</span></div>';
//const emptyInfo = '<div class="card card-body well well-sm m-1 mt-2 p-0" id="infoCard0"><span class="p-3 text-muted bg-lida-vis small" style="opacity: 0.6;">Nessuna struttura visualizzata</span></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">';
// Variabili e costanti funzionali
var minimapScrolling = false;
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;
const nRisultatiPerPag = 25;
// Fine variabili
getJsonQuery = function(){
return queryJson;
};
// Funzioni di gestione del tab Periodo, usate da synthgraph.js
fillStructCard = function(lisid){
/* var structGroupCard = $('<div class="card card-body structCardGroup well well-sm mx-1 my-2 p-0" id="structGroupCard0">');
var commentHeader = $('<div class="d-flex align-content-start flex-nowrap text-muted" id="structGruppoVersi0">')
var rigaNota = $('<div class="p-0 m-0">');
var buttons = $('<div class="d-flex flex-wrap-reverse ml-auto align-items-center justify-content-end px-1 pt-1 pb-0">')
var closeButton = $('<button id="closeStruct0"'+
'class="btn btn-sm btn-outline-warning btn-outline-warning-mod closeStruct rounded text-warning align-self-end px-1 pb-0 ml-1 mb-1">'+
'<ion-icon name="close-circle"></ion-icon>');
var structCard = $('<div class="card card-body well well-sm mx-1 mb-1 mt-0 px-2 pt-1 pb-0 border-lida08" id="structCard0">');
*/
var cantiche=["Inferno", "Purgatorio","Paradiso"];
var romani = ["I","II","III","IV","V","VI","VII","VIII","IX","X",
"XI","XII","XIII","XIV","XV","XVI","XVII","XVIII","XIX","XX",
"XXI","XXII","XXIII","XXIV","XXV","XXVI","XXVII","XXVIII","XXIX","XXX",
"XXXI","XXXII","XXXIII","XXXIV"];
var lisidArray = lisid.split('_')
/*
closeButton.appendTo(buttons);
rigaNota.append('<h6 class="card-title m-2 text-warning">' + cantiche[lisidArray[0]-1] + ", Canto " + romani[lisidArray[1]-1] + ", Verso " + lisidArray[2] + "</h6>");
rigaNota.appendTo(commentHeader);
buttons.appendTo(commentHeader);
commentHeader.appendTo(structGroupCard);
structCard.appendTo(structGroupCard);
$('#displayinfo').empty();
structGroupCard.appendTo($('#displayinfo'));
*/
$('#structHead0').text(cantiche[lisidArray[0]-1] + ", Canto " + romani[lisidArray[1]-1] + ", Verso " + lisidArray[2]);
$('#structGroupCard0').attr('style', "display: flex;");
$('#infoCard0').attr('style', "display: none;");
};
emptyStructCard = function(){
//$('#displayinfo').empty();
//$('#displayinfo').append($(emptyInfo))
$('#infoCard0').attr('style', "display: flex;");
$('#structGroupCard0').attr('style', "display: none;");
};
// 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", "");
$('#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-0 py-0 mb-1 form-group form-control-sm border 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 mr-2 pb-0');
flexdiv1.attr('style', 'padding-top: 2px!important;');
flexdiv2.attr('class', 'custom-control custom-radio custom-control-inline m-0 pb-0');
flexdiv2.attr('style', 'padding-top: 2px!important;');
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-0 text-muted curPoint');
label1.attr('style', 'padding-top: 2px!important;');
label2.attr('class', 'custom-control-label form-control-sm custom-control-inline m-0 pl-0 text-muted curPoint');
label2.attr('style', 'padding-top: 2px!important;');
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');
element.attr('class', 'd-flex flex-sm-nowrap form-group form-control-sm border px-2 mb-1 pt-1 pb-0 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 align-items-center');
flexdiv1.attr('class', 'custom-control custom-checkbox custom-control-inline');
flexdiv1.attr('style', 'padding-top: 1px!important;');
input1.attr('class', 'custom-control-input align-self-center');
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 p-0 text-muted curPoint align-self-start');
label1.attr('style', 'padding-top: 2px!important;');
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 p-0 pb-1 m-0');
//var select = $('<select class="form-control custom-select-sm monMe bg-light text-muted border btn-outline-success"/>');
var select = $('<select class="custom-select custom-select-sm monMe bg-light text-muted border btn-outline-success"/>');
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", "");
$('#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", "");
$('#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("class","row no-gutters px-2 pt-0 pb-2 bg-lida11");
contClone = contClone.outerHTML.replace(/xX0/g, "xX" + tabID);
contClone = contClone.replace(/-secondary/g, "-success");
contClone = contClone.replace(/sel-canto/g, "sel-canto suxess");
$("#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, "lida12")
} else {
cloneLI = cloneLI.replace(/xX6Xx/g, "lida13")
}
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)
if (checkInsert == ' disabled') {
cloneLI = cloneLI.replace(/claCollBtn/g, "claCollBtn " + 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 iconBtn = $(this).find(".iconClClass")[0];
var iconDiv = $(iconBtn).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) {
$(placeholderID).fadeOut(300, function(){
if (inactiveLI > 0){
$(placeholderID).text(condLIplaceholderText2d);
} else {
$(placeholderID).text(condLIplaceholderText2);
};
$(placeholderID).fadeTo(100, 0.9).fadeTo(300, 0.6);
});
} else {
if (inactiveLI > 0){
condLIplaceholder = condLIplaceholderPart1 + sortableID.slice(-1) + condLIplaceholderPart2 + condLIplaceholderText2d + '</li>';
} else {
condLIplaceholder = condLIplaceholderPart1 + sortableID.slice(-1) + condLIplaceholderPart2 + condLIplaceholderText2 + '</li>';
}
//$("#" + sortableID).append(condLIplaceholder).hide().fadeIn(300);
$("#" + sortableID).append(function(){
return $(condLIplaceholder).hide();
});
$(placeholderID).fadeTo(100, 0.9).fadeTo(300, 0.6);
};
if (inactiveLI == 0){
$(iconBtn).attr("class","btn btn-sm btn-outline-success iconClClass removeCond text-success border rounded px-1 pb-0");
$(iconBtn).prop("disabled", false);
$(iconDiv).attr("class","col-md-auto p-0 mr-2 mt-0 text-right text-success");
};
break;
case 1:
if ($(placeholderID).length) {
$(placeholderID).fadeOut(300, function(){
if (inactiveLI > 0){
$(placeholderID).text(condLIplaceholderText1d);
} else {
$(placeholderID).text(condLIplaceholderText1);
};
$(placeholderID).fadeTo(100, 0.9).fadeTo(300, 0.6);
});
} else {
if (inactiveLI > 0){
condLIplaceholder = condLIplaceholderPart1 + sortableID.slice(-1) + condLIplaceholderPart2 + condLIplaceholderText1d + '</li>';
} else {
condLIplaceholder = condLIplaceholderPart1 + sortableID.slice(-1) + condLIplaceholderPart2 + condLIplaceholderText1 + '</li>';
}
//$("#" + sortableID).append(condLIplaceholder).hide().fadeIn(300);
$("#" + sortableID).append(function(){
return $(condLIplaceholder).hide();
});
$(placeholderID).fadeTo(100, 0.9).fadeTo(300, 0.6);
};
$(iconBtn).attr("class","btn btn-sm iconClClass NOremoveCond text-muted border rounded px-1 pb-0");
$(iconBtn).prop("disabled", true);
$(iconDiv).attr("class","col-md-auto p-0 mr-2 mt-0 text-right text-muted");
break;
case 2:
if ($(placeholderID).length) {
$(placeholderID).fadeOut(300, function(){
$(placeholderID).remove();
});
//$(placeholderID).remove();
};
$(iconBtn).attr("class","btn btn-sm iconClClass NOremoveCond text-muted border rounded px-1 pb-0");
$(iconBtn).prop("disabled", true);
$(iconDiv).attr("class","col-md-auto p-0 mr-2 mt-0 text-right text-muted");
break;
default:
if ($(placeholderID).length) {
$(placeholderID).fadeOut(300, function(){
$(placeholderID).remove();
});
//$(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)
}
};
function managePage() {
if (currPage == 0){
numeroPagine = Math.ceil(numeroContesti/nRisultatiPerPag);
$("#paginaLista option").remove();
for (let i = 1; i <= numeroPagine; i++) {
$('#paginaLista').append(`<option value="${i}">${i+'/'+numeroPagine}</option>`);
};
$("#pagPrecedente").addClass("disabled");
if (numeroPagine > 1) {
$("#pagSuccessiva").removeClass("disabled")
} else {
$("#pagSuccessiva").addClass("disabled")
};
currPage = 1;
} else {
if ((currPage == 1) && (currPage == numeroPagine)) {
$("#pagPrecedente").addClass("disabled")
$("#pagSuccessiva").addClass("disabled")
} else {
if (currPage == 1) {
$("#pagPrecedente").addClass("disabled")
$("#pagSuccessiva").removeClass("disabled")
} else {
if (currPage == numeroPagine) {
$("#pagPrecedente").removeClass("disabled")
$("#pagSuccessiva").addClass("disabled")
} else {
$("#pagPrecedente").removeClass("disabled")
$("#pagSuccessiva").removeClass("disabled")
}
}
};
};
$.manageResultList((currPage-1)*nRisultatiPerPag, nRisultatiPerPag);
if (latestPhraseId != "") {
document.getElementById(latestPhraseId).scrollIntoView({
behavior: "smooth",
});
latestPhraseId = "";
}
};
function incSize(currentSize, incr, min, max) {
fSize = Math.max((parseFloat(currentSize) + incr) % max, min);
return (fSize) + 'px';
};
function setStyle(newStyle, fadeDuration = 700) {
if (newStyle != currStyle) {
var bgImgEl = document.createElement("IMG");
bgImgEl.id = "bgImg";
currStyle = newStyle;
switch (newStyle) {
case "style1":
$("body").fadeOut(fadeDuration, function() {
bgImgEl.src = bgImgUrl1;
$("#style1-Boot").prop('disabled', false);
$("#style1-Custom").prop('disabled', false);
$("#style2-Boot").prop('disabled', true);
$("#style2-Custom").prop('disabled', true);
$("body").fadeIn(fadeDuration);
});
break;
case "style2":
$("body").fadeOut(fadeDuration, function() {
bgImgEl.src = bgImgUrl2;
$("#style2-Boot").prop('disabled', false);
$("#style2-Custom").prop('disabled', false);
$("#style1-Boot").prop('disabled', true);
$("#style1-Custom").prop('disabled', true);
$("body").fadeIn(fadeDuration);
});
break;
default:
};
$('#bgImg').replaceWith(bgImgEl);
drawMinimap(currentMinimap, false, 0);
Cookies.set('LiDa_style', newStyle); };
};
});
$(window).on('load', function() {
var cantoHeightToSet = $("body")[0].clientHeight*cssCantoHeight;
var maxCantoHeightToSet = $("body")[0].clientHeight*cssTableMainHeight-110; // 63 padding top + 47 margine bottom
$(visCantoClass).css("max-height", maxCantoHeightToSet);
$(visCantoClass).css("height", cantoHeightToSet);
$(displayCantoId).css("max-height", maxCantoHeightToSet);
$(displayCantoId).css("height", cantoHeightToSet);
var bgImgEl = document.createElement("IMG");
bgImgEl.id = "bgImg";
switch (currStyle) {
case "style1":
bgImgEl.src = bgImgUrl1;
break;
case "style2":
bgImgEl.src = bgImgUrl2;
break;
default:
};
$('#bgImg').replaceWith(bgImgEl);
});