diff --git a/cesareBrowse.html b/cesareBrowse.html new file mode 100644 index 0000000..863528d --- /dev/null +++ b/cesareBrowse.html @@ -0,0 +1,79 @@ + + + + + +browsing La Divina Commedia + + + + + + + + + + + +
+
+ +
+
+ +
+ +
+
+ +
+ +
+ + + +
+ +
+ + + + + +
+ + + +
+ + + +
+ + + + + \ No newline at end of file diff --git a/css/browsingldc.css b/css/browsingldc.css new file mode 100644 index 0000000..1b6b56e --- /dev/null +++ b/css/browsingldc.css @@ -0,0 +1,184 @@ +@charset "UTF-8"; +/* stylelint-disable selector-list-comma-newline-after, property-no-vendor-prefix */ + +/* + * Globals + */ + +body { + font-family: Georgia, "Times New Roman", Times, serif; + color: #555; +} + +h1, .h1, +h2, .h2, +h3, .h3, +h4, .h4, +h5, .h5, +h6, .h6 { + margin-top: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 400; + color: #333; +} + + +/* + * Override Bootstrap's default container. + */ + +@media (min-width: 1200px) { + .container { + width: 970px; + } +} + + +/* + * Masthead for nav + */ + +.blog-masthead { + background-color: #428bca; + -webkit-box-shadow: inset 0 -2px 5px rgba(0, 0, 0, .1); + box-shadow: inset 0 -2px 5px rgba(0, 0, 0, .1); +} + +/* Nav links */ +.blog-nav-item { + position: relative; + display: inline-block; + padding: 10px; + font-weight: 500; + color: #cdddeb; +} +.blog-nav-item:hover, +.blog-nav-item:focus { + color: #fff; + text-decoration: none; +} + +/* Active state gets a caret at the bottom */ +.blog-nav .active { + color: #fff; +} +.blog-nav .active:after { + position: absolute; + bottom: 0; + left: 50%; + width: 0; + height: 0; + margin-left: -5px; + vertical-align: middle; + content: " "; + border-right: 5px solid transparent; + border-bottom: 5px solid; + border-left: 5px solid transparent; +} + + +/* + * Blog name and description + */ + +.blog-header { + padding-top: 20px; + padding-bottom: 20px; +} +.blog-title { + margin-top: 30px; + margin-bottom: 0; + font-size: 60px; + font-weight: 400; +} +.blog-description { + font-size: 20px; + color: #999; +} + + +/* + * Main column and sidebar layout + */ + +.blog-main { + font-size: 18px; + line-height: 1.5; +} + +/* Sidebar modules for boxing content */ +.sidebar-module { + padding: 15px; + margin: 0 -15px 15px; +} +.sidebar-module-inset { + padding: 15px; + background-color: #f5f5f5; + border-radius: 4px; +} +.sidebar-module-inset p:last-child, +.sidebar-module-inset ul:last-child, +.sidebar-module-inset ol:last-child { + margin-bottom: 0; +} + + +/* Pagination */ +.pager { + margin-bottom: 60px; + text-align: left; +} +.pager > li > a { + width: 140px; + padding: 10px 20px; + text-align: center; + border-radius: 30px; +} + + +/* + * Blog posts + */ + +.blog-post { + margin-bottom: 60px; +} +.blog-post-title { + margin-bottom: 5px; + font-size: 40px; +} +.blog-post-meta { + margin-bottom: 20px; + color: #999; +} + +/* + * Canto + */ + +.canto { + margin-bottom: 60px; +} +.titolo-canto { + margin-bottom: 5px; + font-size: 40px; +} +.canto-meta { + margin-bottom: 20px; + color: #999; +} + +/* + * Footer + */ + +.blog-footer { + padding: 40px 0; + color: #999; + text-align: center; + background-color: #f9f9f9; + border-top: 1px solid #e5e5e5; +} +.blog-footer p:last-child { + margin-bottom: 0; +} \ No newline at end of file diff --git a/js/cesareBrowse.js b/js/cesareBrowse.js new file mode 100644 index 0000000..e856ed4 --- /dev/null +++ b/js/cesareBrowse.js @@ -0,0 +1,121 @@ +/** + * + */ + $(document).ready(function() { + + + const sparqlGenerator = sparqljs.Generator; + const myEngine = new Comunica.QueryEngine(); + const sparqlEndpoint = "https://hdnlab1.isti.cnr.it/fuseki/commediaontosintgra/query"; + var listaVersi = new Set() + + $('#cantica1').on('click', function() { + + alert("test fava") + activateMenuItem ('#cantica1') + jsonQuery = versiCantica("cantica1"); + execQuery = new sparqlGenerator().stringify(jsonQuery); + executeQueryVersi(execQuery); + + }); + + jQuery(document).delegate('.navig-canto', 'click', function(e) { + $('.canto').each(function() { + $(this).attr("style", 'display:none'); + }); + $("#"+$(this).attr('name').replace(" ","_")).attr('style','display:block') + + + }); + + //Utility functions + + //activate navigation menu items + + function activateMenuItem(menuItem){ + $('.blog-nav-item').each(function() { + $(this).attr("class", $(this).attr("class").replace(' active','')); + }); + $(menuItem).attr("class", $(menuItem).attr("class")+' active'); + } + + async function executeQueryVersi(query){ + bindingsStream = await myEngine.queryBindings(query, { sources: [ { type: 'sparql', value: sparqlEndpoint }, ], }); + alert(query) + try { + var listaCanti = new Set() + listaVersi = new Set() + + bindingsStream.on('data', (binding) => { + //console.log(binding.toString()); // Quick way to print bindings for testing + //console.log(binding.has('sub')); // Will be true + + //la lista dei canti + listaCanti.add( binding.get('Canto').value) + //la lista dei versi + var obj = new Object(); + obj.numverso = binding.get('NumeroVerso').value; + obj.verso = binding.get('Verso').value; + obj.canto = binding.get('Canto').value; + obj.from = binding.get('from').value; + obj.to = binding.get('to').value; + listaVersi.add(obj) + + }); + bindingsStream.on('end', () => { + + var orderedListaCanti = Array.from(listaCanti) + orderedListaCanti = orderedListaCanti.sort((a, b) => { + if (parseInt(a.split(" ")[1]) < parseInt(b.split(" ")[1])) { + return -1; + } + }); + + var orderedListaVersi = Array.from(listaVersi) + orderedListaVersi = orderedListaVersi.sort((a, b) => { + if (parseInt(a.numverso) < parseInt(b.numverso)) { + return -1; + } + }); + + + for (canto of orderedListaCanti){ + var licanto = $('