gestione liste

This commit is contained in:
cesare 2023-02-09 13:20:25 +01:00
parent 4c7af575d8
commit fa9aecd1e2
3 changed files with 525 additions and 453 deletions

View File

@ -228,7 +228,11 @@ $(" ."+formaClass).hover(function(idx, element) {
}
});
jQuery(document).delegate(' .lista-risultati', 'click', function(e) {
var cantica=$(this).siblings(' .btn-link')[0];
var canticaid=$(cantica).attr('id')
console.log('fava lista risultati '+canticaid)
});
jQuery(document).delegate('.navig-canto', 'click', function(e) {
resetFrasi()
@ -740,9 +744,10 @@ $(" ."+formaClass).hover(function(idx, element) {
let count = resultsInCantica.reduce((n, x) => n + (x === cantica), 0);
if (count>0){
var spanbadgecantica = $('<span />');
spanbadgecantica.attr('class', 'badge badge-primary badge-pill ml-1');
spanbadgecantica.append(count)
spanbadgecantica.appendTo($('#cantica' + i))
spanbadgecantica.attr('class', 'badge badge-primary badge-pill ml-1 lista-risultati');
spanbadgecantica.append(count +' >')
//spanbadgecantica.appendTo($('#cantica' + i))
$('#cantica' + i).after(spanbadgecantica)
}
}
//aggiunge badge con totale risultati accanto ai canti

View File

@ -69,7 +69,7 @@ document.addEventListener("dblclick", function(e){
if (name === "sentenceStructArcs")
return new Inspector(document.querySelector("#displayinfo"));
});
main.redefine('width', 650);
main.redefine('width', 580);
main.redefine('height', 500);
//main.redefine("links", d3.csv("https://hdnlab1.isti.cnr.it/d3search/node_modules/commarcdiag/files/parsint_mod_completo_pre_new_4.csv", d3.autoType));

View File

@ -1,5 +1,5 @@
tqvpvs=`
tqvpvs = `
PREFIX ecrm: <http://erlangen-crm.org/current/>
PREFIX orl: <https://dantenetwork.it/ontology/orl/current/>
PREFIX ontolex: <http://www.w3.org/ns/lemon/ontolex#>
@ -43,7 +43,7 @@ LIMIT 20
// Per restituire i versi di una cantica
var qVersiCantica=`
var qVersiCantica = `
PREFIX ecrm: <http://erlangen-crm.org/current/>
PREFIX orl: <https://dantenetwork.it/ontology/orl/current/>
PREFIX ontolex: <http://www.w3.org/ns/lemon/ontolex#>
@ -201,7 +201,7 @@ WHERE {
###condizioni sintattiche end
}`
// ?cl syntit:hasClauseType syntit:Dichiarativa.
// ?cl syntit:hasClauseType syntit:Dichiarativa.
ontoSparqlQuerySynt = `
PREFIX ecrm: <http://erlangen-crm.org/current/>
@ -237,41 +237,107 @@ WHERE {
//colori
var colorssp = d3.scaleQuantize()
.domain([0,17])
.domain([0, 17])
.range(["#3288bd", "#66c2a5", "#e41a1c", "#4daf4a", "#984ea3", "#d53e4f", "#f46d43", "#ABDDA4",
"#E6F598", "#FFFFBF", "#FEE08B", "#FDAE61", "#F46D43",
"#D53E4F", "#9E0142", "#e377c2", "#7f7f7f", "#bcbd22"]);
const mapsynttypestopalette={"Ma": 0, "SubI": 1, "SubII": 3, "SubIII": 4, "Co": 5,
const mapsynttypestopalette = {
"Ma": 0, "SubI": 1, "SubII": 3, "SubIII": 4, "Co": 5,
"CoI": 9, "CoII": 10, "SubIV": 5, "SubV": 6, "ParentethicalClause": 17,
"CoIII": 11, "ParentheticalCo":14, "PseudoCo": 16, "SubVI": 7 , "CoIV": 12,
"CoV": 13, "ParentheticalCoI": 15, "SubVII": 8}
"CoIII": 11, "ParentheticalCo": 14, "PseudoCo": 16, "SubVI": 7, "CoIV": 12,
"CoV": 13, "ParentheticalCoI": 15, "SubVII": 8
}
const maptypes={"Ma": "Principale", "SubI": "Subordinata I grado", "SubII": "Subordinata II grado", "SubIII": "Subordinata III grado", "Co": "Coordinata",
const maptypes = {
"Ma": "Principale", "SubI": "Subordinata I grado", "SubII": "Subordinata II grado", "SubIII": "Subordinata III grado", "Co": "Coordinata",
"CoI": "Coordinata I grado", "CoII": "Coordinata II grado", "SubIV": "Subordinata IV grado", "SubV": "Subordinata V grado",
"ParentethicalClause": "Parentetica", "CoIII": "Coordinata III grado", "ParentheticalCo":"Coordinata alla parentetica",
"PseudoCo": "Pseudo-coordinata", "SubVI": "Subordinata VI grado" , "CoIV": "Coordinata IV grado", "CoV": "Coordinata V grado",
"ParentheticalCoI": "Coordinata alla parentetica I grado", "SubVII": "Subordinata VII grado"}
"ParentethicalClause": "Parentetica", "CoIII": "Coordinata III grado", "ParentheticalCo": "Coordinata alla parentetica",
"PseudoCo": "Pseudo-coordinata", "SubVI": "Subordinata VI grado", "CoIV": "Coordinata IV grado", "CoV": "Coordinata V grado",
"ParentheticalCoI": "Coordinata alla parentetica I grado", "SubVII": "Subordinata VII grado"
}
orlprefix = 'https://dantenetwork.it/ontology/orl/current/'
syntitprefix='https://dantenetwork.it/ontology/syntit/current/'
syntitprefix = 'https://dantenetwork.it/ontology/syntit/current/'
//var stringInSparql= false;
/*
function writesparqlquery(query) {
return (query);
}
*/
function getFormaContext(formaid) {
var context = []
var cantica = 1;
var listaforme = formeprima;
var minpos = 0;
var offset = 0
var maxpos = 0;
if (parseInt(formaid) > 33373 && parseInt(formaid) < 66588) {
listaforme = formeseconda;
cantica = 2;
offset = 33374
}
if (parseInt(formaid) > 66587 && parseInt(formaid) < 99314) {
listaforme = formeterza;
cantica = 3;
offset = 66588
}
if (parseInt(formaid) > 99314 || parseInt(formaid) < 0){
return [];
}
maxpos = listaforme.length - 1
var pos = 0
for (i=0; i<listaforme.length; i++){
var tmpos=listaforme[i].split('_')[2]
if (tmpos==formaid){
pos=i;
break;
}
}
var item = listaforme[pos].split('_');
var numverso = item[3]
//var forma=item[0]
//var canto=item[1]
var contextinf = Math.max(minpos, parseInt(pos) - 30)
var contextsup = Math.min(maxpos, parseInt(pos) + 30)
for (j = contextinf; j < contextsup + 1; j++) {
var tmpform = listaforme[j].split('_');
if ((tmpform[3] > parseInt(numverso) - 2) && (tmpform[3] < parseInt(numverso) + 2)) {
var contextitem = {}
contextitem['testo'] = tmpform[0];
contextitem['verso'] = tmpform[3];
contextitem['canto'] = tmpform[1];
contextitem['cantica'] = cantica;
contextitem['posizione'] = tmpform[2];
contextitem['catg'] = tmpform[4];
contextitem['periodo'] = cantica + '_' + tmpform[1] + '_' + tmpform[5];
contextitem['funzperiodo'] = tmpform[6];
context.push(contextitem);
}
}
return context;
}
//restituisce la query per ottenere tutti i versi di una cantica: NON USATA: RIMUOVERE
function versiCantica(cantica) {
var SparqlParser = sparqljs.Parser;
var parser = new SparqlParser();
parsedqVersiCantica= parser.parse(qVersiCantica);
parsedqVersiCantica.where[1].expression.args[1].value =cantica;
parsedqVersiCantica = parser.parse(qVersiCantica);
parsedqVersiCantica.where[1].expression.args[1].value = cantica;
return (parsedqVersiCantica)
}
@ -333,19 +399,19 @@ var unionop = `{"union": {"type": "union", "patterns":[]}, "bgp": {"type": "bgp"
function parseJsonClause(op, tokens, nowhere) {
//alert(op)
var idp=-1
if (nowhere[0].type == 'filter' && nowhere[0].expression.args[0].value == 'Rappresentazione'){
var idp = -1
if (nowhere[0].type == 'filter' && nowhere[0].expression.args[0].value == 'Rappresentazione') {
nowhere.splice(0, 1)
}
if (op.trim() == 'OR') {
//nowhere.unshift(JSON.parse(unionop)['union']);
nowhere.splice(1, 0, JSON.parse(unionop)['union'])
idp=1
idp = 1
}
if (op.trim() == 'AND') {
//nowhere.push(JSON.parse(unionop)['group']);
nowhere.splice(1, 0, JSON.parse(unionop)['group'])
idp=1
idp = 1
}
for (var mtoken in tokens) {
@ -353,7 +419,7 @@ function parseJsonClause(op, tokens, nowhere) {
if ('TERM' in te_op) {
cond = theguiQ[te_op['TERM']]
//mywhere=nowhere[idp].patterns;
multipleCondSpQuery = buildStatementClause (cond, multipleCondSpQuery, -1, nowhere[idp].patterns)
multipleCondSpQuery = buildStatementClause(cond, multipleCondSpQuery, -1, nowhere[idp].patterns)
}
else
@ -389,7 +455,7 @@ function buildSPQuery(guiquery) {
function buildSQ(stquery) {
stringInSparql= false;
stringInSparql = false;
var SparqlParser = sparqljs.Parser;
var parser = new SparqlParser();
//Prendo la query SPARQL template
@ -400,14 +466,14 @@ function buildSQ(stquery) {
if (stquery['EsprLogica'] != null && stquery['EsprLogica'].length > 1) {
parsedquery=parser.parse(ontoSparqlQueryMultCond)
parsedquery = parser.parse(ontoSparqlQueryMultCond)
buildSPQuery(stquery)
return multipleCondSpQuery;
}
if (stquery['EsprLogica'] != null && stquery['EsprLogica'] != '' && stquery['EsprLogica'].length == 1) {
clause = stquery['EsprLogica']
if (stquery[clause]['TipoClausola']=='Sintattico'){
if (stquery[clause]['TipoClausola'] == 'Sintattico') {
parsedquery = parser.parse(ontoSparqlQuerySynt);
return buildSintacticClause(stquery[clause], parsedquery, 2)
}
@ -415,20 +481,20 @@ function buildSQ(stquery) {
return (myquery)
}
if(stquery['Clausola0']['queryText']!= ""){
searchtext=stquery['Clausola0']['queryText']
strval=searchtext
if(stquery['Clausola0']['opzioni_testo']=='parola'){
if (stquery['Clausola0']['queryText'] != "") {
searchtext = stquery['Clausola0']['queryText']
strval = searchtext
if (stquery['Clausola0']['opzioni_testo'] == 'parola') {
strval = "^" + searchtext.trim() + "$";
}
if(stquery['Clausola0']['opzioni_testo']=='sottostringa'){
if (stquery['Clausola0']['opzioni_testo'] == 'sottostringa') {
strval = searchtext.trim();
}
if(stquery['Clausola0']['opzioni_testo']=='suffisso'){
strval = searchtext.trim()+ "$";
if (stquery['Clausola0']['opzioni_testo'] == 'suffisso') {
strval = searchtext.trim() + "$";
}
if(stquery['Clausola0']['opzioni_testo']=='prefisso'){
strval = "^" +searchtext.trim();
if (stquery['Clausola0']['opzioni_testo'] == 'prefisso') {
strval = "^" + searchtext.trim();
}
//COMPLETARE con regexp
@ -446,18 +512,18 @@ function buildSQ(stquery) {
}
function buildStatementClause (clause, parsedquery, whereind, theplace) {
function buildStatementClause(clause, parsedquery, whereind, theplace) {
//var tmpgroup=JSON.parse(unionop)['group']
if (clause['TipoClausola']=="Sintattico"){
if (clause['TipoClausola'] == "Sintattico") {
//tmpgroup=JSON.parse(unionop)['group']
tmpgroup=JSON.parse(syntgroup)
tmpgroup = JSON.parse(syntgroup)
}
else tmpgroup=JSON.parse(morphgroup);
else tmpgroup = JSON.parse(morphgroup);
if (clause['queryText']!=null && clause['queryText'].trim() != ""){
if (clause['queryText'] != null && clause['queryText'].trim() != "") {
//theplace.push(JSON.parse(unionop)['group']);
var stmt=buildFilterStatement(clause['lemma_forma'], clause['queryText'].trim(), clause['opzioni_testo'])
var stmt = buildFilterStatement(clause['lemma_forma'], clause['queryText'].trim(), clause['opzioni_testo'])
tmpgroup.patterns.push(stmt)
tmpgroup.patterns.push(JSON.parse(unionop)['bgp']);
tmpgroup.patterns.at(-1).triples.push(JSON.parse(writtenrepresentation))
@ -493,19 +559,19 @@ function buildStatementClause (clause, parsedquery, whereind, theplace) {
}
}
}
if (clause['TipoClausola']=="Sintattico"){
if (clause['TipoClausola'] == "Sintattico") {
tmpgroup.patterns.push(JSON.parse(unionop)['bgp']);
var functS=clause['functionSyntax'];
var typeS=clause['typeSyntax0']
console.log(functS+' '+typeS)
if (functS != null && functS != ".+"){
var myf=buildsyntClause(funzione_clausola[functS])
if (myf!='')
var functS = clause['functionSyntax'];
var typeS = clause['typeSyntax0']
console.log(functS + ' ' + typeS)
if (functS != null && functS != ".+") {
var myf = buildsyntClause(funzione_clausola[functS])
if (myf != '')
tmpgroup.patterns.at(-1).triples.push(myf)
}
if (typeS != null && typeS != ".+"){
myf=buildsyntClause(macrotipi_sint[typeS])
if (myf!='')
if (typeS != null && typeS != ".+") {
myf = buildsyntClause(macrotipi_sint[typeS])
if (myf != '')
tmpgroup.patterns.at(-1).triples.push(myf)
}
}
@ -521,7 +587,7 @@ function buildSintacticClause(clause, parsedquery, whereind) {
if (clause['queryText'].trim() != "") {
var strval= getStringFilter(clause['queryText'].trim(), clause['opzioni_testo'])
var strval = getStringFilter(clause['queryText'].trim(), clause['opzioni_testo'])
parsedquery.where[0].expression.args[1].value = strval;
if (clause['lemma_forma'] == 'lemma')
parsedquery.where[0].expression.args[0].value = "lm";
@ -531,26 +597,26 @@ function buildSintacticClause(clause, parsedquery, whereind) {
//remove the filter for text CHANGE!
parsedquery.where.splice(0, 1)
parsedquery.where.splice(0, 1)
parsedquery.where[0].triples.splice(2,1)
parsedquery.where[0].triples.splice(1,1)
parsedquery.where[0].triples.splice(0,1)
whereind=whereind-1
parsedquery.where[0].triples.splice(2, 1)
parsedquery.where[0].triples.splice(1, 1)
parsedquery.where[0].triples.splice(0, 1)
whereind = whereind - 1
}
var functS=clause['functionSyntax'];
var typeS=clause['typeSyntax0']
console.log(functS+' '+typeS)
if (functS != null && functS != ".+"){
var functS = clause['functionSyntax'];
var typeS = clause['typeSyntax0']
console.log(functS + ' ' + typeS)
if (functS != null && functS != ".+") {
//console.log('functS '+funzione_clausola['princ'])
var myf=buildsyntClause(funzione_clausola[functS])
var myf = buildsyntClause(funzione_clausola[functS])
if (myf=='')
if (myf == '')
return parsedquery
parsedquery.where.at(-1).triples.push(myf);
}
if (typeS != null && typeS != ".+"){
myf=buildsyntClause(macrotipi_sint[typeS])
if (typeS != null && typeS != ".+") {
myf = buildsyntClause(macrotipi_sint[typeS])
parsedquery.where.at(-1).triples.push(myf);
}
return parsedquery
@ -558,7 +624,7 @@ function buildSintacticClause(clause, parsedquery, whereind) {
function buildClause(clause, parsedquery, whereind) {
if (clause['TipoClausola']=='Sintattico')
if (clause['TipoClausola'] == 'Sintattico')
return buildSintacticClause(clause, parsedquery, whereind)
@ -597,7 +663,7 @@ function buildClause(clause, parsedquery, whereind) {
if (clause['queryText'].trim() != "") {
var strval= getStringFilter(clause['queryText'].trim(), clause['opzioni_testo'])
var strval = getStringFilter(clause['queryText'].trim(), clause['opzioni_testo'])
parsedquery.where[0].expression.args[1].value = strval;
if (clause['lemma_forma'] == 'lemma')
parsedquery.where[0].expression.args[0].value = "lm";
@ -605,14 +671,14 @@ function buildClause(clause, parsedquery, whereind) {
else {
if (parsedquery.where[0].type == 'filter' && parsedquery.where[0].expression.args[0].value == 'Rappresentazione')
parsedquery.where.splice(0, 1)
whereind=whereind-1
whereind = whereind - 1
}
return parsedquery
}
function getStringFilter(filter, opzione){
function getStringFilter(filter, opzione) {
var strval = "^" + filter.trim() + "$";
if (opzione != "")
switch (opzione) {
@ -631,10 +697,10 @@ function getStringFilter(filter, opzione){
default:
strval = "^" + filter.trim() + "$";
};
};
return (strval)
}
function buildFilterStatement(target, filter, opzione){
function buildFilterStatement(target, filter, opzione) {
var filtertemplate = `{
"type": "filter",
@ -669,20 +735,20 @@ function buildFilterStatement(target, filter, opzione){
}`
var statement = JSON.parse(filtertemplate)
/*
if (filter.trim().slice(-1) !== '*')
var statement = JSON.parse(filtertemplate)
/*
if (filter.trim().slice(-1) !== '*')
strval = "^" + filter.trim() + "$";
else
else
strval = filter.trim().slice(0, -1)
*/
var strval = getStringFilter(filter, opzione);
var strval = getStringFilter(filter, opzione);
statement.expression.args[1].value = strval;
if (target == 'lemma')
statement.expression.args[1].value = strval;
if (target == 'lemma')
statement.expression.args[0].value = "lm";
return (statement)
return (statement)
}
function buildsyntClause(sttmnt) {
@ -1036,10 +1102,10 @@ data21 = `{"verbovolgare": {"subject": {"termType": "Variable", "value":"form"},
}
`
writtenrepresentation=`{"subject": {"termType": "Variable", "value":"form"}, "predicate": {"termType":"NamedNode", "value": "http://www.w3.org/ns/lemon/ontolex#writtenRep"}, "object": {"termType": "Variable", "value": "Rappresentazione"}}`
writtenrepresentation = `{"subject": {"termType": "Variable", "value":"form"}, "predicate": {"termType":"NamedNode", "value": "http://www.w3.org/ns/lemon/ontolex#writtenRep"}, "object": {"termType": "Variable", "value": "Rappresentazione"}}`
var morphgroup=`{"type": "group",
var morphgroup = `{"type": "group",
"patterns": [{"type": "bgp",
"triples": [
{"subject": {"termType": "Variable","value": "form"},
@ -1068,7 +1134,7 @@ var morphgroup=`{"type": "group",
]
}
`
var syntgroup=` {
var syntgroup = ` {
"type": "group",
"patterns": [
{
@ -1119,8 +1185,9 @@ var syntgroup=` {
*
*/
var funzione_clausola=
{"princ": "hasClauseFunction:MainClause",
var funzione_clausola =
{
"princ": "hasClauseFunction:MainClause",
"subord i": "hasClauseFunction:SubordinateClause",
"subord ii": "",
"subord iii": "",
@ -1141,7 +1208,7 @@ var funzione_clausola=
var macrotipi_sint=
var macrotipi_sint =
{
"macro avv": "hasClauseType:Avversativa",
"macro caus": "hasClauseType:Causale",
@ -1174,7 +1241,7 @@ var macrotipi_sint=
"macro temp": "hasClauseType:Temporale"
}
var tipi_sint=
var tipi_sint =
{
"avv caus": "hasClauseType:CoordinataAvversativaCausale",
"avv comp ug": "hasClauseType:CoordinataAvversativaComparativaDiUguaglianza",