diff --git a/js/browseMgr_5.0.js b/js/browseMgr_5.0.js index 56c1be6..058b5fd 100644 --- a/js/browseMgr_5.0.js +++ b/js/browseMgr_5.0.js @@ -1,9 +1,10 @@ /** * */ +import { getVersiConCitazioni, queryRiferimenti, getListaRis, cleanListaRis} from './dataMgr.js'; import { getJsonQuery, emptyStructCard } from './script_5.0.js'; import {resetGraphStr} from './syntgraph_5.0.js' -import { getVersiConCitazioni, queryRiferimenti} from './dataMgr.js'; + export var resetResult; export var lsentid; @@ -15,6 +16,8 @@ var vistaRiferimenti = true export var listaPeriodiRisultato; export var listaClausoleRisultato; export var numeroContesti; +export var cantoDisplayed; +const cantobadgeclass = 'badge badge-outline-warning badge-pill' const hdnNamespace = 'http://dantenetwork.it/data/commedia/' const syntitNamespace = 'https://dantenetwork.it/ontology/syntit/current/' @@ -31,7 +34,7 @@ $(document).ready(function() { } const dialogaltri = 'diaAltri' var listaClausoleRisultatoContesti = [] - const cantobadgeclass = 'badge badge-outline-warning badge-pill' + const sparqlGenerator = sparqljs.Generator; const myEngine = new Comunica.QueryEngine(); @@ -52,7 +55,7 @@ $(document).ready(function() { const openSTag = "{" const closeSTag = "}" - var cantoDisplayed = "#InfernoCanto_1"; + cantoDisplayed = "#InfernoCanto_1"; var prevCantoDisplayed = "#InfernoCanto_1"; var contextLength = 3; @@ -551,7 +554,10 @@ $(document).ready(function() { //$("#" + $(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 ") + } drawMinimap("#" + $(this).attr('name').replace(" ", "_"), false) @@ -656,6 +662,8 @@ $(document).ready(function() { return (cantica + '_' + mcanto.split('_')[1]) } + + function loadPeriodo(idperiodo) { @@ -694,24 +702,6 @@ $(document).ready(function() { return false } - /*function loadFrase(idperiodo, funzionefrase) { - - if (!isPeriodoInCanto(idperiodo, cantoDisplayed)) - return - - $(cantoDisplayed).find(' .' + idperiodo).each(function() { - var pstp = $(this).attr('class').split(" ")[1] - - if (pstp.trim() == funzionefrase) - $(this).css('color', colorssp(mapsynttypestopalette[pstp])); - }) - - minim.contents().find(' .' + idperiodo).each(function() { - var mpstp = $(this).attr('class').split(" ")[1] - if (mpstp.trim() == funzionefrase) - $(this).css('color', colorssp(mapsynttypestopalette[mpstp])); - }) - }*/ function loadClausola(idperiodo, funzionefrase, fromn, ton) { @@ -897,6 +887,8 @@ $(document).ready(function() { if (canto.length == 1) canto = '0' + canto //commentsJson = getVersiConCitazioniJson(cantica, canto) + + var mresult =await getVersiConCitazioni(cantica, canto) commentsSQL= Object.groupBy(mresult, ({ VersoCitazione }) => VersoCitazione); @@ -919,7 +911,7 @@ $(document).ready(function() { } drawMinimap("#" + idminimap, false) - console.log (commentsSQL) + //console.log (commentsSQL) } @@ -1500,7 +1492,15 @@ $(document).ready(function() { //manageMM (cantoDisplayed) //var currPage = 0; //var latestPhraseId = ""; + var telive=getListaRis() + for (var ve of telive) { + let idve = ve + $(ve).removeClass("mark ") + minim.contents().find(ve).removeClass("mark ") + } + cleanListaRis() drawMinimap(cantoDisplayed, true) + } /*function manageMM(name) { @@ -1526,7 +1526,7 @@ $(document).ready(function() { else unitaRicerca = jsonQuery['unitaRicerca'] if (unitaRicerca=='riferimenti'){ - queryRiferimenti(jsonQuery.Riferimento100) + var mres=queryRiferimenti(jsonQuery.Riferimento100, cantoDisplayed) return } console.log("got json query, unita ricerca: " + unitaRicerca) @@ -1632,17 +1632,6 @@ $(document).ready(function() { - //manage sentence and clauses - - /* function showSentenceStructure(sentence) { - - sid = '.' + sentence.toString() - //console.log(sid) - $(sid).addClass('text-info font-italic') - - } - */ - function resetSentenceStructure(sentence) { $(" ." + sentence).removeClass('text-info font-italic') @@ -1735,6 +1724,10 @@ $(document).ready(function() { } } + /*var telive=getListaRis() + for (var tel of telive){ + $(tel).addClass("mark ") + }*/ } diff --git a/js/dataMgr.js b/js/dataMgr.js index bc5266c..985a0d6 100644 --- a/js/dataMgr.js +++ b/js/dataMgr.js @@ -1,12 +1,15 @@ import * as duckdb from 'https://cdn.jsdelivr.net/npm/@duckdb/duckdb-wasm@1.29.0/+esm'; + + //import * as arrow from 'https://cdn.skypack.dev/apache-arrow@9' -var rif_commentatori=[]; -var rif_autori=[]; -var rif_areetematiche=[]; -var rif_fonti=[]; - +var rif_commentatori = []; +var rif_autori = []; +var rif_areetematiche = []; +var rif_fonti = []; +var listaidversi = [] +const cantobadgeclassBis = 'badge badge-outline-warning badge-pill' const JSDELIVR_BUNDLES = duckdb.getJsDelivrBundles(); @@ -14,7 +17,7 @@ const JSDELIVR_BUNDLES = duckdb.getJsDelivrBundles(); const bundle = await duckdb.selectBundle(JSDELIVR_BUNDLES); const worker_url = URL.createObjectURL( - new Blob([`importScripts("${bundle.mainWorker}");`], {type: 'text/javascript'}) + new Blob([`importScripts("${bundle.mainWorker}");`], { type: 'text/javascript' }) ); // Instantiate the asynchronus version of DuckDB-wasm @@ -24,7 +27,7 @@ const db = new duckdb.AsyncDuckDB(logger, worker); await db.instantiate(bundle.mainModule, bundle.pthreadWorker); URL.revokeObjectURL(worker_url); -console.log ('datamgr init done') +console.log('datamgr init done') //await db.registerFileURL('remote.parquet', 'http://localhost:8000/js/data/riferimenti_3.parquet', DuckDBDataProtocol.HTTP, false); @@ -40,76 +43,74 @@ await conn.query(` SELECT * FROM "https://lida.dantenetwork.it/js/data/riferimenti_3.parquet"; `); -var table=await conn.query(` +var table = await conn.query(` select distinct Aut from riferimenti order by Aut COLLATE NOCASE; `); const result = table.toArray().map((row) => row.toJSON()); -rif_autori=result.map((x) => x['Aut']); +rif_autori = result.map((x) => x['Aut']); //console.log(rif_autori) -var table=await conn.query(` +var table = await conn.query(` select distinct Com from riferimenti; `); const result2 = table.toArray().map((row) => row.toJSON()); -rif_commentatori=result2.map((x) => x['Com']); +rif_commentatori = result2.map((x) => x['Com']); -/*rif_commentatori.sort((a, b) => { - var sre= (a.replace(/^\D+/g, '')-b.replace(/^\D+/g, '')) - console.log(sre) - return sre -})*/ -//console.log(rif_commentatori) - - -var table=await conn.query(` +var table = await conn.query(` select distinct CA from riferimenti order by CA; `); const result3 = table.toArray().map((row) => row.toJSON()); -rif_areetematiche= result3.map((x) => x['CA']); +rif_areetematiche = result3.map((x) => x['CA']); -var table1=await conn.query(` - select distinct TiFo from riferimenti; +var table1 = await conn.query(` + select distinct TiFo from riferimenti order by TiFo COLLATE NOCASE; `); const result4 = table1.toArray().map((row) => row.toJSON()); -rif_fonti=result4.map((x) => x['TiFo']); +rif_fonti = result4.map((x) => x['TiFo']); //console.log(rif_fonti) await conn.close(); console.log('done') +export function getListaRis(){ + return listaidversi; +} +export function cleanListaRis(){ + listaidversi=[]; +} export function getFontiS() { - + return rif_fonti } export function getAreeTematicheS() { - + return rif_areetematiche } export function getAutoriFontiCitazioniS() { - + return rif_autori } export function getCommentatoriS() { - + return rif_commentatori } export async function getVersiConCitazioni(canticapar = '', cantopar = '') { - + //let citcantiche = ['Inferno', 'Purgatorio', 'Paradiso'] if (canticapar == '') { return } - const tconn = await db.connect(); - var table=await tconn.query(` + const tconn = await db.connect(); + var table = await tconn.query(` select Ann as Annotazione, Com as Commentario, FrN as frammentoNota, AC as AutoreCitazione, F as FonteCitazione, LF as LuogoFonteCitazione, NF as NotaFonteCitazione, TF as TestoFonteCitazione, UF as URLFonteCitazione, NaRi as NaturaRiferimento, @@ -120,49 +121,82 @@ export async function getVersiConCitazioni(canticapar = '', cantopar = '') { from riferimenti where Cantica='${canticapar}' and Canto='${cantopar}' order by verso; `); - + var result4 = table.toArray().map((row) => row.toJSON()); - - + + await tconn.close(); return result4 - + } -export async function queryRiferimenti(filtro){ - if(filtro==null){ +export async function queryRiferimenti(filtro, cid) { + if (filtro == null) { return } console.log(filtro) - const tconn= await db.connect(); - var querytl='select Cantica, Canto, Verso from riferimenti' - var queryfi=' where ' - if (filtro.Commentatore!=null && filtro.Commentatore.trim()!='all') - queryfi+="Com='"+filtro.Commentatore.trim()+"'" + const tconn = await db.connect(); + var querytl = 'select Cantica, Canto, Verso from riferimenti' + var queryfi = ' where ' + if (filtro.Commentatore != null && filtro.Commentatore.trim() != 'all') + queryfi += "Com='" + filtro.Commentatore.trim() + "'" else - queryfi+="Com like '%'" - if (filtro.Autore_Fonte!=null && filtro.Autore_Fonte.trim()!='all') - queryfi+=" and Aut='"+filtro.Autore_Fonte.trim()+"'" + queryfi += "Com like '%'" + if (filtro.Autore_Fonte != null && filtro.Autore_Fonte.trim() != 'all') + queryfi += " and Aut='" + filtro.Autore_Fonte.trim() + "'" + if (filtro.Fonte != null && filtro.Fonte.trim() != 'all') + queryfi += " and TiFo='" + filtro.Fonte.trim() + "'" - var rs= await tconn.query(querytl+queryfi) + if (filtro.Area_Tematica != null && filtro.Area_Tematica.trim() != 'all') + queryfi += " and CA='" + filtro.Area_Tematica.trim() + "'" + + if (filtro.Tipo_Riferimento != null && filtro.Tipo_Riferimento.trim() != 'all') + queryfi += " and NaRi='" + filtro.Tipo_Riferimento.trim().toUpperCase() + "'" + + var rs = await tconn.query(querytl + queryfi) var result4 = rs.toArray().map((row) => row.toJSON()); - + await tconn.close(); - var resxcantica= Object.groupBy(result4, ({ Cantica }) => Cantica); - for (var cantica in resxcantica){ + var resxcantica = Object.groupBy(result4, ({ Cantica }) => Cantica); + + 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 i = 1; + if (cantica == 'Purgatorio') + i = 2 + if (cantica == 'Paradiso') + i = 3 var spanbadgecantica = $(''); spanbadgecantica.attr('class', 'badge badge-warning badge-pill mx-2'); spanbadgecantica.append(resxcantica[cantica].length) spanbadgecantica.appendTo($('#cantica' + i + '-badge')) console.log(spanbadgecantica) - + var tmp = resxcantica[cantica] + var resxcanto = Object.groupBy(tmp, ({ Canto }) => Canto); + for (var canto in resxcanto) { + var tmpv = resxcanto[canto] + var spanbadge = $(''); + spanbadge.attr('class', cantobadgeclassBis); + spanbadge.append(resxcanto[canto].length) + 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] + //console.log(myveid) + listaidversi.push(myveid) + if (cid.includes(cantica) && numcid == canto) + $(myveid).addClass("mark ") + } + + } + drawMinimap(cid, true) + } /*console.log(resxcantica)*/ - return - + return listaidversi + } diff --git a/js/syntgraph_5.0.js b/js/syntgraph_5.0.js index bd2e5e7..327d463 100644 --- a/js/syntgraph_5.0.js +++ b/js/syntgraph_5.0.js @@ -5,7 +5,7 @@ import commarc from "https://hdnlab1.isti.cnr.it/d3search/node_modules/commarcdiag/index.js";*/ import {Runtime, Library, Inspector} from "https://lida.dantenetwork.it/node_modules/commarcdiag/runtime.js"; import commarc from "https://lida.dantenetwork.it/node_modules/commarcdiag/index.js"; -import {formaClass, lisid, lsentid, vistaPeriodi, listaPeriodiRisultato, listaClausoleRisultato} from "./browseMgr_5.0.js" +import {formaClass, lisid, lsentid, vistaPeriodi, listaPeriodiRisultato, listaClausoleRisultato, cantoDisplayed} from "./browseMgr_5.0.js" import { fillStructCard, emptyStructCard } from "./script_5.0.js"; const iframe = document.getElementsByClassName("minimap__content");