Prima versione con integrazione gestione risultati Riferimento

This commit is contained in:
nicola 2025-03-08 13:20:23 +01:00
parent 819f2145e5
commit ec13715f5e
5 changed files with 307 additions and 90 deletions

View File

@ -1689,8 +1689,6 @@ $(document).ready(function() {
filterButton.attr('id', 'filterRiferimentiOn')
filterButton.attr('class', 'btn btn-sm btn-outline-primary filterRiferimentiOn showcomments border-0 rounded text-primary px-1 pt-1 pb-0 ml-1');
var filterIcon = '<ion-icon name="funnel"></ion-icon>';
//var filterIcon = '<img id="filterImgOn" src="./images/filterOn.png" width="50%" height="50%">'
//var filterIcon1 = '<img id="filterImgOff" src="./images/filterOff.png" width="50%" height="50%">'
var filterIcon1 = '<ion-icon name="funnel"></ion-icon>';
var filterButton1 = $('<button />');
filterButton1.attr('id', 'filterRiferimentiOff')

View File

@ -6,6 +6,7 @@ import { getJsonQuery, emptyStructCard } from './script_5.1.js';
import { resetGraphStr } from './syntgraph_5.1.js'
export var manageRisultatoCommmenti
export var resetResult;
export var lsentid;
export var lisid;
@ -19,6 +20,7 @@ export var numeroContesti;
export var cantoDisplayed;
export var showOffset = 30;
export var graphTextReset;
export var isSearchRiferimenti = false;
const cantobadgeclass = 'badge badge-outline-warning badge-pill'
const hdnNamespace = 'http://dantenetwork.it/data/commedia/'
@ -36,6 +38,7 @@ $(document).ready(function() {
"san Bernardo": "diaSanBernardo"
}
const dialogaltri = 'diaAltri'
const versiPerGruppo = 5;
var listaClausoleRisultatoContesti = []
var listaRisultatiCommenti = []
@ -44,12 +47,15 @@ $(document).ready(function() {
const sparqlGenerator = sparqljs.Generator;
const myEngine = new Comunica.QueryEngine();
const sparqlEndpoint = "https://hdnlab1.isti.cnr.it/fuseki/commedia/query";
//const sparqlEndpoint = "https://lida.dantenetwork.it/fuseki/commedia/query";
//const sparqlEndpoint = "https://hdnlab1.isti.cnr.it/fuseki/commedia/query";
const sparqlEndpoint = "https://lida.dantenetwork.it/fuseki/commedia/query";
var elencoRiferimenti;
var shownSentenceList = new Set()
var filterBottonAdded = false;
var listarisultati = [];
var showingComments = false;
var filterOn = true;
listaPeriodiRisultato = [];
listaClausoleRisultato = []
/*var commentsArray = []
@ -564,6 +570,10 @@ $(document).ready(function() {
//rimuove il grafo sintattico se c'è'
resetGraphStr()
emptyStructCard()
showingComments = false;
$('#displaynote').empty();
$(".filterRiferimentiOn").css('display', 'none');
$(".filterRiferimentiOff").css('display', 'none');
$(cantoDisplayed).css("display", "none");
@ -584,14 +594,17 @@ $(document).ready(function() {
showCanto(formeterza, '3', parcid[1])
loadedCanti.add(cid)
}
//$("#" + $(this).attr('name').replace(" ", "_")).css("display", "block");
$("#" + $(this).attr('name').replace(" ", "_")).attr('style', 'display: d-flex;')
var telive = getListaRis()
for (var tel of telive) {
$(tel).addClass("mark ")
for (var tel of telive) { //prova
var telId = tel.split("_");
telId = "#"+telId[0]+telId[1]+"_"+telId[2];
$(telId+" #"+tel).addClass("mark ")
}
$("#" + $(this).attr('name').replace(" ", "_")).attr('style', 'display: d-flex;')
drawMinimap("#" + $(this).attr('name').replace(" ", "_"), false)
//console.log("#" + $(this).attr('name').replace(" ", "_"))
@ -989,14 +1002,39 @@ $(document).ready(function() {
return text;
}
}
var noteAdded;
jQuery(document).delegate(' .showcomments', 'click', function() {
var cid = $(this).attr('id');
var queryComment = false;
var idClass = $(this).attr('class');
filterOn = true;
if (idClass.includes("filterRiferimentiOn")) {
filterOn = true;
} else {
if (idClass.includes("filterRiferimentiOff")) {
filterOn = false;
}
}
if (!hasCommentsJson(cid)) {
return
}
if (showingComments) {
if (filterOn) {
$(".filterRiferimentiOn").css('display', 'inline-block');
$(".filterRiferimentiOff").css('display', 'none');
} else {
$(".filterRiferimentiOff").css('display', 'inline-block');
$(".filterRiferimentiOn").css('display', 'none');
}
} else {
$(".filterRiferimentiOn").css('display', 'none');
$(".filterRiferimentiOff").css('display', 'none');
}
var parcid = cid.split('_')
var cantica;
var verso = parcid[3];
switch (parcid[1]) {
case "1": cantica = "Inferno";
break;
@ -1005,13 +1043,19 @@ $(document).ready(function() {
case "3": cantica = "Paradiso";
}
var commentArea = $('#displaynote');
var idCommento = "CommentoQuery_"+parcid[1]+"_"+parcid[2]+"_"+parcid[3];
$(".filterRiferimentiOn").attr("id",idCommento)
$(".filterRiferimentiOff").attr("id",idCommento)
if (parcid[0] == "CommentoQuery") {
queryComment = true;
}
commentArea.empty()
if ($('#noteCard0').length) {
$("#noteCard0")[0].remove();
}
var id = cid.substr(9);
id = parcid.at(-1)
var collapseNote;
var gruppoVersi;
var versText = "";
@ -1026,23 +1070,37 @@ $(document).ready(function() {
//gruppoVersi = k.split("_").slice(-1)[0]
gruppoVersi = k
if (gruppoVersi.includes("-")) {
versText = ", Versi " + gruppoVersi;
versText = ", Versi " + verso//gruppoVersi;
} else {
versText = ", Verso " + gruppoVersi;
versText = ", Verso " + verso//gruppoVersi;
}
currentGroup = createNoteGroup(cantica, getRoman(parcid[2]), versText, k, commentsSQL[k].length)
currentGroup = createNoteGroup(cantica, getRoman(parcid[2]), versText, k, commentsSQL[k].length, queryComment)
noteAdded = false;
commentsSQL[k].forEach(function(value, i) {
currentGroup.append(createNoteEntry(value, k, i))
currentGroup.append(createNoteEntry(value, k, i, queryComment))
});
if (queryComment) {
if (noteAdded) {
commentArea.append(currentGroup);
if (filterOn) {
$(".filterRiferimentiOff").css('display', 'inline-block');
$(".filterRiferimentiOn").css('display', 'none');
} else {
$(".filterRiferimentiOn").css('display', 'inline-block');
$(".filterRiferimentiOff").css('display', 'none');
}
}
} else {
commentArea.append(currentGroup);
}
}
$('#tab-list #vis0-tab').tab('show')
})
})
function createNoteGroup(cantica, canto, versi, id, len) {
function createNoteGroup(cantica, canto, versi, id, len, queryComment) {
var noteGroupCard = $('<div class="card card-body noteCardGroup well well-sm mx-1 my-2 p-0" id="noteGroupCard' + id + '">');
var commentHeader = $('<div class="d-flex align-content-start flex-nowrap text-muted" id="commentoGruppoVersi' + id + '">')
var rigaNota = $('<div class="p-0 m-0">');
@ -1068,18 +1126,26 @@ $(document).ready(function() {
return noteGroupCard;
}
var toTitleCase = str => str.replace(/(^\w|\s\w)(\S*)/g, (_, m1, m2) => m1.toUpperCase() + m2.toLowerCase())
function createNoteEntry(comments, id, pos) {
function createNoteEntry(comments, id, pos, queryComment) {
const tmplistaidcomm = getListaIdCommenti()
var idref = comments.Id
if (tmplistaidcomm.length && tmplistaidcomm.includes(idref)) {
var noteCard = $('<div class="card card-body border-success well well-sm mx-1 mb-1 mt-0 p-0" id="noteCard' + id + '_' + pos + '"' + ' name= "' + idref + '">');
}
else
var noteCard = $('<div class="card card-body well well-sm mx-1 mb-1 mt-0 p-0 border-lida08" id="noteCard' + id + '_' + pos + '"' + ' name= "' + idref + '">');
if (tmplistaidcomm.length && tmplistaidcomm.includes(idref)) { // Nik riferimenti
var noteCard = $('<div class="card card-body bg-light border-success well well-sm mx-1 mb-1 mt-0 p-0" id="noteCard' + id + '_' + pos + '"' + ' name= "' + idref + '">');
noteAdded = true;
}
else {
var noteCard = $('<div class="card card-body well well-sm mx-1 mb-1 mt-0 p-0 border-lida08" id="noteCard' + id + '_' + pos + '"' + ' name= "' + idref + '">');
if (queryComment) {
if(filterOn){
noteCard.css("display", "none");
}else{
noteCard.css("display", "inline-block");
}
}
}
var collapseCardBody = $('<div class="card-body px-0 py-1 mx-3 my-0 border-top rounded" >');
var divCampiSingoli = $('<div class="d-flex align-content-start flex-wrap text-muted">');
//createNoteHeader(noteCard, comments, id, pos, cantica, parcid, saveVersoCitazione);
@ -1570,24 +1636,39 @@ $(document).ready(function() {
var unitaRicerca = 'forma'
function manageQuery() {
async function manageQuery() {
cleanSearchResult()
isSearchRiferimenti = false;
//var esprlogica = []
var jsonQuery = JSON.parse(JSON.stringify(getJsonQuery()))
var jsonQuery = getJsonQuery()
// $("#paginaLista option").remove();
// $('#paginaLista').append(`<option value="1">1/1</option>`);
showingComments = false;
if (filterBottonAdded) {
$(".filterRiferimentiOn").css('display', 'none');
$(".filterRiferimentiOff").css('display', 'none');
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>';
$('#displaynote').empty()
$('#displaynote').append($(emptyNoteList))
}
if (jsonQuery['QueryAvanzata'] == 0)
unitaRicerca = 'forma'
else
unitaRicerca = jsonQuery['unitaRicerca']
if (unitaRicerca == 'riferimento') {
isSearchRiferimenti = true;
var esprLR = jsonQuery.EsprLogicaRif
if (esprLR.length && esprLR.length == 1) {
listaRisultatiCommenti = queryRiferimenti(jsonQuery[esprLR[0].trim()], cantoDisplayed)
return
listaRisultatiCommenti = await queryRiferimenti(jsonQuery[esprLR[0].trim()], cantoDisplayed)
}
else {
listaRisultatiCommenti = queryRiferimentimul(jsonQuery, cantoDisplayed)
listaRisultatiCommenti = await queryRiferimentimul(jsonQuery, cantoDisplayed)
}
showRisultatiCommenti(listaRisultatiCommenti)
return
}
//console.log("got json query, unita ricerca: " + unitaRicerca)
@ -1656,6 +1737,147 @@ $(document).ready(function() {
executeQuerySearch(myquery)
}
function showRisultatiCommenti(listaRisultatiCommenti) {
if (cantoDisplayed != '#vistaFrasi') {
prevCantoDisplayed = cantoDisplayed;
$(cantoDisplayed).css("display", "none");
//visualizzo
$("#vistaFrasi").attr('style', 'display: d-flex;');
cantoDisplayed = "#vistaFrasi";
}
var listIcon = ' <ion-icon name="list-outline"></ion-icon>';
if (listaRisultatiCommenti.length > 0) {
$("#headingZero").closest('.card').attr('style', 'display: d-flex;')
var spanbadgelista = $('<span />');
spanbadgelista.attr('class', 'badge badge-warning badge-pill mx-2 ');
spanbadgelista.append(listaRisultatiCommenti.length + listIcon)
spanbadgelista.appendTo($('#cantica0-badge'))
//countResultContexts()
numeroContesti = listaRisultatiCommenti.length;
$("#loader").fadeOut(300);
$("#cantica0").trigger("click");
}else{
return;
}
if (!filterBottonAdded) {
var cardRiferimenti = $("#tabRiferimenti")
var filterButton = $('<button />');
filterButton.attr('id', 'filterRiferimentiOn')
filterButton.attr('class', 'btn btn-sm btn-outline-primary filterRiferimentiOn showcomments border-0 rounded text-primary px-1 pt-1 pb-0 ml-1');
var filterIcon = '<ion-icon name="funnel"></ion-icon>';
//var filterIcon = '<img id="filterImgOn" src="./images/filterOn.png" width="50%" height="50%">'
//var filterIcon1 = '<img id="filterImgOff" src="./images/filterOff.png" width="50%" height="50%">'
var filterIcon1 = '<ion-icon name="funnel"></ion-icon>';
var filterButton1 = $('<button />');
filterButton1.attr('id', 'filterRiferimentiOff')
filterButton1.attr('class', 'btn btn-sm btn-outline-primary filterRiferimentiOff showcomments border-0 rounded text-primary px-1 pt-1 pb-0 ml-1');
var removeFilter = '<ion-icon name="close"></ion-icon>';
filterButton1.append(filterIcon1)
filterButton1.append(removeFilter)
filterButton1.css('display', 'none');
filterButton.css('display', 'none');
filterButton.append(filterIcon)
filterButton.appendTo(cardRiferimenti)
filterButton1.appendTo(cardRiferimenti)
filterBottonAdded = true;
}
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>';
$('#displaynote').empty()
$('#displaynote').append($(emptyNoteList))
}
manageRisultatoCommmenti = function(start, offset = showOffset) {
var commentoRisultato = [];
var cantica;
var canto;
var verso;
var idFrase = 0;
var cid;
var numCantica;
var ultimoVersoPrecedente;
elencoRiferimenti = $("#vistaFrasi");
elencoRiferimenti.empty();
$("#displaynote").empty();
filterOn = true;
if (cantoDisplayed != '#vistaFrasi') {
prevCantoDisplayed = cantoDisplayed;
$(cantoDisplayed).css("display", "none");
//visualizzo
$("#vistaFrasi").attr('style', 'display: d-flex;');
cantoDisplayed = "#vistaFrasi";
}
var risLen = listaRisultatiCommenti.length;
for (var j = start; j < start+offset && j< risLen; j++) {
commentoRisultato = listaRisultatiCommenti[j].split("_")
var listaVersi = $('<ol class="pt-3" />')
idFrase++;
listaVersi.attr('id', "Frase" + idFrase);
var versiFrase = $('<div class="versiFrase mt-3" />')
versiFrase.attr('id', "versiFrase" + idFrase);
cantica = commentoRisultato[0];
canto = commentoRisultato[2];
cid = cantica + "Canto_" + canto
switch (cantica) {
case "Inferno":
numCantica = 1;
break;
case "Purgatorio":
numCantica = 2;
break;
case "Paradiso":
numCantica = 3
break;
}
if (!(loadedCanti.has(cid))) {
showCanto(formeprima, numCantica, canto)
loadedCanti.add(cid)
}
verso = commentoRisultato[3];
if (verso == "Proemio"){
createProemioSpan(cantica + '_Canto_' + canto + '_' + verso, versiFrase, 1, cantica + '_Canto_' + canto + '_Proemio')
versiFrase.append("Aggiungere Proemio")
// continue;
} else {
verso = Number(verso);
if (verso <= ultimoVersoPrecedente) {
$("#" + cantica + '_Canto_' + canto + '_' + verso).addClass("mark ")
continue;
}
$("#" + cantica + '_Canto_' + canto + '_' + verso).addClass("mark ")
}
for (var num = 0; num<versiPerGruppo; num++){
var liVerso = $("#" + cantica + '_Canto_' + canto + '_' + verso).clone()
versiFrase.append(liVerso)
verso++
}
ultimoVersoPrecedente = verso;
listaVersi.append(versiFrase)
elencoRiferimenti.append(listaVersi)
var citazioneDiv = $('<div class=" text-right flex-nowrap d-inline ml-3 px-3 py-0"/>')
var citazione = $('<span class= " pl-3 citazioneFrase align-text-top"/>')
citazione.append("[" + cantica + ", Canto " + getRoman(canto) + "]")
citazione.attr('name', cantica + "Canto " + canto);
citazione.attr('id', idCitazione + '_' + numCantica + '_' + (verso-versiPerGruppo));
citazione.appendTo(citazioneDiv);
citazioneDiv.appendTo(elencoRiferimenti)
}
showingComments = true;
return verso;
}
function executeLocalSearch(testo, forme, limit, cantica, cont, resultsInCantica, resultsInCanto) {
for (var ip = 0; ip <= limit; ip++) {
@ -1708,6 +1930,8 @@ $(document).ready(function() {
var elverso, formaItem, currSentenceId;
var ultimaFormaCanto;
let numeroPeriodo = 1;
showingComments = false;
formecantica.map(function(item) {
formaItem = item.split("_");
var sentenceid = idcantica + "_" + formaItem[1] + "_s_" + formaItem[5]

View File

@ -95,7 +95,7 @@ export function getListaRis() {
return listaidversi;
}
export function getListaIdCommenti() {
return listaidcommenti; // Nik riferimenti
return listaidcommenti;
}
export function cleanListaRis() {
listaidversi = [];

View File

@ -286,8 +286,23 @@ export async function queryRiferimentimul(query, cid) {
}
function showResult(resxcantica, cid) {
var resKeys = Object.keys(resxcantica);
var tuttiVersiPurgatorio = []
var tuttiVersiParadiso = []
listaidversi = []
var numcid = cid.split('_')[1]
if (resKeys.includes("Inferno")) {
sortRiferimenti(resxcantica.Inferno, listaidversi)
}
if (resKeys.includes("Purgatorio")) {
sortRiferimenti(resxcantica.Purgatorio, tuttiVersiPurgatorio)
listaidversi = listaidversi.concat(tuttiVersiPurgatorio)
}
if (resKeys.includes("Paradiso")) {
sortRiferimenti(resxcantica.Paradiso, tuttiVersiParadiso)
listaidversi = listaidversi.concat(tuttiVersiParadiso)
}
for (var cantica in resxcantica) {
var $nctags = $(' .navig-canto')
@ -302,7 +317,6 @@ function showResult(resxcantica, cid) {
spanbadgecantica.append(resxcantica[cantica].length)
spanbadgecantica.appendTo($('#cantica' + i + '-badge'))
var tmp = resxcantica[cantica]
var resxcanto = Object.groupBy(tmp, ({ Canto }) => Canto);
for (var canto in resxcanto) {
@ -315,17 +329,10 @@ function showResult(resxcantica, cid) {
}
spanbadge.appendTo($nctags.filter('[name="' + cantica + 'Canto ' + canto + '"]'))
for (const tmpvi of tmpv) {
let myveid = '#' + cantica + '_Canto_' + canto + '_' + tmpvi.Verso.split('-')[0]+'_sp'
//console.log(myveid)
listaidversi.push(myveid)
listaidcommenti.push(tmpvi.IdRiferimento)
if (cid.includes(cantica) && numcid == canto)
$(myveid).addClass("mark ")
}
}
drawMinimap(cid, true)
}
/*console.log(resxcantica)*/
return listaidversi
@ -418,52 +425,34 @@ export async function queryRiferimenti(filtro, cid) {
var resxcantica = Object.groupBy(result4, ({ Cantica }) => Cantica);
return (showResult(resxcantica, cid))
/*listaidversi = []
var numcid = cid.split('_')[1]
for (var cantica in resxcantica) {
var $nctags = $(' .navig-canto')
}
console.log(resxcantica[cantica].length)
var i = 1;
if (cantica == 'Purgatorio')
i = 2
if (cantica == 'Paradiso')
i = 3
var spanbadgecantica = $('<span />');
spanbadgecantica.attr('class', 'badge badge-warning badge-pill mx-2');
spanbadgecantica.append(resxcantica[cantica].length)
spanbadgecantica.appendTo($('#cantica' + i + '-badge'))
var tmp = resxcantica[cantica]
var resxcanto = Object.groupBy(tmp, ({ Canto }) => Canto);
for (var canto in resxcanto) {
var tmpv = resxcanto[canto]
var spanbadge = $('<span />');
spanbadge.attr('class', cantobadgeclassBis);
spanbadge.append(resxcanto[canto].length)
function sortRiferimenti(canticaArray,arrayValues){
var versi = []
var cantica;
var canto;
for (var j = 0; j < canticaArray.length; j++) {
versi = canticaArray[j].Verso.split("-")
cantica = canticaArray[j].Cantica
canto = canticaArray[j].Canto
if (canto.startsWith('0')) {
canto = canto.replace('0', '')
}
spanbadge.appendTo($nctags.filter('[name="' + cantica + 'Canto ' + canto + '"]'))
for (const tmpvi of tmpv) {
let myveid = '#' + cantica + '_Canto_' + canto + '_' + tmpvi.Verso.split('-')[0]+'_sp'
listaidversi.push(myveid)
listaidcommenti.push(tmpvi.IdRiferimento)
if (cid.includes(cantica) && numcid == canto){
$(myveid).addClass("mark ")
arrayValues.push(cantica + '_Canto_' + canto + '_' + versi[0])
}
arrayValues.sort(function(a, b) {
var versoA = a.split('_')
var versoB = b.split('_')
var cantoA = Number(versoA[2]);
var cantoB = Number(versoB[2])
versoA = versoA[3];
versoB = versoB[3];
if (cantoA == cantoB){
return (versoA - versoB)
}else{
return (cantoA - cantoB)
}
}
drawMinimap(cid, true)
}
console.log(resxcantica)
return listaidversi*/
});
}
function opzioniRiferimenti() {

View File

@ -3,7 +3,7 @@
*/
import {numeroContesti, resetResult} from './browseMgr_5.1.js'
import {numeroContesti, resetResult,isSearchRiferimenti, manageRisultatoCommmenti} from './browseMgr_5.1.js'
import { resetGraphStr } from './syntgraph_5.1.js';
export var getJsonQuery;
@ -1701,7 +1701,13 @@ $(document).ready(function() {
}
};
};
if (isSearchRiferimenti) {
manageRisultatoCommmenti((currPage - 1) * nRisultatiPerPag, nRisultatiPerPag)
} else {
$.manageResultList((currPage - 1) * nRisultatiPerPag, nRisultatiPerPag);
}
if (latestPhraseId != "") {
document.getElementById(latestPhraseId).scrollIntoView({
behavior: "smooth",