2022-12-06 18:12:57 +01:00
/ * *
*
* /
/ * n e c e s s a r i p e r i l b u n d l e :
import "./jquery-global.js" ;
require ( "../node_modules/jquery-ui-dist/jquery-ui.js" ) ;
require ( "../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js" ) ;
* /
2022-12-12 10:16:30 +01:00
var getJsonQuery ;
2022-12-06 18:12:57 +01:00
$ ( document ) . ready ( function ( ) {
//$('#multidraggable1').multidraggable();
$ ( "#dropAdvanced" ) . on ( 'click' , function ( ) {
queryJson . QueryAvanzata = "1" ;
$ ( "#simpleSearchDiv" ) . removeClass ( "d-flex" )
$ ( "#simpleSearchDiv" ) . attr ( 'style' , "display: none;" ) ;
$ ( "#collapseOptions" ) . collapse ( 'hide' ) ;
$ ( "#collapseAdvanced" ) . collapse ( 'show' ) ;
$ ( "#advancedSearchDiv" ) . addClass ( "d-flex" )
$ ( "#advancedSearchDiv" ) . attr ( 'style' , "display: flex;" ) ;
} ) ;
$ ( "#dropSimple" ) . on ( 'click' , function ( ) {
queryJson . QueryAvanzata = "0" ;
$ ( "#advancedSearchDiv" ) . removeClass ( "d-flex" )
$ ( "#advancedSearchDiv" ) . attr ( 'style' , "display: none;" ) ;
$ ( "#simpleSearchDiv" ) . addClass ( "d-flex" )
$ ( "#simpleSearchDiv" ) . attr ( 'style' , "display: flex;" ) ;
$ ( "#collapseAdvanced" ) . collapse ( 'hide' ) ;
} ) ;
$ ( "#copiaTesto" ) . prop ( "disabled" , true ) ;
// Evento: click sul bottone di copia dei risultati testuali
$ ( "#copiaTesto" ) . on ( "click" , function ( ) {
$ ( "#risultatitesto" ) . copy2clipboard ( ) ;
} ) ;
$ ( "#copiaQuery" ) . prop ( "disabled" , true ) ;
2022-12-07 13:35:45 +01:00
$ ( '#collapseLogic' ) . on ( 'hidden.bs.collapse' , function ( e ) {
if ( e . target . id == "collapseLogic" ) {
$ ( "#showLogic" ) . html ( '<span class="small">Mostra pannello</span>' ) ;
$ ( "#collapseAdvanced" ) . collapse ( 'hide' ) ;
} ;
2022-12-06 18:12:57 +01:00
} )
$ ( '#collapseLogic' ) . on ( 'shown.bs.collapse' , function ( ) {
$ ( "#showLogic" ) . html ( '<span class="small">Nascondi pannello</span>' ) ;
$ ( "#collapseAdvanced" ) . collapse ( 'show' ) ;
} )
$ ( '#collapseOptions' ) . on ( 'hidden.bs.collapse' , function ( ) {
$ ( "#showOptions" ) . html ( '<span class="small">Mostra Opzioni</span>' ) ;
} )
$ ( '#collapseOptions' ) . on ( 'shown.bs.collapse' , function ( ) {
$ ( "#showOptions" ) . html ( '<span class="small">Nascondi Opzioni</span>' ) ;
} )
$ ( '#searchToggle' ) . on ( 'change' , function ( ) {
if ( $ ( this ) . prop ( 'checked' ) ) {
queryJson . QueryAvanzata = "1" ;
$ ( "#simpleSearchDiv" ) . removeClass ( "d-flex" )
$ ( "#simpleSearchDiv" ) . attr ( 'style' , "display: none;" ) ;
$ ( "#collapseOptions" ) . collapse ( 'hide' ) ;
$ ( "#advancedSearchDiv" ) . addClass ( "d-flex" )
$ ( "#advancedSearchDiv" ) . attr ( 'style' , "display: flex;" ) ;
$ ( "#collapseAdvanced" ) . collapse ( 'show' ) ;
$ ( "#collapseLogic" ) . collapse ( 'show' ) ;
} else {
queryJson . QueryAvanzata = "0" ;
$ ( "#collapseAdvanced" ) . collapse ( 'hide' ) ;
$ ( "#advancedSearchDiv" ) . removeClass ( "d-flex" )
$ ( "#advancedSearchDiv" ) . attr ( 'style' , "display: none;" ) ;
$ ( "#simpleSearchDiv" ) . addClass ( "d-flex" )
$ ( "#simpleSearchDiv" ) . attr ( 'style' , "display: flex;" ) ;
} ;
} ) ;
// Inizializza sortable
$ ( "#sortable0" ) . sortable ( {
items : "> li" ,
handle : ".handle"
} ) ;
2022-12-07 19:02:56 +01:00
// Inizializza selectableS e definisce le funzioni
2022-12-06 18:12:57 +01:00
$ ( "#selectableS" ) . selectable ( {
filter : "td" ,
//appendTo: "#someElem",
selected : function ( event , ui ) {
contextS [ ui . selected . id . substring ( 0 , 1 ) ] [ ui . selected . id . substring ( 2 ) ] = 1 ;
//console.log(ui.selected.id.substring(0,1) + " + " + ui.selected.id.substring(2));
} ,
unselected : function ( event , ui ) {
contextS [ ui . unselected . id . substring ( 0 , 1 ) ] [ ui . unselected . id . substring ( 2 ) ] = 0 ;
//console.log(ui.unselected.id.substring(0,1) + " - " + ui.unselected.id.substring(2));
} ,
stop : function ( event , ui ) {
//console.log(context0);
parseContext ( contextS ) ;
//$("#risultatitesto").val(parseContext(context0));
}
} ) ;
2022-12-07 19:02:56 +01:00
// Inizializza selectable0 e definisce le funzioni
2022-12-06 18:12:57 +01:00
$ ( "#selectable0" ) . selectable ( {
filter : "td" ,
//appendTo: "#someElem",
selected : function ( event , ui ) {
context0 [ ui . selected . id . substring ( 0 , 1 ) ] [ ui . selected . id . substring ( 2 ) ] = 1 ;
//console.log(ui.selected.id.substring(0,1) + " + " + ui.selected.id.substring(2));
} ,
unselected : function ( event , ui ) {
context0 [ ui . unselected . id . substring ( 0 , 1 ) ] [ ui . unselected . id . substring ( 2 ) ] = 0 ;
//console.log(ui.unselected.id.substring(0,1) + " - " + ui.unselected.id.substring(2));
} ,
stop : function ( event , ui ) {
//console.log(context0);
parseContext ( context0 ) ;
//$("#risultatitesto").val(parseContext(context0));
}
} ) ;
// Evento: click sul bottone di copia della query
$ ( "#copiaQuery" ) . on ( "click" , function ( ) {
$ ( '#sparqlquery' ) . copy2clipboard ( ) ;
} ) ;
// Evento: modifica di un campo clausole
$ ( "form #lemma_forma,#queryText,#opzioni_testo" ) . on ( 'change' , function ( ) {
refreshClaList ( ) ;
} ) ;
$ ( '#cla-TabContent' ) . on ( 'change' , '.monMe' , function ( ) {
refreshClaList ( ) ;
} ) ;
// Evento: click sull'icona rimuovi clausola
$ ( '#cla-TabContent' ) . on ( 'click' , '.removeCla' , function ( ) {
var claListItemId = $ ( this ) . closest ( 'li' ) . attr ( 'id' ) ;
var claIdNum = claListItemId . substr ( 6 ) ;
claListLen -- ;
$ ( "#" + claListItemId ) [ 0 ] . remove ( ) ;
delete queryJson [ "Clausola" + claIdNum ] ;
refreshClaList ( ) ;
refreshSortables ( ) ;
} ) ;
// Evento: click sull'icona rimuovi condizione
$ ( '#sortable0' ) . on ( 'click' , '.removeCond' , function ( ) {
$ ( this ) . closest ( 'ul' ) . parent ( ) . remove ( ) ;
condListLen -- ;
refreshSortables ( ) ;
refreshConnectWith ( ) ;
if ( claListLen == 0 && condListLen == 0 ) {
$ ( '#sortable0' ) . html ( emptyClaList ) ;
}
} ) ;
// Evento: click sulla lista di clausole nel dropbox "Aggiungi clausola di tipo:" o "aggiungi condizione logica:"
$ ( '.btn-group a' ) . on ( 'click' , function ( ) {
var addClaN = $ ( this ) . attr ( 'id' ) ;
switch ( addClaN ) {
case "Grammaticale" :
tabID ++ ;
addGramCla ( 1 , tabID ) ;
break ;
case "Sintattico" :
tabID ++ ;
addSyntCla ( 1 , tabID ) ;
break ;
case "Metafore" :
tabID ++ ;
addMetaCla ( 0 , tabID ) ;
break ;
case "andCond" :
addLogicCond ( "AND" , "#sortable0" ) ;
break ;
case "orCond" :
addLogicCond ( "OR" , "#sortable0" ) ;
break ;
default :
} ;
refreshClaList ( ) ;
refreshSortables ( ) ;
} ) ;
// Evento: clausola spostata nella lista
$ ( '#sortable0' ) . sortable ( {
opacity : 0.6 ,
cursor : 'move' ,
update : function ( ) {
refreshSortables ( ) ;
}
} ) ;
// Evento: click sul checkbox di attivazione/disattivazione delle clausole
$ ( '#cla-TabContent' ) . on ( 'click' , '.claAct' , function ( ) {
var claListItemId = $ ( this ) . closest ( 'li' ) . attr ( 'id' ) ;
var tabPanelId = "#" + claListItemId . substring ( 3 ) ;
if ( $ ( this ) . prop ( 'checked' ) ) {
$ ( tabPanelId ) . attr ( "data-claActive" , 1 ) ;
$ ( this ) . closest ( 'li' ) . find ( '.clatext' ) . fadeTo ( "slow" , 1 ) ;
} else {
$ ( tabPanelId ) . attr ( "data-claActive" , 0 ) ;
$ ( this ) . closest ( 'li' ) . find ( '.clatext' ) . fadeTo ( "slow" , 0.6 ) ;
}
refreshSortables ( ) ;
} ) ;
// Evento: click sull'icona di refresh dei radio button
$ ( '#cla-TabContent' ) . on ( 'click' , '.radioReset' , function ( ) {
fSet = $ ( this ) . siblings ( 'fieldset' ) ;
if ( fSet . find ( ":checked" ) . length ) {
radioChecked = fSet . find ( ":checked" ) [ 0 ] ;
radioChecked . checked = false ;
} ;
refreshClaList ( ) ;
} ) ;
// Evento: click sull'icona di save local
$ ( '#cla-TabContent' ) . on ( 'click' , 'ion-icon[name="save-outline"]' , function ( ) {
var fileA = document . createElement ( "a" ) ;
fileA . href = window . URL . createObjectURL ( new Blob ( [ JSON . stringify ( queryJson ) ] , { type : "text/plain;charset=utf-8" } ) ) ;
fileA . download = "LiDaQuery.txt" ;
fileA . click ( ) ;
fileA . remove ( ) ;
} ) ;
// Evento: click sull'icona di load local
$ ( '#cla-TabContent' ) . on ( 'click' , 'ion-icon[name="folder-open-outline"]' , function ( ) {
$ ( '#apriFile' ) . click ( ) ;
} ) ;
$ ( "#apriFile" ) . on ( 'change' , function ( ) {
var file = $ ( this ) . prop ( 'files' ) [ 0 ] ;
var reader = new FileReader ( ) ;
reader . onload = function ( data ) {
queryJson = JSON . parse ( data . target . result )
makeUpGui ( queryJson ) ;
} ;
if ( file ) { reader . readAsText ( file ) ; }
} ) ;
// Evento: SCELTA CATEGORIA GRAMMATICALE
$ ( '#cla-TabContent' ) . on ( 'change' , 'select.catgram' , function ( e ) {
e . preventDefault ( ) ;
var tabPaneId = ( $ ( this ) . closest ( '.tab-pane' ) . attr ( "id" ) ) ;
var selectedValue = $ ( this ) . val ( ) ;
addCatgramSubcla ( tabPaneId , selectedValue ) ;
} ) ;
// Evento: Submit form
$ ( "form" ) . submit ( function ( e ) {
e . preventDefault ( ) ;
} ) ;
2022-12-12 11:58:31 +01:00
// Evento: click sui bottoni Cerca
/ * *
2022-12-06 18:12:57 +01:00
$ ( "form #searchcomm,#searchcomm2" ) . on ( 'click' , function ( e ) {
e . preventDefault ( ) ;
var qText = $ ( "form #queryText" ) [ 0 ] . value ;
if ( qText == "" && logicExprString == "" ) {
alert ( "Inserire un termine di ricerca od una clausola attiva!" ) ;
return false ;
}
const sparqlGenerator = sparqljs . Generator ;
jsonQuery = buildSQ ( queryJson ) ;
2022-12-07 19:02:56 +01:00
//queryFields = [];
//for (var i in jsonQuery.variables) {
// queryFields.push(jsonQuery.variables[i].variable.value);
//}
console . log ( jsonQuery ) ;
2022-12-12 10:16:30 +01:00
//execQuery = new sparqlGenerator().stringify(jsonQuery);
//executeQuery();
2022-12-06 18:12:57 +01:00
return false ;
} ) ;
2022-12-12 11:58:31 +01:00
* /
2022-12-06 18:12:57 +01:00
// Evento: click sul checkbox di Ricerca avanzata
$ ( '#cla-TabContent' ) . on ( 'click' , '#advanSW' , function ( ) {
if ( $ ( this ) . prop ( 'checked' ) ) {
$ ( "#cla-Advanced" ) . attr ( 'style' , "display: block;" ) ;
queryJson . QueryAvanzata = "1" ;
} else {
$ ( "#cla-Advanced" ) . attr ( 'style' , "display: none;" ) ;
queryJson . QueryAvanzata = "0" ;
//resetAdvGui();
}
} ) ;
// Evento: click sul checkbox di Definisci contesto
$ ( '#cla-TabContent' ) . on ( 'click' , '#contextSW' , function ( ) {
if ( $ ( this ) . prop ( 'checked' ) ) {
$ ( "#contextTableDiv0" ) . attr ( 'style' , "display: flex;" ) ;
//queryJson.QueryAvanzata = "1";
} else {
$ ( "#contextTableDiv0" ) . attr ( 'style' , "display: none;" ) ;
//queryJson.QueryAvanzata = "0";
}
} ) ;
// Variabili JSON per i filtri
var verboJson = {
"filtriverbo" : {
"Diatesi" : [ "Attivo" , "Passivo" ] ,
"Transitivita" : [ "Transitivo" , "Intransitivo" ] ,
"Genere" : [ "Femminile" , "Maschile" ] ,
"Numero" : [ "Singolare" , "Plurale" ] ,
"Pers" : [ "Impersonale" ] ,
"Rifl" : [ "Riflessivo" ] ,
"Coniugazione" : [ "Qualsiasi coniugazione" , "Prima coniugazione" , "Seconda coniugazione" , "Terza coniugazione" , "Essere coniugazione" , "Avere coniugazione" ] ,
"Tempi" : [ "Qualsiasi tempo verbale" , "Indicativo presente" , "Indicativo passato prossimo" , "Indicativo imperfetto" , "Indicativo passato remoto" ,
"Indicativo trapassato prossimo" , "Indicativo trapassato remoto" , "Indicativo futuro semplice" , "Indicativo futuro anteriore" , "Congiuntivo presente" ,
"Congiuntivo imperfetto" , "Congiuntivo passato" , "Congiuntivo trapassato" , "Condizionale presente" , "Condizionale passato" , "Imperativo presente" ,
"Infinito presente" , "Infinito passato" , "Participio presente" , "Participio passato" , "Gerundio presente" , "Gerundio passato" ] ,
"Persona" : [ "Qualsiasi persona" , "1ª persona singolare" , "2ª persona singolare" , "3ª persona singolare" , "1ª persona plurale" , "2ª persona plurale" , "3ª persona plurale" ] ,
"Funzione" : [ "Tutte le funzioni" , "Aggettivo" , "Sostantivo maschile" , "Sostantivo femminile" ] ,
"Declinazione" : [ "Tutte le declinazioni" , "Prima declinazione" , "Seconda declinazione" , "Terza declinazione" ] ,
}
}
var sostantivoJson = {
"filtrisostantivo" : {
"Numero" : [ "Singolare" , "Plurale" ] ,
"Genere_lemma" : [ "Lemma femminile" , "Lemma maschile" ] ,
"Genere_forma" : [ "Forma femminile" , "Forma maschile" ] ,
"riflpers" : [ "In locuzione" ] ,
"Declinazione_sostantivo" : [ "Tutte le declinazioni" , "Prima declinazione" , "Seconda declinazione" , "Terza declinazione" ] ,
}
}
var aggettivoJson = {
"filtriaggettivo" : {
"Classe" : [ "1ª" , "2ª" ] ,
"Genere" : [ "Femminile" , "Maschile" ] ,
"Numero" : [ "Singolare" , "Plurale" ] ,
"Con_oggetto_indiretto" : [ "Con oggetto indiretto" ] ,
"Tipo_aggettivo" : [ "Qualsiasi tipo aggettivo" , "Qualificativo" , "Indefinito" , "Interrogativo" , "Esclamativo" , "Numerale" , "Dimostrativo" , "Relativo" , "Possessivo" , "In locuzione" ] ,
"Grado" : [ "Qualsiasi grado" , "Comparativo di maggioranza" , "Comparativo di minoranza" , "Comparativo di uguaglianza" , "Superlativo relativo" , "Superlativo assoluto" ] ,
"Tipo_di_Complemento" : [ "Qualsiasi tipo di Complemento" , "Introdotto da A" , "Introdotto da CON" , "Introdotto da CONTRO" , "Introdotto da DA" , "Introdotto da DI" , "Introdotto da IN" ,
"Introdotto da PER" , "Introdotto da SU" , "Introdotto da TRA" , "Introdotto da VERSO" , "Introdotto da SOPRA" ,
"Introdotto da SOTTO" , "Introdotto da DINANZI" , "Introdotto da prep." , "Oggetto ind." , "Ogg. indi. + compl. con DI" , "Ogg. ind. pronom." ] ,
"Tipo_di_frase" : [ "Qualsiasi tipo di frase" , "Con infinito retto da A" , "Con infinito retto da DA" , "Con infinito retto da DI" , "Con infinito retto da PER" ,
"Con infinito retto da SE" , "Con subordinata all'indic." , "Con subordinata al cong." , "In locuzione imp.+infinito" ,
"In locuzione imp.+che+indic." , "In locuzione imp.+che+cong." , "In locuzione imp.+se+indic." , "In locuzione imp.+se+cong." ,
"In locuzione imp.+come+indic." , "In locuzione imp.+quando+indic." , "In locuzione imp.+perché+cong." , "In locuzione imp.+a+infinito" ]
}
}
var pronomeJson = {
"filtripronome" : {
"Genere" : [ "Femminile" , "Maschile" ] ,
"Numero" : [ "Singolare" , "Plurale" ] ,
"Classe_Persona" : [ "Qualsiasi Classe Persona" , "1ª" , "2ª" , "3ª" ] ,
"Tipo" : [ "Qualsiasi tipo" , "Personale" , "Riflessivo" , "Interrogativo" , "Esclamativo" , "Dimostrativo" , "Relativo" , "Possessivo" ] ,
"Forma_Personali_Riflessivi" : [ "Qualsiasi forma (Personali-Riflessivi)" , "Libero" , "Libero in Composizione" , "Proclitico" , "Enclitico" ] ,
"Funzione_Personali" : [ "Qualsiasi funzione (Personali)" , "Libero - soggetto" , "Libero - soggetto impersonale" , "Libero - complemento" , "Libero - rafforzativo" ,
"Clitico - accusativo" , "Clitico - dativo" , "Clitico - partitivo" ] ,
"Tipo_Riflessivi" : [ "Qualsiasi tipo (Riflessivi)" , "Proprio" , "Lessicalizzato" , "Impersonale" , "Passivo" , "Reciproco" ]
}
}
var articoloJson = {
"filtriarticolo" : {
"Genere" : [ "Femminile" , "Maschile" ] ,
"Numero" : [ "Singolare" , "Plurale" ] ,
"Tipo" : [ "Determinativo" , "Indeterminativo" ]
}
}
var avverbioJson = {
"filtriavverbio" : {
"Tipo" : [ "Qualsiasi tipo" , "Al comparativo di maggioranza" , "Al comparativo di minoranza" ,
"Al superlativo assoluto" , "Al superlativo relativo" ,
"In Locuzione" , "In Locuzione separato" , "Proclitico" , "Enclitico" ]
}
}
var preposizioneJson = {
"filtripreposizione" : {
"Tipo_I" : [ "Propria" , "Impropria" ] ,
"Tipo_preposizione" : [ "Qualsiasi tipo preposizione" , "Semplice" , "Articolata" , "In locuzione" , "In locuzione separata" ] ,
"Sintassi" : [ "Qualsiasi sintassi" , "Soggettiva" , "Oggettiva" , "Dichiarativa" , "Completiva obliqua" , "Finale" ,
"Causale" , "Concessiva" , "Consecutiva" , "Temporale" , "Modale" , "Eccettuativa" , "Esclusiva" ,
"Limitativa" , "Comparativa" , "Avversativa" ] ,
"Complemento_(I)" : [ "Qualsiasi complemento (I)" , "Di stato in luogo" , "Di moto a luogo" , "Di moto da luogo" , "Di moto per luogo" ,
"Di luogo" , "Predicativo del soggetto" , "Predicativo dell'oggetto" , "Di distanza" ,
"Di tempo determinato" , "Di tempo continuato" , "Di tempo" , "Di termine" , "Di vantaggio" ,
"Di svantaggio" , "Di specificazione" , "Di modo" , "Di mezzo" , "Di compagnia" ,
"Di unione" , "Di allontanamento-separazione" , "Di materia" ] ,
"Complemento_(II)" : [ "Qualsiasi complemento (II)" , "Di limitazione" , "Di qualità" , "Di causa" , "Di agente" , "Di causa efficiente" , "Di fine o scopo" ,
"Di paragone" , "Di argomento" , "Distributivo" , "Di sostituzione" , "Di estensione" , "Di rapporto" ,
"Di esclusione" , "Di peso" , "Di quantità" , "Di colpa" , "Di denominazione" , "partitivo" ,
"Di abbondanza-privazione" , "Di origine-provenienza" , "Concessivo" , "Di effetto" , "Di pena" ,
"Simmetrico" , "Indiretto esperiente" , "Indiretto dativo" , "Indiretto oggetto" , "Indiretto possessore" ,
"Indiretto benefattivo" ]
}
}
var congiunzioneJson = {
"filtricongiunzione" : {
"Coo_sub" : [ "Coordinativa" , "Subordinativa" ] ,
"Tipo" : [ "Qualsiasi tipo" , "Semplice" , "Composta" , "Locuzione" , "Locuzione separata" ] ,
"Coord_tipo" : [ "Qualsiasi coord. tipo" , "Copulativa" , "Disgiuntiva" , "Avversativa" , "Esplicativa" , "Conclusiva" , "Correlativa" ] ,
"Subord_tipo" : [ "Qualsiasi subord. tipo" , "Soggettiva" , "Oggettiva" , "Dichiarativa" , "Completiva obliqua" , "Interrogativa" ,
"Finali" , "Causali" , "Concessiva" , "Consecutiva" , "Temporale" , "Modale" ,
"Eccettuativa" , "Comparativa" , "Condizionale" , "Esclusiva" , "Limitativa" ]
}
}
var onomasticacitazioneJson = {
"filtrionomastica" : {
"Tipo" : [ "Qualsiasi tipo" , "Nome proprio" , "Nome proprio separato" , "Titolo" ]
} ,
"filtricitazione" : {
"Tipo" : [ "Qualsiasi tipo" , "Latina" , "Provenzale" , "Francese" , "Spagnola" , "Ebraica" , "Greca" ]
}
}
var categorie = {
"verbovolgare" : "filtriverbo" ,
"sostantivovolgare" : "filtrisostantivo" ,
"pronomevolgare" : "filtripronome" ,
"aggettivovolgare" : "filtriaggettivo" ,
"articolovolgare" : "filtriarticolo" ,
"avverbiovolgare" : "filtriavverbio" ,
"preposizionevolgare" : "filtripreposizione" ,
"congiunzionevolgare" : "filtricongiunzione" ,
"onomasticavolgare" : "filtrionomastica" ,
"citazionevolgare" : "filtricitazione"
}
var catGrammsenzaspec = [ 'all' , 'interiezionevolgare' ]
var subordinazioneJson = {
"subordinazione" : {
"livello" : [ "Qualsiasi livello di subordinazione" , "principale" , "coordinata a una principale" , "subordinata di I grado" ,
"subordinata di II grado" , "subordinata di III grado" , "subordinata di IV grado" , "subordinata di V grado" ,
"subordinata di VI grado" , "subordinata di VII grado" , "coordinata a una subordinata di I grado" ,
"coordinata a una subordinata di II grado" , "coordinata a una subordinata di III grado" ,
"coordinata a una subordinata di IV grado" , "coordinata a una subordinata di V grado" , "pseudo-coordinata" ,
"parentetica" , "coordinata a una parentetica" ]
}
}
var categorieJson = $ . extend ( { } , verboJson , sostantivoJson , pronomeJson , aggettivoJson , articoloJson , avverbioJson , preposizioneJson , congiunzioneJson , onomasticacitazioneJson ) ;
// Variabili testuali per compattezza
var iconReset = '<div class="text-right text-primary radioReset"><ion-icon name="refresh-circle"></ion-icon></div>' ;
var iconCloseCond = '<div class="p-0 mr-3 mt-1 text-right text-primary"><span class="iconClClass removeCond"><ion-icon name="close-circle"></ion-icon></span></div>' ;
var emptyClaList = '<li id="li-cla0" class="list-group-item align-items-center mb-1 ui-state-default ui-state-disabled border text-muted bg-white ui-state-disabled-opacity-06 small">Nessuna clausola aggiunta.</li>' ;
var condLIplaceholderText1 = 'Trascina qui almeno 1 clausola o condizione' ;
var condLIplaceholderText2 = 'Trascina qui almeno 2 clausole o condizioni' ;
var condLIplaceholderText1d = 'Trascina qui almeno 1 clausola o condizione, oppure attiva le clausole inattive' ;
var condLIplaceholderText2d = 'Trascina qui almeno 2 clausole o condizioni, oppure attiva le clausole inattive' ;
var condLIplaceholderPart1 = '<li id="placeholderSort' ;
var condLIplaceholderPart2 = '" class="mx-0 my-1 p-1 pl-3 list-group-item align-items-center border text-muted small bg-light ui-state-disabled ui-state-disabled-opacity-06">' ;
// Variabili funzionali
var tabID = 0 ;
var claListLen = 0 ;
var condListLen = 0 ;
var logicExprString = ` ` ;
var guiLogicString = ` ` ;
var execQuery = ` ` ;
var queryFields = [ ] ; // Contiene le intestazioni di colonna della tabella dei risultati
var contextS = [ [ ] , [ ] , [ ] ] ;
var context0 = [ [ ] , [ ] , [ ] ] ;
var canticheList = [ "Inferno" , "Purgatorio" , "Paradiso" ] ;
var queryJson = JSON . parse ( '{"EsprLogica":"", "LogicaGui":"", "QueryAvanzata": "0"}' ) ;
queryJson . LiDaVersion = "1.0" ;
queryJson . Clausola0 = JSON . parse ( '{"queryText": "", "lemma_forma": "lemma", "opzioni_testo": "parola", "TipoClausola": "0", "Attiva": "0"}' ) ;
const myEngine = new Comunica . QueryEngine ( ) ;
const sparqlEndpoint = "https://hdnlab1.isti.cnr.it/fuseki/commediaontosintgra/query" ;
// Fine variabili
2022-12-12 10:16:30 +01:00
getJsonQuery = function ( ) {
return queryJson ;
}
2022-12-06 18:12:57 +01:00
async function executeQuery ( ) {
$ ( "#loader" ) . show ( ) ;
bindingsStream = await myEngine . queryBindings ( execQuery , { sources : [ { type : 'sparql' , value : sparqlEndpoint } , ] , } ) ;
$ ( "#sparqlquery" ) . val ( execQuery ) ;
$ ( "#copiaQuery" ) . prop ( "disabled" , false ) ;
var resultTablePart1 = '<table id="resultTable" class="table table-striped table-bordered"><thead><tr>' ;
var resultTablePart2 = '<th scope="col">#</th>' ;
var resultTablePart3 = '</tr></thead><tbody>' ;
var resultTablePart4 = '' ;
var resultTablePart5 = '</tbody></table>' ;
var resultTable = '' ;
var latestVerso = '' ;
var latestResult = '' ;
var rowNum = 1 ;
for ( var i = 0 ; i < queryFields . length ; i ++ ) {
resultTablePart2 = resultTablePart2 + '<th scope="col">' + queryFields [ i ] + '</th>' ;
} ;
var resultTable = resultTablePart1 + resultTablePart2 + resultTablePart3 ;
$ ( '#resultsId1' ) . empty ( ) ;
$ ( '#resultsId1' ) . addClass ( "small pb-2" )
$ ( "#risultatitesto" ) . empty ( ) ;
try {
bindingsStream . on ( 'data' , ( binding ) => {
//console.log(binding.toString()); // Quick way to print bindings for testing
//console.log(binding.has('sub')); // Will be true
latestVerso = binding . get ( 'Verso' ) . value
latestResult = rowNum + '. "' + latestVerso . replace ( binding . get ( 'Forma' ) . value , '*' + binding . get ( 'Forma' ) . value + '*' ) + '" (' + binding . get ( 'Cantica' ) . value + ', ' + binding . get ( 'Canto' ) . value + ', Verso ' + binding . get ( 'NumeroVerso' ) . value + ')\n' ;
$ ( "#risultatitesto" ) . append ( latestResult ) ;
resultTablePart4 = '<tr><th scope="row" class="text-muted">' + rowNum ++ + '</th>' ;
for ( var i = 0 ; i < queryFields . length ; i ++ ) {
if ( binding . get ( queryFields [ i ] ) != null ) {
val = binding . get ( queryFields [ i ] ) . value
} else {
val = "na"
}
resultTablePart4 = resultTablePart4 + '<td class="text-muted">' + val + "</td>" ;
} ;
resultTable = resultTable + resultTablePart4 + '</tr>' ;
$ ( "#loader" ) . hide ( ) ;
} ) ;
bindingsStream . on ( 'end' , ( ) => {
$ ( "#loader" ) . hide ( ) ;
resultTable = resultTable + resultTablePart5 ;
$ ( "#resultsId1" ) . append ( resultTable ) ;
$ ( "#copiaTesto" ) . prop ( "disabled" , false ) ;
$ ( '#resultTable' ) . DataTable ( {
colReorder : true ,
language : {
url : 'dataTables.it-IT.json'
} ,
//dom: 'Blfrtip',
dom : "<'row'<'col-sm-12 col-md-6'l><'col-sm-6 col-md-3'f><'col-sm-6 col-md-3 text-right'B>>" + "<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>" ,
buttons : [ 'copy' , 'excel' , 'print' ]
} ) ;
setTimeout ( function ( ) {
buttonDiv = $ ( "#resultsId1" ) . find ( ".buttons-copy" ) ;
$ ( '<label class="input-group-text"><ion-icon name="copy"></ion-icon></label>' ) . insertBefore ( buttonDiv ) ;
} , 300 ) ;
} ) ;
}
catch ( err ) {
console . log ( err . message ) ;
$ ( "#loader" ) . hide ( ) ;
} ;
} ;
// Funzione di creazione del tab delle clausole grammaticali
function addGramCla ( active , tabID ) {
if ( active > 0 ) {
var checkInsert = ' checked="checked"' ;
} else {
var checkInsert = '' ;
} ;
var sortableId = "#sortable0" ;
var claText = "Categoria grammaticale: <br>" ;
addLIitem ( sortableId , tabID , claText , checkInsert ) ;
var clone = document . getElementById ( "tipogrammaticaleN" ) . cloneNode ( true ) ;
clone . setAttribute ( "id" , "cla" + tabID ) ;
clone . setAttribute ( "data-claActive" , active ) ;
clone . setAttribute ( "aria-labelledby" , "cla" + tabID + "-tab" ) ;
clone . removeAttribute ( "style" ) ;
$ ( '#claBody' + tabID ) . append ( clone ) ;
// se non cambio l'id della select react non rileva l'evento onchange:
$ ( '#cla' + tabID + " #grammtypesN" ) . attr ( "id" , "grammtypes" + tabID ) ;
$ ( '#cla' + tabID + " #lemma_formaN" ) . attr ( "id" , "lemma_forma" + tabID ) ;
$ ( '#cla' + tabID + " #queryTextN" ) . attr ( "id" , "queryText" + tabID ) ;
$ ( '#cla' + tabID + " #opzioni_testoN" ) . attr ( "id" , "opzioni_testo" + tabID ) ;
}
// Funzione di creazione delle subclausole grammaticali basate sul valore scelto
function addCatgramSubcla ( tabPaneId , selectedValue ) {
var dettagliBox = $ ( "#" + tabPaneId + " .dettaglifiltri" ) ;
dettagliBox . html ( "" ) ;
if ( Object . keys ( categorie ) . includes ( selectedValue ) ) {
var filtro = categorie [ selectedValue ]
var keys = Object . keys ( categorieJson [ filtro ] )
for ( var key in keys ) {
var vals = categorieJson [ filtro ] [ keys [ key ] ]
switch ( vals . length ) {
case 2 :
var element = $ ( '<div />' ) ;
element . attr ( 'class' , ' d-flex flex-sm-nowrap pr-2 py-1 mb-1 form-group form-control justify-content-between' ) ;
var rbfieldset = $ ( '<fieldset />' ) ;
var flexdiv1 = $ ( '<div />' ) ;
var flexdiv2 = $ ( '<div />' ) ;
var input1 = $ ( '<input />' ) ;
var input2 = $ ( '<input />' ) ;
var label1 = $ ( '<label />' ) ;
var label2 = $ ( '<label />' ) ;
rbfieldset . attr ( 'id' , tabPaneId + keys [ key ] . replace ( /\s/g , '' ) ) ;
rbfieldset . attr ( 'class' , 'custom-control-inline monMe' ) ;
flexdiv1 . attr ( 'class' , 'custom-control custom-radio custom-control-inline m-0 pb-0' ) ;
flexdiv2 . attr ( 'class' , 'custom-control custom-radio custom-control-inline m-0 pb-0' ) ;
input1 . attr ( 'class' , 'custom-control-input' ) ;
input2 . attr ( 'class' , 'custom-control-input' ) ;
input1 . attr ( 'type' , 'radio' ) ;
input2 . attr ( 'type' , 'radio' ) ;
input1 . attr ( 'id' , tabPaneId + vals [ 0 ] . replace ( /\s/g , '' ) ) ;
input2 . attr ( 'id' , tabPaneId + vals [ 1 ] . replace ( /\s/g , '' ) ) ;
input1 . attr ( 'value' , vals [ 0 ] ) ;
input2 . attr ( 'value' , vals [ 1 ] ) ;
input1 . attr ( 'name' , tabPaneId + keys [ key ] ) ;
input2 . attr ( 'name' , tabPaneId + keys [ key ] ) ;
label1 . attr ( 'class' , 'custom-control-label form-control-sm custom-control-inline m-0 pl-1' ) ;
label2 . attr ( 'class' , 'custom-control-label form-control-sm custom-control-inline m-0 pl-1' ) ;
label1 . attr ( 'for' , tabPaneId + vals [ 0 ] . replace ( /\s/g , '' ) ) ;
label2 . attr ( 'for' , tabPaneId + vals [ 1 ] . replace ( /\s/g , '' ) ) ;
label1 . append ( vals [ 0 ] ) ;
label2 . append ( vals [ 1 ] ) ;
input1 . appendTo ( flexdiv1 ) ;
input2 . appendTo ( flexdiv2 ) ;
label1 . appendTo ( flexdiv1 ) ;
label2 . appendTo ( flexdiv2 ) ;
flexdiv1 . appendTo ( rbfieldset ) ;
flexdiv2 . appendTo ( rbfieldset ) ;
rbfieldset . appendTo ( element ) ;
var iconR = $ ( iconReset ) ;
iconR . appendTo ( element ) ;
//element.attr('style', 'display:block');
element . appendTo ( dettagliBox ) ;
break ;
case 1 :
var element = $ ( '<div />' ) ;
element . attr ( 'class' , ' d-flex flex-sm-nowrap pr-2 py-1 mb-1 form-group form-control' ) ;
var rbfieldset = $ ( '<fieldset />' ) ;
flexdiv1 = $ ( '<div />' ) ;
input1 = $ ( '<input />' ) ;
label1 = $ ( '<label />' ) ;
rbfieldset . attr ( 'id' , tabPaneId + keys [ key ] . replace ( /\s/g , '' ) ) ;
rbfieldset . attr ( 'class' , 'custom-control-inline monMe' ) ;
flexdiv1 . attr ( 'class' , 'custom-control custom-checkbox custom-control-inline' ) ;
input1 . attr ( 'class' , 'custom-control-input' ) ;
input1 . attr ( 'type' , 'checkbox' ) ;
input1 . attr ( 'id' , tabPaneId + vals [ 0 ] . replace ( /\s/g , '' ) ) ;
input1 . attr ( 'value' , vals [ 0 ] ) ;
input1 . attr ( 'name' , keys [ key ] ) ;
label1 . attr ( 'class' , 'custom-control-label form-control-sm custom-control-inline m-0 pl-1' ) ;
label1 . attr ( 'for' , tabPaneId + vals [ 0 ] . replace ( /\s/g , '' ) ) ;
label1 . append ( vals [ 0 ] ) ;
input1 . appendTo ( flexdiv1 ) ;
label1 . appendTo ( flexdiv1 ) ;
flexdiv1 . appendTo ( rbfieldset ) ;
rbfieldset . appendTo ( element ) ;
//element.attr('style', 'display:block');
element . appendTo ( dettagliBox ) ;
break ;
default :
var element = $ ( '<div />' ) ;
element . attr ( 'class' , ' form-group px-0 pb-1 m-0' ) ;
var select = $ ( '<select class="form-control custom-select-sm monMe"/>' ) ;
select . attr ( 'id' , tabPaneId + keys [ key ] . replace ( /\s/g , '' ) ) ;
select . attr ( 'title' , keys [ key ] ) ;
select . attr ( 'name' , keys [ key ] ) ;
for ( var val in vals ) {
var seloption = $ ( '<option />' ) ;
seloption . attr ( 'value' , vals [ val ] ) ;
seloption . append ( vals [ val ] ) ;
seloption . appendTo ( select ) ;
}
select . appendTo ( element ) ;
//element.attr('style', 'display:block');
element . appendTo ( dettagliBox ) ;
}
}
}
if ( element ) {
element . attr ( 'style' , "display: block;" ) ;
element . appendTo ( dettagliBox ) ;
} ;
}
// Funzione di creazione del tab delle clausole sintattiche
function addSyntCla ( active , tabID ) {
if ( active > 0 ) {
var checkInsert = ' checked="checked"' ;
} else {
var checkInsert = '' ;
} ;
var sortableId = "#sortable0" ;
var claText = "Tipo sintattico: <br>" ;
addLIitem ( sortableId , tabID , claText , checkInsert ) ;
var clone = document . getElementById ( "tiposintatticoN" ) . cloneNode ( true ) ;
clone . setAttribute ( "id" , "cla" + tabID ) ;
clone . setAttribute ( "data-claActive" , active ) ;
clone . setAttribute ( "aria-labelledby" , "cla" + tabID + "-tab" ) ;
clone . removeAttribute ( "style" ) ;
$ ( '#claBody' + tabID ) . append ( clone ) ;
$ ( '#cla' + tabID + " #lemma_formaN" ) . attr ( "id" , "lemma_forma" + tabID ) ;
$ ( '#cla' + tabID + " #queryTextN" ) . attr ( "id" , "queryText" + tabID ) ;
$ ( '#cla' + tabID + " #opzioni_testoN" ) . attr ( "id" , "opzioni_testo" + tabID ) ;
}
// Funzione di creazione del tab delle clausole metafore
function addMetaCla ( active , tabID ) {
var checkInsert = ' disabled' ;
//if (active > 0) {
// var checkInsert = '" checked="checked"';
//} else {
// var checkInsert = '"';
//};
var sortableId = "#sortable0" ;
var claText = "Clausola Metafore - non ancora implementata" ;
addLIitem ( sortableId , tabID , claText , checkInsert ) ;
}
// Funzione di creazione del LI delle condizioni logiche
function addLogicCond ( condtype , sortableId ) {
condListLen ++ ;
2022-12-07 19:02:56 +01:00
var cloneLI = document . getElementById ( "condxX4Xx" ) . cloneNode ( true ) ;
cloneLI . removeAttribute ( "style" ) ;
cloneLI = cloneLI . outerHTML . replace ( /xX4Xx/g , condListLen )
cloneLI = cloneLI . replace ( /xX5Xx/g , condtype )
2022-12-06 18:12:57 +01:00
if ( condtype == "AND" ) {
2022-12-07 19:02:56 +01:00
cloneLI = cloneLI . replace ( /xX6Xx/g , "light" )
2022-12-06 18:12:57 +01:00
} else {
2022-12-07 19:02:56 +01:00
cloneLI = cloneLI . replace ( /xX6Xx/g , "lida11" )
2022-12-06 18:12:57 +01:00
}
if ( $ ( "#li-cla0" ) [ 0 ] ) {
2022-12-07 19:02:56 +01:00
$ ( "#li-cla0" ) [ 0 ] . remove ( ) ;
2022-12-06 18:12:57 +01:00
} ;
2022-12-07 19:02:56 +01:00
$ ( sortableId ) . append ( $ ( cloneLI ) [ 0 ] ) ;
2022-12-06 18:12:57 +01:00
$ ( "#sortable" + condListLen ) . sortable ( ) ;
$ ( "#sortable" + condListLen ) . sortable ( "option" , "appendTo" , document . body ) ;
$ ( "#sortable" + condListLen ) . sortable ( {
items : "> li" ,
handle : ".handle" ,
opacity : 0.6 ,
cursor : 'move' ,
update : function ( ) { refreshSortables ( ) ; }
} ) ;
refreshConnectWith ( ) ;
}
// Funzione di creazione del LI di una clausola nella lista sortable
function addLIitem ( sortableId , tabID , claText , checkInsert ) {
2022-12-07 19:02:56 +01:00
claListLen ++ ;
var cloneLI = document . getElementById ( "li-claxX1Xx" ) . cloneNode ( true ) ;
2022-12-06 18:12:57 +01:00
cloneLI . removeAttribute ( "style" ) ;
2022-12-07 19:02:56 +01:00
cloneLI = cloneLI . outerHTML . replace ( /xX1Xx/g , tabID )
cloneLI = cloneLI . replace ( /xX2Xx/g , claText )
cloneLI = cloneLI . replace ( /xX3Xx"/g , tabID + '" ' + checkInsert )
2022-12-06 18:12:57 +01:00
$ ( sortableId ) . append ( $ ( cloneLI ) [ 0 ] ) ;
} ;
// Funzione di refresh della lista clausole nella tab principale e del json della query
function refreshClaList ( ) {
var l _f = $ ( "form #lemma_forma" ) [ 0 ] . options [ $ ( "form #lemma_forma" ) [ 0 ] . selectedIndex ] . value ;
var qText = $ ( "form #queryText" ) [ 0 ] . value ;
var optText = $ ( "form #opzioni_testo" ) [ 0 ] . value ;
if ( qText == "" ) { //disattivo clausola 0 se il testo e' vuoto
var claActive = 0
} else {
var claActive = 1
} ;
queryJson . Clausola0 = JSON . parse ( '{"queryText": "' + qText + '", "lemma_forma": "' + l _f + '", "opzioni_testo": "' + optText + '", "TipoClausola": "0", "Attiva": "' + claActive + '"}' ) ;
var tabsContent = $ ( "#sortable0" ) . find ( ".claLI" ) ;
if ( $ ( tabsContent ) . length ) {
if ( $ ( "#li-cla0" ) [ 0 ] ) {
$ ( "#li-cla0" ) [ 0 ] . remove ( ) ;
} ;
$ ( tabsContent ) . each ( function ( ) {
var claIdNum = $ ( this ) . attr ( 'id' ) . substr ( 6 ) ;
updateClaListItem ( claIdNum , "#sortable0" ) ;
} ) ;
} else {
if ( claListLen == 0 && condListLen == 0 ) {
$ ( '#sortable0' ) . html ( emptyClaList ) ;
queryJson . EsprLogica = "" ;
queryJson . LogicaGui = "" ;
}
tabID = 0 ;
} ;
}
// Funzione di creazione del LI nella lista delle clausole nel tab principale, aggiunta della clausola nel JSON
function updateClaListItem ( claIdNum , sortableId ) {
var claText = '' ;
var termText = '' ;
var checkInsert = '' ;
var claId = "cla" + claIdNum ;
var claListItemId = "li-cla" + claIdNum ;
var claType = $ ( "#" + claId ) . attr ( 'data-claType' ) ;
var claActive = $ ( "#" + claId ) . attr ( 'data-claActive' ) ;
if ( claActive > 0 ) {
checkInsert = ' checked="checked"' ;
} ;
switch ( claType ) {
case "Grammaticale" :
var l _f = $ ( "form #lemma_forma" + claIdNum ) [ 0 ] . options [ $ ( "form #lemma_forma" + claIdNum ) [ 0 ] . selectedIndex ] . value ;
var l _f _t = $ ( "form #lemma_forma" + claIdNum ) [ 0 ] . options [ $ ( "form #lemma_forma" + claIdNum ) [ 0 ] . selectedIndex ] . text ;
var qText = $ ( "form #queryText" + claIdNum ) [ 0 ] . value ;
var optText = $ ( "form #opzioni_testo" + claIdNum ) [ 0 ] . value ;
var optText _t = $ ( "form #opzioni_testo" + claIdNum ) [ 0 ] . options [ $ ( "form #opzioni_testo" + claIdNum ) [ 0 ] . selectedIndex ] . text ;
if ( qText != "" ) {
termText = l _f _t + ' <span class="text-dark font-weight-bold">' + qText + '</span> ' + optText _t + '.<br>' ;
} ;
var jsonTextToParse = '{"queryText": "' + qText + '", "lemma_forma": "' + l _f + '", "opzioni_testo": "' + optText + '", "TipoClausola": "' + claType + '", "Attiva": "' + claActive + '"' ;
var gramSelect = $ ( "#" + claId ) . find ( ".catgram" ) ;
//claText = claGuiNum + ". " + termText + "Categoria grammaticale: " + gramSelect[0].options[gramSelect[0].selectedIndex].text + ';<br>';
claText = termText + "Categoria grammaticale: " + gramSelect [ 0 ] . options [ gramSelect [ 0 ] . selectedIndex ] . text + ';<br>' ;
jsonTextToParse = jsonTextToParse + ', "' + gramSelect . attr ( 'name' ) + '": "' + gramSelect [ 0 ] . options [ gramSelect [ 0 ] . selectedIndex ] . value + '"' ;
var claSubParList = $ ( "#" + claId ) . children ( ".dettaglifiltri" ) . find ( "select, fieldset" ) ;
claSubParList . each ( function ( ) {
var claSubParType = $ ( this ) [ 0 ] . type ;
if ( claSubParType == "fieldset" && $ ( this ) . find ( ":checked" ) . length ) {
var claSubParName = $ ( this ) . find ( ":checked" ) [ 0 ] . name ;
if ( claSubParName . startsWith ( claId ) ) {
claSubParName = claSubParName . replace ( claId , '' ) ;
}
claText = claText + $ ( this ) . find ( ":checked" ) [ 0 ] . defaultValue + "; " ;
jsonTextToParse = jsonTextToParse + ', "' + claSubParName + '": "' + $ ( this ) . find ( ":checked" ) [ 0 ] . value + '"' ;
} ;
if ( claSubParType == "select-one" && $ ( this ) [ 0 ] . selectedIndex != 0 ) {
claText = claText + $ ( this ) [ 0 ] . options [ $ ( this ) [ 0 ] . selectedIndex ] . text + "; " ;
jsonTextToParse = jsonTextToParse + ', "' + $ ( this ) [ 0 ] . name + '": "' + $ ( this ) [ 0 ] . options [ $ ( this ) [ 0 ] . selectedIndex ] . value + '"' ;
} ;
} ) ;
break ;
case "Sintattico" :
var l _f = $ ( "form #lemma_forma" + claIdNum ) [ 0 ] . options [ $ ( "form #lemma_forma" + claIdNum ) [ 0 ] . selectedIndex ] . value ;
var l _f _t = $ ( "form #lemma_forma" + claIdNum ) [ 0 ] . options [ $ ( "form #lemma_forma" + claIdNum ) [ 0 ] . selectedIndex ] . text ;
var qText = $ ( "form #queryText" + claIdNum ) [ 0 ] . value ;
var optText = $ ( "form #opzioni_testo" + claIdNum ) [ 0 ] . value ;
var optText _t = $ ( "form #opzioni_testo" + claIdNum ) [ 0 ] . options [ $ ( "form #opzioni_testo" + claIdNum ) [ 0 ] . selectedIndex ] . text ;
if ( qText != "" ) {
termText = l _f _t + ' <span class="text-dark font-weight-bold">' + qText + '</span> ' + optText _t + '.<br>' ;
} ;
var jsonTextToParse = '{"queryText": "' + qText + '", "lemma_forma": "' + l _f + '", "opzioni_testo": "' + optText + '", "TipoClausola": "' + claType + '", "Attiva": "' + claActive + '"' ;
var syntSelect = $ ( "#" + claId ) . find ( "#synttypes" ) ;
var funcSelect = $ ( "#" + claId ) . find ( "#syntfunc" ) ;
//claText = claGuiNum + ". " + termText + "Tipo sintattico: " + syntSelect[0].options[syntSelect[0].selectedIndex].text + ';<div class="col-md-12"></div>Livello di subordinazione: ' + funcSelect[0].options[funcSelect[0].selectedIndex].text;
claText = termText + "Tipo sintattico: " + syntSelect [ 0 ] . options [ syntSelect [ 0 ] . selectedIndex ] . text + ';<div class="col-md-12"></div>Livello di subordinazione: ' + funcSelect [ 0 ] . options [ funcSelect [ 0 ] . selectedIndex ] . text ;
jsonTextToParse = jsonTextToParse + ', "' + syntSelect . attr ( 'name' ) + '": "' + syntSelect [ 0 ] . options [ syntSelect [ 0 ] . selectedIndex ] . value + '", "' + funcSelect . attr ( 'name' ) + '": "' + funcSelect [ 0 ] . options [ funcSelect [ 0 ] . selectedIndex ] . value + '"' ;
break ;
default :
//claText = claGuiNum + ". " + $("#" + claId).text();
//claText = $("#" + claId).text();
claText = $ ( "#" + claListItemId + " .clatext" ) . text ( ) ;
checkInsert = ' disabled' ;
var jsonTextToParse = '{"queryText": "", "lemma_forma": "", "opzioni_testo": "", "TipoClausola": "' + claType + '", "Attiva": "' + claActive + '"' ;
} ;
if ( $ ( "#" + claListItemId ) [ 0 ] ) {
$ ( "#" + claListItemId + " .clatext" ) . replaceWith ( '<span class="small pl-1 clatext">' + claText + '</span>' ) ;
} else {
addLIitem ( sortableId , claIdNum , claText , checkInsert ) ;
} ;
queryJson [ "Clausola" + claIdNum ] = JSON . parse ( jsonTextToParse + '}' ) ;
} ;
// Funzione di refresh dei placeholders e attivazione/disattivazione bottoni nelle liste sortable
function refreshSortables ( ) {
$ ( "#sortable0" ) . children ( ".claLI" ) . each ( function ( ) {
if ( $ ( this ) . find ( "input" ) [ 0 ] . checked ) {
$ ( this ) . find ( '.clatext' ) . css ( { opacity : 1 } ) ;
} ;
if ( $ ( this ) . find ( "input" ) [ 0 ] . checked == false ) {
$ ( this ) . find ( '.clatext' ) . css ( { opacity : 0.6 } ) ;
} ;
} ) ;
2022-12-07 19:02:56 +01:00
$ ( "#cla-TabContent .ui-sortable:not(:first)" ) . each ( function ( ) {
2022-12-06 18:12:57 +01:00
var sortableID = $ ( this ) [ 0 ] . id ;
var placeholderID = "#placeholderSort" + sortableID . slice ( - 1 ) ;
var iconSpan = $ ( this ) . find ( ".iconClClass" ) [ 0 ] ;
var iconDiv = $ ( iconSpan ) . parent ( ) [ 0 ] ;
var activeUL = $ ( this ) . children ( "li" ) . children ( "ul" ) . length ;
var activeLI = 0 ;
var inactiveLI = 0 ;
var condLIplaceholder = "" ;
$ ( this ) . children ( "li .claLI" ) . each ( function ( ) {
if ( $ ( this ) . find ( "input" ) [ 0 ] . checked ) {
activeLI ++ ;
$ ( this ) . find ( '.clatext' ) . css ( { opacity : 1 } ) ;
} ;
if ( $ ( this ) . find ( "input" ) [ 0 ] . checked == false ) {
inactiveLI ++ ;
$ ( this ) . find ( '.clatext' ) . css ( { opacity : 0.6 } ) ;
} ;
} ) ;
switch ( activeLI + activeUL ) {
case 0 :
if ( $ ( placeholderID ) . length ) {
if ( inactiveLI > 0 ) {
$ ( placeholderID ) . text ( condLIplaceholderText2d ) ;
} else {
$ ( placeholderID ) . text ( condLIplaceholderText2 ) ;
} ;
} else {
if ( inactiveLI > 0 ) {
condLIplaceholder = condLIplaceholderPart1 + sortableID . slice ( - 1 ) + condLIplaceholderPart2 + condLIplaceholderText2d + '</li>' ;
} else {
condLIplaceholder = condLIplaceholderPart1 + sortableID . slice ( - 1 ) + condLIplaceholderPart2 + condLIplaceholderText2 + '</li>' ;
}
$ ( "#" + sortableID ) . append ( condLIplaceholder ) ;
} ;
if ( inactiveLI == 0 ) {
$ ( iconSpan ) . attr ( "class" , "iconClClass removeCond" ) ;
$ ( iconDiv ) . attr ( "class" , "p-0 mr-3 mt-1 text-right text-primary" ) ;
} ;
break ;
case 1 :
if ( $ ( placeholderID ) . length ) {
if ( inactiveLI > 0 ) {
$ ( placeholderID ) . text ( condLIplaceholderText1d ) ;
} else {
$ ( placeholderID ) . text ( condLIplaceholderText1 ) ;
} ;
} else {
if ( inactiveLI > 0 ) {
condLIplaceholder = condLIplaceholderPart1 + sortableID . slice ( - 1 ) + condLIplaceholderPart2 + condLIplaceholderText1d + '</li>' ;
} else {
condLIplaceholder = condLIplaceholderPart1 + sortableID . slice ( - 1 ) + condLIplaceholderPart2 + condLIplaceholderText1 + '</li>' ;
}
$ ( "#" + sortableID ) . append ( condLIplaceholder ) ;
} ;
$ ( iconSpan ) . attr ( "class" , "iconClClass NOremoveCond" ) ;
$ ( iconDiv ) . attr ( "class" , "p-0 mr-3 mt-1 text-right text-muted" ) ;
break ;
case 2 :
if ( $ ( placeholderID ) . length ) {
$ ( placeholderID ) . remove ( ) ;
} ;
break ;
default :
if ( $ ( placeholderID ) . length ) {
$ ( placeholderID ) . remove ( ) ;
} ;
} ;
} ) ;
logicExprString = parseCond ( "#sortable0" , "AND" , 0 ) ;
guiLogicString = parseCond ( "#sortable0" , "AND" , 1 ) ;
//$("#sparqlquery").val(logicExprString);
queryJson . EsprLogica = logicExprString . split ( ' ' ) ;
queryJson . LogicaGui = guiLogicString . split ( ' ' ) ;
console . log ( queryJson ) ;
} ;
// Funzione di refresh dei collegamenti tra elementi sortable
function refreshConnectWith ( ) {
for ( var i = 0 ; i <= condListLen ; i ++ ) {
var cw = "" ;
for ( var j = 0 ; j <= condListLen ; j ++ ) {
if ( i != j ) {
cw = cw + "#sortable" + j + ", " ;
} ;
$ ( "#sortable" + i ) . sortable ( "option" , "connectWith" , cw . slice ( 0 , - 2 ) ) ;
} ;
} ;
} ;
// Funzione di parsing delle clausole e delle condizioni logiche
function parseCond ( sortableList , condType , forGui ) {
var condText = "" ;
var items = $ ( sortableList ) . children ( "li" ) ;
var itemsText = [ ] ;
$ ( items ) . each ( function ( ) {
2022-12-07 19:02:56 +01:00
if ( $ ( this ) . hasClass ( "condLI-AND" ) ) {
2022-12-06 18:12:57 +01:00
var andID = "#" + $ ( this ) . children ( "ul" ) . attr ( "id" ) ;
var andText = parseCond ( andID , "AND" , forGui ) ;
if ( andText . length ) {
itemsText . push ( andText ) ;
} ;
} ;
2022-12-07 19:02:56 +01:00
if ( $ ( this ) . hasClass ( "condLI-OR" ) ) {
2022-12-06 18:12:57 +01:00
var orID = "#" + $ ( this ) . children ( "ul" ) . attr ( "id" ) ;
var orText = parseCond ( orID , "OR" , forGui ) ;
if ( orText . length ) {
itemsText . push ( orText ) ;
} ;
} ;
if ( $ ( this ) . hasClass ( "claLI" ) ) {
var claNum = "Clausola" + $ ( this ) [ 0 ] . id . substr ( 6 ) ;
if ( forGui || ( $ ( this ) . find ( "input" ) [ 0 ] . checked == true ) ) {
itemsText . push ( claNum ) ;
} ;
} ;
} ) ;
var iTlen = itemsText . length ;
switch ( iTlen ) {
case 0 :
break ;
case 1 :
if ( forGui ) {
condText = "( " + condType + " " + itemsText [ 0 ] + " )" ;
} else {
condText += itemsText [ 0 ] ;
}
break ;
default :
condText = "( " + condType + " " ;
for ( let i = 0 ; i < iTlen ; i ++ ) {
condText += itemsText [ i ] + " " ;
}
condText += ")" ;
} ;
return condText ;
} ;
$ . fn . copy2clipboard = function ( ) {
$ ( 'div[id^="msgCopiati"]' ) . remove ( ) ;
this . select ( ) ;
$ ( this ) . focus ( ) ;
document . execCommand ( "copy" ) ;
document . getSelection ( ) . removeAllRanges ( ) ;
$ ( this ) . after ( '<div class="mt-2 text-lida3" id="msgCopiati">Copiati nella clipboard</div>' ) ;
} ;
function makeUpGui ( queryJson ) {
//$("#risultatitesto").val(queryJson["LogicaGui"]);
// 1. verifica json legit --> TO DO
// -------------------
// Pulizia ricerca avanzata:
resetAdvGui ( ) ;
// Imposta checkbox:
if ( queryJson [ "QueryAvanzata" ] == 1 ) {
$ ( "#cla-Advanced" ) . attr ( 'style' , "display: block;" ) ;
$ ( "#advanSW" ) . prop ( "checked" , true ) ;
} else {
$ ( "#cla-Advanced" ) . attr ( 'style' , "display: none;" ) ;
$ ( "#advanSW" ) . prop ( "checked" , false ) ;
} ;
// Rigenerazione Clausola0:
if ( queryJson [ "Clausola0" ] . Attiva ) {
$ ( "#cla0 #lemma_forma" ) . val ( queryJson [ "Clausola0" ] . lemma _forma ) ;
$ ( "#cla0 #queryText" ) . val ( queryJson [ "Clausola0" ] . queryText ) ;
$ ( "#cla0 #opzioni_testo" ) . val ( queryJson [ "Clausola0" ] . opzioni _testo ) ;
} ;
// Generazione lista clausole e condizioni con elementi padre:
guiLogicString = queryJson . LogicaGui ;
var clau2Make = "" ;
var claParent = [ ] ; // array di coppie [elemento, elemento padre]
var treeLevel = [ ] ; // pila di elementi padre
var condNum = 0 ;
for ( var i = 0 ; i < guiLogicString . length ; i ++ ) {
switch ( guiLogicString [ i ] ) {
case "(" :
break ;
case ")" :
treeLevel . pop ( ) ;
break ;
case "OR" :
claParent . push ( [ guiLogicString [ i ] , treeLevel [ treeLevel . length - 1 ] ] ) ;
treeLevel . push ( "#sortable" + ++ condNum ) ;
break ;
case "AND" :
if ( i > 1 ) {
claParent . push ( [ guiLogicString [ i ] , treeLevel [ treeLevel . length - 1 ] ] ) ;
treeLevel . push ( "#sortable" + ++ condNum ) ;
} else {
treeLevel . push ( "#sortable0" ) ;
} ;
break ;
default :
claParent . push ( [ guiLogicString [ i ] . replace ( "Clausola" , "" ) , treeLevel [ treeLevel . length - 1 ] ] ) ;
} ;
} ;
$ ( claParent ) . each ( function ( ) { // rigenero le clausole nei tab PRIMA, per poter POI ricostruire la lista nel tab principale
var itm = $ ( this ) [ 0 ]
if ( itm != "OR" && itm != "AND" ) {
clau2Make = queryJson [ "Clausola" + itm ] . TipoClausola ;
active = queryJson [ "Clausola" + itm ] . Attiva
tabID ++ ;
switch ( clau2Make ) {
case "Grammaticale" :
selectedValue = queryJson [ "Clausola" + itm ] . typeGramm0 ;
addGramCla ( active , tabID ) ;
if ( selectedValue != "all" ) {
$ ( "#cla" + tabID + " .catgram" ) . val ( selectedValue ) ;
addCatgramSubcla ( "cla" + tabID , selectedValue ) ;
var ks = Object . keys ( queryJson [ "Clausola" + itm ] ) ;
for ( var j = 5 ; j < ks . length ; j ++ ) {
var melID = "cla" + tabID + ks [ j ] ;
var melement = document . getElementById ( melID ) ;
switch ( melement . type ) {
case "fieldset" :
var sval = queryJson [ "Clausola" + itm ] [ ks [ j ] ]
$ ( "#cla" + tabID + sval . replace ( /\s/g , '' ) ) . attr ( "checked" , true ) ;
break ;
case "select-one" :
melement . value = ( [ queryJson [ "Clausola" + itm ] [ ks [ j ] ] ] )
break ;
default :
} ;
} ;
} ;
break ;
case "Sintattico" :
addSyntCla ( active , tabID ) ;
if ( queryJson [ "Clausola" + itm ] . typeSyntax0 != ".+" ) {
$ ( "#cla" + tabID + " #synttypes" ) . val ( queryJson [ "Clausola" + itm ] . typeSyntax0 ) ;
}
if ( queryJson [ "Clausola" + itm ] . functionSyntax != ".+" ) {
$ ( "#cla" + tabID + " #syntfunc" ) . val ( queryJson [ "Clausola" + itm ] . functionSyntax ) ;
}
break ;
case "Metafore" :
addMetaCla ( active , tabID ) ;
break ;
default :
} ;
} ;
} ) ;
$ ( claParent ) . each ( function ( ) { // rigenero le liste di clausole e condizioni logiche nel tab principale
if ( $ ( this ) [ 0 ] == "OR" || $ ( this ) [ 0 ] == "AND" ) {
addLogicCond ( $ ( this ) [ 0 ] , $ ( this ) [ 1 ] ) ;
} else {
updateClaListItem ( $ ( this ) [ 0 ] , $ ( this ) [ 1 ] ) ;
refreshSortables ( ) ;
} ;
} ) ;
} ;
function resetAdvGui ( ) {
var tabsContent = $ ( "#cla-TabContent" ) . find ( ".tab-pane:not(:first)" ) ;
var tabs = $ ( "#tab-list li:not(:first)" ) ;
if ( $ ( tabsContent ) . length ) {
$ ( tabsContent ) . each ( function ( ) {
$ ( this ) . remove ( ) ;
} ) ;
$ ( tabs ) . each ( function ( ) {
$ ( this ) . remove ( ) ;
} ) ;
} ;
claListLen = 0 ;
condListLen = 0 ;
tabID = 0 ;
$ ( '#sortable0' ) . html ( emptyClaList ) ;
} ;
function parseContext ( context ) {
var contextStringParts = [ "" , "" , "" ] ;
var contextString = [ ] ;
var rangeHolderS = 0 ;
var rangeHolderE = - 1 ;
var lastElem = "" ;
for ( var i = 0 ; i < 3 ; i ++ ) {
for ( var j = 0 ; j <= context [ i ] . length ; j ++ ) {
if ( context [ i ] [ j ] == 1 ) {
if ( j == ( rangeHolderE + 1 ) ) {
rangeHolderE ++ ;
} else {
rangeHolderS = j ;
rangeHolderE = j ;
} ;
} else {
if ( rangeHolderE > 0 ) {
if ( rangeHolderS == rangeHolderE ) {
lastElem = ( rangeHolderE + 1 ) ;
} else {
lastElem = ( rangeHolderS + 1 ) + "-" + ( rangeHolderE + 1 ) ;
} ;
rangeHolderE = 0 ;
} ;
} ;
if ( lastElem != "" ) {
if ( contextStringParts [ i ] == "" ) {
contextStringParts [ i ] = " " + canticheList [ i ] + " [" + lastElem ;
} else {
contextStringParts [ i ] = contextStringParts [ i ] + "," + lastElem ;
} ;
lastElem = "" ;
} ;
} ;
rangeHolderS = 0 ;
rangeHolderE = 0 ;
if ( contextStringParts [ i ] != "" ) {
contextStringParts [ i ] = contextStringParts [ i ] + "]"
contextString . push ( contextStringParts [ i ] ) ;
}
if ( contextString . toString ( ) != "" ) {
$ ( "#contextText" ) . html ( contextString . toString ( ) ) ;
} else {
$ ( "#contextText" ) . html ( "tutta l'opera" ) ;
}
//console.log(contextString.toString());
//return contextString.toString();
} ;
} ;
} ) ;