/**
*
*/
/* necessari per il bundle:
import "./jquery-global.js";
require("../node_modules/jquery-ui-dist/jquery-ui.js");
require("../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js");
*/
var getJsonQuery;
$(document).ready(function() {
//$('#multidraggable1').multidraggable();
$("#dropAdvanced").on('click', function () {
queryJson.QueryAvanzata = "1";
$("#simpleSearchDiv").removeClass( "d-flex" )
$("#simpleSearchDiv").attr('style', "display: none;");
$("#collapseOptions").collapse('hide');
$("#collapseAdvanced").collapse('show');
$("#advancedSearchDiv").addClass( "d-flex" )
$("#advancedSearchDiv").attr('style', "display: flex;");
});
$("#dropSimple").on('click', function () {
queryJson.QueryAvanzata = "0";
$("#advancedSearchDiv").removeClass( "d-flex" )
$("#advancedSearchDiv").attr('style', "display: none;");
$("#simpleSearchDiv").addClass( "d-flex" )
$("#simpleSearchDiv").attr('style', "display: flex;");
$("#collapseAdvanced").collapse('hide');
});
$("#copiaTesto").prop("disabled", true);
// Evento: click sul bottone di copia dei risultati testuali
$("#copiaTesto").on("click", function(){
$("#risultatitesto").copy2clipboard();
});
$("#copiaQuery").prop("disabled", true);
// Funzioni di gestione del comportamento dei bottoni collapse
$('#collapseLogic').on('hidden.bs.collapse', function (e) {
if (e.target.id == "collapseLogic") {
$("#showLogic").html('Mostra pannello');
$("#collapseAdvanced").collapse('hide');
};
})
$('#collapseLogic').on('shown.bs.collapse', function () {
$("#showLogic").html('Nascondi pannello');
$("#collapseAdvanced").collapse('show');
})
$('#collapseOptions').on('hidden.bs.collapse', function (e) {
if (e.target.id == "collapseOptions") {
$("#showOptions").html('Mostra Opzioni');
};
})
$('#collapseOptions').on('shown.bs.collapse', function () {
$("#showOptions").html('Nascondi Opzioni');
})
$('.collapse').on('hide.bs.collapse', function (e) {
if (e.target.id.substr(0,9) == "collapseC") {
var claIdNum = e.target.id.substr(9);
$("#claCollapse" + claIdNum)[0].removeAttribute("style");
$("#claCollapse" + claIdNum).removeClass( "border-bottom-0" );
$("#claCollapse" + claIdNum).addClass( "border border-primary" );
e.stopPropagation();
};
})
$('.collapse').on('show.bs.collapse', function (e) {
if (e.target.id.substr(0,9) == "collapseC") {
var claIdNum = e.target.id.substr(9);
$("#claCollapse" + claIdNum)[0].setAttribute("style", "background-color: #dbe5f2 !important;border-color: #3d6ca9!important;border-bottom-left-radius: 0;border-bottom-right-radius: 0;");
$("#claCollapse" + claIdNum).removeClass( "border border-primary" );
$("#claCollapse" + claIdNum).addClass( "border-bottom-0" );
e.stopPropagation();
};
})
// Evento: click sulsullo 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 selectable0 e definisce le funzioni
$("#selectable0").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) + "-1"
$(tmpFocusBtn).focus();
}
});
// Evento: click sul bottone di copia della query
$("#copiaQuery").on("click", function(){
$('#sparqlquery').copy2clipboard();
});
// Evento: modifica di un campo clausole
$("form #lemma_forma,#queryText,#opzioni_testo").on('change', function() {
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];
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:"
$('.btn-group a').on('click', function() {
var addClaN = $(this).attr('id');
switch (addClaN) {
case "Grammaticale":
tabID++;
addGramCla(1,tabID);
break;
case "Sintattico":
tabID++;
addSyntCla(1,tabID);
break;
case "Metafore":
tabID++;
addMetaCla(0,tabID);
break;
case "andCond":
addLogicCond("AND","#sortable0");
break;
case "orCond":
addLogicCond("OR","#sortable0");
break;
default:
};
refreshClaList();
refreshSortables();
});
// Evento: clausola spostata nella lista
$('#sortable0').sortable({
opacity: 0.6,
cursor: 'move',
update: function() {
refreshClaList();
refreshSortables();
}
});
// 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
$('.trashClaCont').on('click', function() {
var claIdNum = $(this)[0].id.substring(12);
$('#selectable' + claIdNum + " .ui-selectee").each(function() {
$(this).attr('style', "line-height: 1.2em");
});
$('#selectable' + claIdNum + " .ui-selected").removeClass( "ui-selected" )
$('#selectable' + claIdNum + ' .sel-canti-intro').each(function() {
$(this).text("Seleziona i canti:")
});;
$("#contextText" + claIdNum).html("Tutta l'opera");
window["context" + claIdNum] = [[],[],[]];
eval("queryJson.Clausola" + claIdNum + ".contesto = jsonContext0");
$('#selectable' + claIdNum + " .show").removeClass("show");
});
// Evento: click sull'icona di add del contesto
$('.addClaCont').on('click', function() {
var claIdNum = $(this).closest('.ui-selectable').attr('id').substr(10);
var selectedCanti = $(this).closest('.card').find('.ui-selected');
if (selectedCanti.length == 0) {
$(this).closest('.card').find('.ui-selectee').each(function() {
$(this).addClass( "ui-selected" );
eval('window.context' + claIdNum + '[$(this).attr("id").substring(0,1)][$(this).attr("id").substring(2)] = 1');
});
};
var context = window["context" + claIdNum];
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.");
};
});
// Evento: click sull'icona di save local
$('#cla-TabContent').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
$('#cla-TabContent').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);
});
// Evento: Submit form
$("form").submit(function(e){
e.preventDefault();
});
// Evento: click sui bottoni Cerca
/**
$("form #searchcomm,#searchcomm2").on('click', function(e) {
e.preventDefault();
var qText = $("form #queryText")[0].value;
if (qText == "" && logicExprString == "") {
alert("Inserire un termine di ricerca od una clausola attiva!");
return false;
}
const sparqlGenerator = sparqljs.Generator;
jsonQuery = buildSQ(queryJson);
//queryFields = [];
//for (var i in jsonQuery.variables) {
// queryFields.push(jsonQuery.variables[i].variable.value);
//}
console.log(jsonQuery);
//execQuery = new sparqlGenerator().stringify(jsonQuery);
//executeQuery();
return false;
});
*/
// Evento: click sul checkbox di Ricerca avanzata
$('#cla-TabContent').on('click', '#advanSW', function() {
if ($(this).prop('checked')) {
$("#cla-Advanced").attr('style', "display: block;");
queryJson.QueryAvanzata = "1";
} else {
$("#cla-Advanced").attr('style', "display: none;");
queryJson.QueryAvanzata = "0";
//resetAdvGui();
}
});
// Evento: click sul checkbox di Definisci contesto
$('#cla-TabContent').on('click', '#contextSW', function() {
if ($(this).prop('checked')) {
$("#contextTableDiv0").attr('style', "display: flex;");
//queryJson.QueryAvanzata = "1";
} else {
$("#contextTableDiv0").attr('style', "display: none;");
//queryJson.QueryAvanzata = "0";
}
});
// Evento: click sul bottone di reset azanzata
$('#cleanresult2').on('click', function() {
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
var iconReset = '
';
var iconCloseCond = '
';
var emptyClaList = '
Nessuna clausola aggiunta.
';
var defaultCond = '
AND
';
var condLIplaceholderText1 = 'Trascina qui almeno 1 clausola o condizione';
var condLIplaceholderText2 = 'Trascina qui almeno 2 clausole o condizioni';
var condLIplaceholderText1d = 'Trascina qui almeno 1 clausola o condizione, oppure attiva le clausole inattive';
var condLIplaceholderText2d = 'Trascina qui almeno 2 clausole o condizioni, oppure attiva le clausole inattive';
var condLIplaceholderPart1 = '
';
// Variabili funzionali
var tabID = 0;
var claListLen = 0;
var condListLen = 0;
var logicExprString = ``;
var guiLogicString = ``;
var execQuery = ``;
var queryFields = []; // Contiene le intestazioni di colonna della tabella dei risultati
var contextE = [[],[],[]];
var jsonContext0 = JSON.stringify(contextE);
window.context0 = [[],[],[]];
var canticheList = ["Inferno","Purgatorio","Paradiso"];
var queryJson = JSON.parse('{"EsprLogica":"", "LogicaGui":"", "QueryAvanzata": "0"}');
queryJson.LiDaVersion = "1.0";
queryJson.Clausola0 = JSON.parse('{"queryText": "", "lemma_forma": "lemma", "opzioni_testo": "parola", "TipoClausola": "0", "Attiva": "0"}');
queryJson.Clausola0.contesto = context0;
queryJson.Clausola1 = JSON.parse('{"queryText": "", "lemma_forma": "lemma", "opzioni_testo": "parola", "TipoClausola": "0", "Attiva": "0"}');
queryJson.Clausola1.contesto = context0;
const myEngine = new Comunica.QueryEngine();
const sparqlEndpoint = "https://hdnlab1.isti.cnr.it/fuseki/commediaontosintgra/query";
const jsonReplacer = (key, value) =>
typeof value === 'undefined' ? 0 : value;
// Fine variabili
getJsonQuery = function(){
return queryJson;
}
async function executeQuery(){
$("#loader").show();
bindingsStream = await myEngine.queryBindings(execQuery, { sources: [ { type: 'sparql', value: sparqlEndpoint }, ], });
$("#sparqlquery").val(execQuery);
$("#copiaQuery").prop("disabled", false);
var resultTablePart1 = '
';
var resultTablePart2 = '
#
';
var resultTablePart3 = '
';
var resultTablePart4 = '';
var resultTablePart5 = '
';
var resultTable = '';
var latestVerso = '';
var latestResult = '';
var rowNum = 1;
for (var i = 0; i < queryFields.length; i++) {
resultTablePart2 = resultTablePart2 + '