query riferimenti,contesti

This commit is contained in:
cesare 2025-02-03 14:17:23 +01:00
parent 0c331d4228
commit 15e8377e48
1 changed files with 41 additions and 37 deletions

View File

@ -175,40 +175,20 @@ export async function queryRiferimenti(filtro, cid) {
if (filtro.Testo_Nota != null && filtro.Testo_Nota.trim() != '')
queryfi += " and Ann like '%" + filtro.Testo_Nota.trim() + "%'"
if (filtro.contesto!=null){
if (filtro.contesto != null) {
var marray = JSON.parse(filtro.contesto);
console.log(marray[0].every( (val, i, arr) => val === 1 ))
if (marray[0].every( (val, i, arr) => val === 1)){
queryfi+=" and Cantica='Inferno'"
}
else{
if (marray[0].some( (val, i, arr) => val === 1)){
var tearr=marray[0].reduce(function(tearr, n, i) { if (n===1) tearr.push(i); return tearr; },[] );
for (const ic in tearr){
var canto=tearr[ic].toString()
if (tearr[ic] <10)
canto='0'+canto
if (ic==0)
queryfi+="and Cantica='Inferno' and (Canto='"+canto+"'"
else
queryfi+=" or Canto='"+canto+"'"
}
if (tearr.length)
queryfi+=")"
console.log(queryfi)
}
}
// var array = [1, 2, 3, 4, 3].reduce(function(array, n, i) { if (n===3) array.push(i); return array; },[] );
if (marray[1].every( (val, i, arr) => val === 1)){
queryfi+=" and Cantica='Purgatorio'"
}
if (marray[2].every( (val, i, arr) => val === 1)){
queryfi+=" and Cantica='Paradiso'"
var oplog=' and '
var tfi=filtroContesto(marray[0], 'Inferno', oplog)
queryfi+=tfi
if (tfi.trim()!='')
oplog=' or '
tfi=''
tfi=filtroContesto(marray[1], 'Purgatorio', oplog)
if (tfi!=''){
queryfi += tfi
oplog=' or '
}
queryfi += filtroContesto(marray[2], 'Paradiso', oplog)
}
var rs = await tconn.query(querytl + queryfi)
@ -289,3 +269,27 @@ function opzioniRiferimenti() {
});
};
function filtroContesto(marray, cantica, op) {
var filtrost = ''
if (marray.every((val, i, arr) => val === 1)) {
return " and Cantica='"+cantica+"'"
}
if (marray.some((val, i, arr) => val === 1)) {
var tearr = marray.reduce(function(tearr, n, i) { if (n === 1) tearr.push(i); return tearr; }, []);
for (const ic in tearr) {
var canto = (tearr[ic]+1).toString()
if ((tearr[ic]+1) < 10)
canto = '0' + canto
if (ic == 0)
filtrost += op+" (Cantica='"+cantica+"' and (Canto='" + canto + "'"
else
filtrost += " or Canto='" + canto + "'"
}
if (tearr.length)
filtrost += "))"
console.log(filtrost)
}
return filtrost
}