Socialify

Folder ..

Viewing beneficiaries.js
86 lines (82 loc) • 3.0 KB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// Get current page and limit query parameter
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const page = urlParams.get("page") || 1;
const limit = urlParams.get("limit") || 100;
const numberOfPages = Math.ceil(count / limit);
const pagination = $(".pagination");
const pageLeft = $('#pageLeft');
const pageRight = $('#pageRight');
if (page > 1) {
  pageLeft.removeClass("disabled");
  pageLeft.attr("href", `/beneficiaries?page=${parseInt(page) - 1}&limit=${limit}`);
} else {
  pageLeft.addClass("disabled");
}
if (page < numberOfPages) {
  pageRight.removeClass("disabled");
  pageRight.attr("href", `/beneficiaries?page=${parseInt(page) + 1}&limit=${limit}`);
} else {
  pageRight.addClass("disabled");
}

function redirectToLimit(limit) {
  window.location.href = `/beneficiaries?page=1&limit=${limit}`;
}

addPageNumbers(numberOfPages);

function addPageNumbers(numberOfPages) {
  // Add page numbers from current page to 2 pages before and 2 pages after, if there are more than 5 pages
  if (numberOfPages > 5) {
    let startingPoint = page - 2;
    if (page < 3) {
      startingPoint = 1;
    } else if (page > numberOfPages - 2) {
      startingPoint = numberOfPages - 4;
    } else {
      startingPoint = page - 2;
    }
    for (let i = startingPoint; i < startingPoint + 5; i++) {
      const linkElement = document.createElement("a");
      linkElement.innerHTML = i;
      linkElement.setAttribute("href", `/beneficiaries?page=${i}&limit=${limit}`);
      linkElement.setAttribute("id", `page${i}`);
      linkElement.classList.add("item");
      pageRight.before(linkElement);
    }
      // add dots
    const dots = document.createElement("a");
    dots.innerHTML = "...";
    dots.classList.add("item");
    pageRight.before(dots);

    // add first page if page > 3
    if (page > 3) {
      const firstPage = document.createElement("a");
      firstPage.innerHTML = 1;
      firstPage.setAttribute("href", `/beneficiaries?page=1&limit=${limit}`);
      firstPage.setAttribute("id", `page1`);
      firstPage.classList.add("item");
      pageLeft.after(dots);
      pageLeft.after(firstPage);
    }

    // add last page
    if (page != numberOfPages) {
      const lastPage = document.createElement("a");
      lastPage.innerHTML = numberOfPages;
      lastPage.setAttribute("href", `/beneficiaries?page=${numberOfPages}&limit=${limit}`);
      lastPage.classList.add("item");
      pageRight.before(lastPage);
    }
  } else {
    // add page numbers
    for (let i = 1; i <= numberOfPages; i++) {
      // Insert before pageRight
      const linkElement = document.createElement("a");
      linkElement.innerHTML = i;
      linkElement.setAttribute("href", `/beneficiaries?page=${i}&limit=${limit}`);
      linkElement.setAttribute("id", `page${i}`);
      linkElement.classList.add("item");
      pageRight.before(linkElement);
    }
  }
  const currentPageElement = document.getElementById(`page${page}`);
  currentPageElement.classList.add("active");
}