bug fixing, query sulla posizione in progress

This commit is contained in:
cesare 2025-03-06 16:19:31 +01:00
parent 79b18d197a
commit 371ba234db
2 changed files with 75 additions and 9 deletions

View File

@ -1405,7 +1405,8 @@ $(document).ready(function() {
var details = [];
var lemma = categ.split('#')[1].replace("^", " ") //il lemma
//var lemma = categ.split('#')[1].replace("^", " ") //il lemma
var lemma = categ.split('#')[1].split("^") //il lemma
var categoria = categ.split('#')[0] // la categoria
var details = getHoverContent(categoria);
@ -1422,13 +1423,13 @@ $(document).ready(function() {
}
var ile=-1
for (var detail of details) {
ile+=1
myitems = detail.split(',');
catgramm = '<div class="ttContent">';
subcatgramm = '<p> <b> ' + lemma + ' - </b><i>' + myitems[0] + ',' + myitems.slice(1) + '</i></p></div>';
subcatgramm = '<p> <b> ' + lemma[ile] + ' -</b><i> ' + myitems[0] + ',' + myitems.slice(1) + '</i></p></div>';
popoverText = popoverText + catgramm + subcatgramm;
}
@ -2143,7 +2144,7 @@ $(document).ready(function() {
resSent.add(fraseItems[0] + '-' + fraseItems[3] + '-' + fraseItems[1] + '-' + fraseItems[2]);
//if (!resSent.has(fraseItems[0] + '-' + fraseItems[3])) {
let tmpocc = fraseItems.slice(-1)
if (resClauses.filter(clocc => clocc == tmpocc[0]).length == 0 || tmpocc[0] == '') {
resClauses.push(tmpocc[0]);
//resSent.add(fraseItems[0] + '-' + fraseItems[3]+'-'+fraseItems[1] + '-' + fraseItems[2]);
@ -2153,6 +2154,7 @@ $(document).ready(function() {
resultsInCanto.push(fraseItems[4] + fraseItems[5]);
}
}
listaClausoleRisultato = Array.from(resSent);
}
@ -2342,6 +2344,9 @@ $(document).ready(function() {
}
}
}
/*
* REGOLE DI PARSING PER VISUALIZZAZIONE CATEGORIE GRAMMATICALI
*/
@ -2570,16 +2575,16 @@ _ "whitespace"= " "*
var pronome = `
Expression = head:(Filtro){return 'Pronome,'+head.join()}
Filtro= fhead:("p")? tail:( tipo_pronome? classe_pronome? genere_pronome?
Filtro= fhead:("p")? tail:( tipo_pronome* classe_pronome? genere_pronome?
numero_pronome? forma_pronome? funzione_pronome? tiporiflessivi?){return tail}
tipo_pronome= "p" {return(' Pronome Personale')}/
"d" {return(" Pronome Dimostrativo")}/
"f" {return(" Pronome Riflessivo")}/
"s" {return(" Pronome Possessivo")}/
"d" {return(" Pronome Dimostrativo")}/
"r" {return(" Pronome Relativo")}/
"i" {return(" Pronome Indefinito")}/
"r" {return(" Pronome Relativo")}/
"t" {return(" Pronome Interrogativo")}/
"e" {return(" Pronome Esclamativo")}/
"n" {return(" Pronome Numerale")}
@ -2812,6 +2817,7 @@ _ "whitespace"= " "*
var parserCitazione = peg.generate(citazione);
var parserOnomastica = peg.generate(onomastica);
var parserCongiunzione = peg.generate(congiunzione);
});

View File

@ -121,8 +121,29 @@ const maptypes = {
"ParentheticalCoI": "Coordinata alla parentetica I grado", "SubVII": "Subordinata VII grado"
}
/*
* regole di parsing per il filtro
*/
const filterposition=`
Filter = head:(interval? val?) {return head}
interval= limitinf? limitsup?
limitsup= head:(Integer) "]" {return head}
limitinf = "[" tail:(Integer) {return tail}
val = vhead:(Integer){return vhead}
Integer "integer"= _ [0-9]+ { return parseInt(text(), 10); }
_ "whitespace"= " "*`
//Filtro posizione
var parserFiltroPosizione=peg.generate(filterposition);
var orlprefix = 'https://dantenetwork.it/ontology/orl/current/'
var syntitprefix = 'https://dantenetwork.it/ontology/syntit/current/'
@ -812,7 +833,8 @@ function buildStatementClause(clause, parsedquery, whereind, theplace, token, op
if (op == 'OR') {
clausePosCoalesceStatement['expression']['args'].push(JSON.parse(tmppos))
var orfilter = JSON.parse(clausepos_gr_filter.replaceAll("pos_", "pos" + idtokenor))
if (orfilters.length == 0 || !orfilters.includes(JSON.stringify(orfilter))) {
if (parsedquery['where'].at(-1).type == "filter") {
var texp = JSON.parse(JSON.stringify(parsedquery['where'].at(-1).expression))
@ -832,7 +854,45 @@ function buildStatementClause(clause, parsedquery, whereind, theplace, token, op
else {
parsedquery['variables'].push(JSON.parse(tmppos))
var andfilter = clausepos_gr_filter.replaceAll("pos_", "pos" + token)
//TEST
if (document.querySelector('#Posizione_fr')!=null &&
document.querySelector('#Posizione_fr').value.trim()!=''){
var posrestr=document.querySelector('#Posizione_fr').value
var pospar=parserFiltroPosizione.parse(posrestr.trim())
if (pospar[1]!=null){
andfilter=andfilter.replace('<=', '=')
andfilter=andfilter.replace('clfr', 'clfr+'+(parseInt(pospar[1])-1))
}
else{
var inter=pospar[0]
if (inter[0]!=null){
andfilter=andfilter.replace('clfr', 'clfr+'+(parseInt(inter[0])-1))
}
if (inter[1]!=null){
var newarg=`{
"type": "operation",
"operator": ">",
"args": [
{
"termType": "Variable",
"value": "clfr"
},
{
"termType": "Variable",
"value": "pos_"
}
]
}`
newarg=newarg.replace("clfr", "clfr+"+parseInt(inter[1]))
var tmpij=JSON.parse(andfilter)
tmpij.expression.args.push(JSON.parse(newarg))
andfilter=JSON.stringify(tmpij)
}
}
}
parsedquery['where'].push(JSON.parse(andfilter))
}