From 5b7bc21bfe2bdea7a9e5418dfbad5afee30171c4 Mon Sep 17 00:00:00 2001 From: cesare Date: Mon, 22 Apr 2024 09:58:40 +0200 Subject: [PATCH 1/2] cesareBrowse -> browseMgr per index_4.5 --- index_4.5.html | 2 +- js/browseMgr.js | 2520 ++++++++++++++++++++++++++++++++++++++++++++ js/cesareBrowse.js | 53 +- 3 files changed, 2537 insertions(+), 38 deletions(-) create mode 100644 js/browseMgr.js diff --git a/index_4.5.html b/index_4.5.html index 87c8262..034185f 100644 --- a/index_4.5.html +++ b/index_4.5.html @@ -36,7 +36,7 @@ - + diff --git a/js/browseMgr.js b/js/browseMgr.js new file mode 100644 index 0000000..6360f57 --- /dev/null +++ b/js/browseMgr.js @@ -0,0 +1,2520 @@ +/** + * + */ + + +var resetResult; +var lsid; +var lsentid; +const formaClass='frm' +var selectedVista; +var vistaPeriodi=false +var vistaDialoghi=false +var listaPeriodiRisultato; +var listaClausoleRisultato; +var numeroContesti; + +$(document).ready(function() { + lsid=''; + removeGraph=false; + const dialogspeakers={ + "Beatrice":"diaBeatrice", + "Dante":"diaDante", + "Virgilio":"diaVirgilio", + "Cacciaguida":"diaCacciaguida", + "san Bernardo":"diaSanBernardo" + } + const dialogaltri='diaAltri' + + + const cantobadgeclass = 'badge badge-outline-warning badge-pill' + + const sparqlGenerator = sparqljs.Generator; + const myEngine = new Comunica.QueryEngine(); + //const sparqlEndpoint = "https://hdnlab1.isti.cnr.it/fuseki/commediaontosintgra/query"; + const sparqlEndpoint = "https://hdnlab1.isti.cnr.it/fuseki/commedia/query"; + + var shownSentenceList = new Set() + + listarisultati = []; + listaPeriodiRisultato = []; + listaClausoleRisultato=[] + var commentsArray = [] + var commentsJson = {} + var resultSentences = new Set() + const cantiche=["Inferno", "Purgatorio","Paradiso"] + var loadedCanti=new Set(); + const openSTag="{" + const closeSTag="}" + + var cantoDisplayed = "#InfernoCanto_1"; + var prevCantoDisplayed = "#InfernoCanto_1"; + var contextLength = 3; + var showOffset = 30; + var idCitazione = "citazioneFrase"; + + initCitazioni(); + + resetResult=function(){ + //console.log('clean result') + cleanSearchResult() + esprlogica = [] + } + + //hideMinimap(); + createAllDivCanti() + //const start = performance.now(); + showCanto(formeprima, '1','1') + $("#InfernoCanto_1").attr('style', 'display: d-flex;') + loadedCanti.add("InfernoCanto_1") + drawMinimap("#InfernoCanto_1", false) + const minim=$(" .minimap__content") + //const end = performance.now(); + //console.log(`Load cantiche time: ${end - start} ms`); + +$('#opzioniVista :checkbox').change(function() { + changedOption = $(this)[0].id; + switch (changedOption + "|" + this.checked){ + case "visPeriodi|true": + + selectedVista = 'frasi' + $(cantoDisplayed).attr('style', 'display: d-flex;') + vistaPeriodi=true + loadFrasi(); + break; + case "visPeriodi|false": + $("#vistaFrasi").css("display", "none"); + resetFrasi() + vistaPeriodi=false + /*if(vistaDialoghi) + loadDialoghi();*/ + $(cantoDisplayed).attr('style', 'display: d-flex;') + break; + case "visRiferimenti|true": + $(".showcomments").css("display", "inline-block"); + minim.contents().find(" .showcomments").each(function(){ + $(this).css('display', 'inline-block'); + }) + break; + case "visRiferimenti|false": + $(".showcomments").css("display", "none"); + minim.contents().find(" .showcomments").each(function(){ + $(this).css('display', 'none'); + }) + const emptyNoteList = '
Nessun commento visualizzato
'; + $('#displaynote').empty() + $('#displaynote').append($(emptyNoteList)) + break; + case "visDialoghi|true": + selectedVista = 'dialoghi' + //resetFrasi() + loadDialoghi(); + vistaDialoghi=true + break; + case "visDialoghi|false": + $("#vistaDialoghi").css("display", "none"); + vistaDialoghi=false + resetDialoghi() + break; + case "visMetafore|true": + //loadMetafore(); + break; + case "visMetafore|false": + $("#vistaMetafore").css("display", "none"); + } +}); + + + +$(" ."+formaClass).each(function(idx, element) { + // We cycle through the elements using each() so that we can choose the element specifically that we wish to clean up afterward + var ele = $(element); + ele.tooltip({ + content: (function() {return formatTTContent(ele.attr('title'), ele.attr('class').split(' ')[1], ele.attr('class').split(' ')[0]);}), + classes:{"ui-tooltip":'Nik_dropdown-content'}, + close: function (event, ui) {$(".ui-helper-hidden-accessible").remove();}, + create: function(ev, ui) {$(this).data("ui-tooltip").liveRegion.remove();}, + hide: false, + show: {delay: 800,duration: 0} + + }); + }); + + + +$( " ."+formaClass ).dblclick(function() { + + var sentenceId=$(this).attr('class').split(' ')[0].replace('$','') + console.log('dblclick '+lisid) + if (shownSentenceList.has(sentenceId)){ + resetSentenceStructure(sentenceId) + shownSentenceList.delete(sentenceId) + lsid='' + + } + else{ + //showSentenceStructure (sentenceId) + shownSentenceList.add(sentenceId) + + + } +}); + + +$(" ."+formaClass).hover(function(idx, element) { + + var sentenceId=$(this).attr('class').split(' ')[0].split('_') + var tmplisid=sentenceId[0]+'_'+sentenceId[1]+'_'+sentenceId[3] + lsentid=$(this).attr('class').split(' ')[0] + lisid=tmplisid + }); + + +/* +* Espansione del contesto +*/ + + jQuery(document).delegate(' .espandiFrase, .riduciFrase', 'click', function() { + if ($(this).hasClass("disabled")) { + return; + }; + var posizioniEspansione=[] + var cid = $(this).attr('id'); + var parcid = cid.split('_'); + var posVerso + reit = '#versiFrase' + parcid[4] + var expcontextLength=$(reit+" > li").length + if(cid.includes('_er_')){ + expcontextLength=contextLength + }else{ + posVerso = $(reit).attr('posVerso') + if (posVerso == 1){ // caso inizio o fine canto + expcontextLength+=contextLength; + } + } + + //svuoto la lista di versi + $(reit).empty() + //genero la nuova lista di versi + var versiContestoExp = getFormaContext(parseInt(parcid[3]), expcontextLength); + var divVersoExp='' + var setVersicontestoExp = new Set() + for (forma of versiContestoExp) { + if (!setVersicontestoExp.has(forma.verso)) { + divVersoExp = createDivVersoLI(forma.cantica, forma.verso, forma.canto) + $(reit).append(divVersoExp) + setVersicontestoExp.add(forma.verso) + } + createSpanFormeNew(forma.testo, forma.catg, 'e' + forma.posizione, forma.periodo, forma.funzperiodo, divVersoExp) + posizioniEspansione.push('e' + forma.posizione) + } + + if(cid.includes('_er_')){ + ///$("#"+cid).css("display", "none"); + $("#"+cid).removeClass( "btn-outline-primary" ); + $("#"+cid).addClass( "btn-outline-secondary" ); + $("#"+cid).addClass( "disabled" ); + } + else{ + cid = cid.replace("ex","er"); + ///$("#"+cid).attr('style', 'display: d-flex;'); + $("#"+cid).removeClass( "btn-outline-secondary" ); + $("#"+cid).removeClass( "disabled" ); + $("#"+cid).addClass( "btn-outline-primary" ); + } + + + //evidenzio risultato + //var idris = '#e' + parcid[3] + //$(idris).addClass("font-weight-bold mark ") + for (ris of listarisultati) { + idris = '#e' + ris + $(idris).addClass("font-weight-bold mark ") + } + + //gestisco risultati se unità di ricerca è periodo + if (listaPeriodiRisultato.length){ + for (msid of listaPeriodiRisultato){ + loadPeriodo(msid) + + } + } + //gestisce risultati se unità di ricerca è frase + if (listaClausoleRisultato.length){ + for (clsid of listaClausoleRisultato){ + let tmpid=clsid.split('-') + //loadFrase(tmpid[0], tmpid[1]) + loadClausola(tmpid[0], tmpid[1], tmpid[2], tmpid[3]) + + } + } + + //aggiungo listeners + + //addFormaListenersInRisultato(posizioniEspansione) + addFormaListenersInCanto() + + //disegno minimap, onlyContent = true + drawMinimap('#vistaFrasi', true) + //manageMM('#vistaFrasi') + + + }) + + +/* + * Costruzione e visualizzazione del risultato in frasi. +*/ + + /* + * Costruzione e visualizzazione del risultato in frasi. + */ + + //$.manageResultList(start, offset) + var prevstart=-1 + var prevoffset=-1 + jQuery.manageResultList = function manageResultList(start, offset = showOffset){ + + if(offset==prevoffset && start==prevstart && cantoDisplayed=='#vistaFrasi') + return + console.log('Paginazione...') + prevstart=start + prevoffset=offset + if(cantoDisplayed!='#vistaFrasi'){ + prevCantoDisplayed=cantoDisplayed; + $(cantoDisplayed).css("display", "none"); + //visualizzo + $("#vistaFrasi").attr('style', 'display: d-flex;'); + cantoDisplayed="#vistaFrasi"; + } + + //listarisultati.sort(function(a, b){return a - b}); + showFrasi (start, offset) + if (selectedVista=='frasi'){ + loadFrasi(); + } + if (selectedVista=='dialoghi'){ + loadDialoghi(); + } + addFormaListenersInCanto() + drawMinimap('#vistaFrasi', false) + + } + + function countResultContexts(){ + var numeroRisultati = 0; + var ultimaPosizione = -1; + for (risultato of listarisultati){ + if (risultato <= parseInt(ultimaPosizione)){ + continue; + } + numeroRisultati=numeroRisultati+1; + var versiContesto= getFormaContext(risultato, contextLength); + var ultimaForma=versiContesto.slice(-1) + ultimaPosizione=ultimaForma[0].posizione + } + console.log('N. contesti: '+numeroRisultati) + numeroContesti=numeroRisultati + return (numeroRisultati) + } + + function getResInPage(startcont, endcont){ + var res = []; + var ultimaPosizione = -1; + var contaContesti=0 + for (risultato of listarisultati){ + if (risultato <= parseInt(ultimaPosizione)){ + continue; + } + contaContesti=contaContesti+1; + if (contaContesti >= startcont && contaContesti < endcont){ + res.push(risultato) + } + if (contaContesti > endcont) + break; + var versiContesto= getFormaContext(risultato, contextLength); + var ultimaForma=versiContesto.slice(-1) + ultimaPosizione=ultimaForma[0].posizione + } + //ordino la lista dei risultati + res.sort(function(a, b){return a - b}); + return (res) + } + + function showFrasi (start, offset = showOffset) { + var canto, numeroCantica; + var divVerso; + var elencoRisutati = $("#vistaFrasi"); + elencoRisutati.empty(); + + var numeroRisultato = 0; + var ultimaPosizione = 0; + var numeroVersi; + const intsup =Math.min(start+offset, listarisultati.length) + var resincontext=getResInPage(start, start+offset) + //for (let i=start; i') + var versiIniziali = $('
') + var listaVersi = $('
    ') + + listaVersi.attr('id', "Frase"+numeroRisultato); + versiIniziali.attr('id', "versiFrase"+numeroRisultato); + numeroVersi = 0; + for (forma of versiContesto){ + if (setVersicontesto.size == 0){ + numeroCantica=forma.cantica + canto=forma.canto + } + if (!setVersicontesto.has(forma.verso)){ + divVerso = createDivVersoLI(forma.cantica, forma.verso, forma.canto) + versiIniziali.append(divVerso) + listaVersi.append(versiIniziali) + elencoRisutati.append(listaVersi) + setVersicontesto.add(forma.verso) + numeroVersi++; + } + createSpanFormeNew(forma.testo, forma.catg, 'e'+forma.posizione, forma.periodo, forma.funzperiodo, divVerso) + } + ultimaPosizione = forma.posizione; + + if (numeroVersi < contextLength +1) { + versiIniziali.attr('posVerso', 1); // inizio o fine canto + }else { + versiIniziali.attr('posVerso', 9999); + } + + var comandi = $('
    ') + comandi.attr('id',"comandiFrase"+numeroRisultato) + comandi.attr('class', 'comandi col flex-nowrap d-inline justify-content-between pl-1 pb-2 ml-2 mb-2 border-bottom'); + + var comandiGrp = $('
    ') + comandiGrp.attr('class', 'btn-group flex-nowrap d-inline pr-3 mt-1 mr-3 align-text-bottom'); + comandiGrp.attr('role',"group") + + var spanBadgeExpand = $('