Browse Source

pagination

Alessia 1 year ago
parent
commit
974f038761
3 changed files with 118 additions and 10 deletions
  1. 4 0
      site2/css/mystyle.css
  2. 5 1
      site2/index.html
  3. 109 9
      site2/js/ricerca.js

+ 4 - 0
site2/css/mystyle.css

@@ -77,6 +77,10 @@
   font-weight: bold;
 }
 
+.page:not(#pag_1) {
+  display: none;
+}
+
  /*Loader*/
  .loader {
   border: 16px solid #f3f3f3;

+ 5 - 1
site2/index.html

@@ -7,6 +7,7 @@
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SEARCH PROGETTO 2023</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
+   
    <link rel="stylesheet" href="css/mystyle.css">
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
 <script src="https://cdn.jsdelivr.net/npm/popper.js@1.12.9/dist/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
@@ -44,7 +45,7 @@
 <body>
 
    <script type="text/javascript" src="js/ricerca.js"></script>
-
+   
    <div class="container">
 
       <div id="title" class="row justify-content-center align-items-center">
@@ -184,6 +185,9 @@
 
          </div>
       </div>
+      <div class="row">
+         <div id="navPagination"></div>
+      </div>
       
       <button id="lauchSearchContext" class="btn btn-primary" style="display:none;" onclick="checkContext()">Vai ai contesti</button>
 

+ 109 - 9
site2/js/ricerca.js

@@ -68,14 +68,84 @@ function processOccData(response){
     var keys = Object.keys(response[0]);
     createFirstRowOcc(keys);
     var ll = response.length;
+    let pags = Math.floor(ll / 10);
+    let extraP = ll % 10;
+    if (extraP != 0) {
+      pags = pags + 1;
+    }
+    let pp = 9;
+    let ref = 1;
+
+    createPagination(pags);
+
+    for (var j=1; j<pags+1; j++) {
+      var newDiv = document.createElement('div');
+      newDiv.id = "pag_" + j;
+      newDiv.className = "page";
+      $("#result").append(newDiv)
+    }
+    
+
     for (var i=0; i<ll; i++) {
+      if (i >= pp) {
+        pp = pp + 10;
+        ref = ref + 1;
+      } else {
+        pp = pp;
+      }
       let newRow = response[i];
-      createOccRow(i, newRow);
+
+      createOccRow(i, newRow, ref);
     }
   }
   //$("#result").append(response);
 }
 
+function createPagination(num) {
+  $("#navPagination").html("");
+
+  var navbar = document.createElement('nav');
+  
+  var ulNav = document.createElement('ul');
+  ulNav.className = "pagination";
+
+  var liNavP = document.createElement('li');
+  //liNavP.className = "page-item";
+  liNavP.id = "prev";
+  
+  var aPrev = document.createElement('a');
+  aPrev.className = "page-link";
+  aPrev.innerHTML = "&laquo;";
+
+  liNavP.append(aPrev);
+  ulNav.append(liNavP);
+
+  for (var i=1; i<num+1; i++) {
+    var liNav = document.createElement('li');
+    liNav.className = "page-item";
+    liNav.id = "getPage_" + i;
+    var aNum = document.createElement('a');
+    aNum.className = "page-link";
+    aNum.innerHTML = i;
+    liNav.append(aNum)
+    ulNav.append(liNav);
+  }
+
+  var liNavN = document.createElement('li');
+  liNavN.className = "page-item";
+  liNavN.id = "next";
+  var aNext = document.createElement('a');
+  aNext.className = "page-link";
+  aNext.innerHTML = "&raquo;";
+  liNavN.append(aNext);
+  ulNav.append(liNavN);
+
+  navbar.append(ulNav);
+
+  
+  $("#navPagination").append(navbar);
+}
+
 //Funzione per gestire i contesti
 function processSingleContext(response){
   if(response.length==0){
@@ -276,7 +346,7 @@ $( document ).ready(function() {
       // Animation complete.
     });
   });
-
+  
 });
 
 function createNewCC(occ) {
@@ -477,7 +547,7 @@ function createFirstRowOcc(param) {
   row.id = "first_row";
 
   var colRif = document.createElement('div');
-  colRif.className = "col-5 rifCol";
+  colRif.className = "col-4 rifCol";
   colRif.append("Riferimenti");
   row.append(colRif);
 
@@ -486,7 +556,7 @@ function createFirstRowOcc(param) {
   row.append(colInfoLemma);
 
   var colContesto = document.createElement('div');
-  colContesto.className = "col-5 contestoCol";
+  colContesto.className = "col-6 contestoCol";
   colContesto.append("Contesto");
   row.append(colContesto);
 
@@ -616,7 +686,7 @@ function createRow(num, elem) {
 
 //Crea tabella cooccorrenze
 
-function createOccRow(num, elem) {
+function createOccRow(num, elem, pp) {
   var titolo_abbreviato = elem["Titolo Abbreviato"];
   var contesto = elem["contesto"];
   contesto = contesto.replace(/\n/g, "<br />");
@@ -642,13 +712,13 @@ function createOccRow(num, elem) {
   }
   
   var row = document.createElement('div');
-  row.className = "row height d-flex justify-content-center align-items-center";
+  row.className = "row height d-flex justify-content-center align-items-center pag_" + pp;
   row.id = num;
   var onClickCommand = "goToSingleContext(" + num + ", 31, 0, 0)";
   row.setAttribute("onclick", onClickCommand);
 
   var colRiferimenti = document.createElement('div');
-  colRiferimenti.className = "col-5 rifCol";
+  colRiferimenti.className = "col-4 rifCol";
   colRiferimenti.append(riferimenti);
   row.append(colRiferimenti);
 
@@ -658,7 +728,7 @@ function createOccRow(num, elem) {
   row.append(colInfoLemma);
 
   var colContesto = document.createElement('div');
-  colContesto.className = "col-5 contestoCol";
+  colContesto.className = "col-6 contestoCol";
   colContesto.innerHTML = contesto;
   row.append(colContesto);
 
@@ -718,7 +788,7 @@ function createOccRow(num, elem) {
     row.append(colContesto);
   }*/
 
-  $("#result").append(row);
+  $("#pag_" + pp).append(row);
 
 }
 
@@ -968,4 +1038,34 @@ $( "#context-title" ).on( "click", function() {
   $( "#additional_info" ).toggle( "slow", function() {
     // Animation complete.
   });
+});
+
+$(document).on("click", ".page-item", function (ev) {
+  $(".page-item").removeClass("active");
+  var name = this.id;
+  this.className = "page-item active";
+  var num = name.replace("getPage_", "");
+  var page = "pag_" + num;
+  $("#" + page).css("display", "block");
+  $(".page:not(#" + page +")").css("display", "none"); 
+
+});
+
+$(document).on("click", "#prev", function (ev) {
+  var el = document.getElementsByClassName("page-item active")[0];
+  var name = el.id;
+  var n = name.replace("getPage_", "");
+  var num = n - 1;
+  if (num < 0) {
+    alert("No pages found");
+  } else {
+    $(".page-item").removeClass("active");
+    var page = "pag_" + num;
+    var getPage = "getPage_" + num;
+    var elPage = document.getElementById(getPage);
+    elPage.classList.add("active");
+    $("#" + page).css("display", "block");
+    $(".page:not(#" + page +")").css("display", "none");
+  }
+
 });