ghostai1 commited on
Commit
f3b513c
·
verified ·
1 Parent(s): 218ec82

Update script.js

Browse files
Files changed (1) hide show
  1. script.js +58 -13
script.js CHANGED
@@ -1,35 +1,80 @@
1
  document.addEventListener('DOMContentLoaded', () => {
2
  const tableBody = document.getElementById('dataTable');
3
  const sentimentFilter = document.getElementById('sentimentFilter');
 
 
 
 
4
 
5
  fetch('data.csv')
6
  .then(response => response.text())
7
  .then(data => {
8
  const rows = data.trim().split('\n').slice(1);
9
- const dataset = rows.map(row => {
10
  const [index, text, label] = row.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);
11
  return { index: parseInt(index), text: text.replace(/^"|"$/g, ''), label: label.replace(/^"|"$/g, '') };
12
  });
13
 
14
- function displayData(filter = 'all') {
15
  tableBody.innerHTML = '';
16
- dataset.forEach(item => {
17
- if (filter === 'all' || item.label === filter) {
18
- const row = document.createElement('tr');
19
- row.innerHTML = `
20
- <td>${item.index}</td>
21
- <td>${item.text}</td>
22
- <td>${item.label}</td>
23
- `;
24
- tableBody.appendChild(row);
25
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  });
 
27
  }
28
 
29
  displayData();
30
 
31
  sentimentFilter.addEventListener('change', () => {
32
- displayData(sentimentFilter.value);
33
  });
34
  })
35
  .catch(error => {
 
1
  document.addEventListener('DOMContentLoaded', () => {
2
  const tableBody = document.getElementById('dataTable');
3
  const sentimentFilter = document.getElementById('sentimentFilter');
4
+ const pagination = document.getElementById('pagination');
5
+ const itemsPerPage = 10;
6
+ let currentPage = 1;
7
+ let dataset = [];
8
 
9
  fetch('data.csv')
10
  .then(response => response.text())
11
  .then(data => {
12
  const rows = data.trim().split('\n').slice(1);
13
+ dataset = rows.map(row => {
14
  const [index, text, label] = row.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);
15
  return { index: parseInt(index), text: text.replace(/^"|"$/g, ''), label: label.replace(/^"|"$/g, '') };
16
  });
17
 
18
+ function displayData(filter = 'all', page = 1) {
19
  tableBody.innerHTML = '';
20
+ const filteredData = filter === 'all' ? dataset : dataset.filter(item => item.label === filter);
21
+ const start = (page - 1) * itemsPerPage;
22
+ const end = start + itemsPerPage;
23
+ const paginatedData = filteredData.slice(start, end);
24
+
25
+ paginatedData.forEach(item => {
26
+ const row = document.createElement('tr');
27
+ row.innerHTML = `
28
+ <td>${item.index}</td>
29
+ <td>${item.text}</td>
30
+ <td>${item.label}</td>
31
+ `;
32
+ tableBody.appendChild(row);
33
+ });
34
+
35
+ updatePagination(filteredData.length, page);
36
+ }
37
+
38
+ function updatePagination(totalItems, page) {
39
+ pagination.innerHTML = '';
40
+ const totalPages = Math.ceil(totalItems / itemsPerPage);
41
+
42
+ if (totalPages <= 1) return;
43
+
44
+ const prevLi = document.createElement('li');
45
+ prevLi.className = `page-item ${page === 1 ? 'disabled' : ''}`;
46
+ prevLi.innerHTML = '<a class="page-link" href="#">Previous</a>';
47
+ prevLi.addEventListener('click', (e) => {
48
+ e.preventDefault();
49
+ if (page > 1) displayData(sentimentFilter.value, page - 1);
50
+ });
51
+ pagination.appendChild(prevLi);
52
+
53
+ for (let i = 1; i <= totalPages; i++) {
54
+ const li = document.createElement('li');
55
+ li.className = `page-item ${i === page ? 'active' : ''}`;
56
+ li.innerHTML = `<a class="page-link" href="#">${i}</a>`;
57
+ li.addEventListener('click', (e) => {
58
+ e.preventDefault();
59
+ displayData(sentimentFilter.value, i);
60
+ });
61
+ pagination.appendChild(li);
62
+ }
63
+
64
+ const nextLi = document.createElement('li');
65
+ nextLi.className = `page-item ${page === totalPages ? 'disabled' : ''}`;
66
+ nextLi.innerHTML = '<a class="page-link" href="#">Next</a>';
67
+ nextLi.addEventListener('click', (e) => {
68
+ e.preventDefault();
69
+ if (page < totalPages) displayData(sentimentFilter.value, page + 1);
70
  });
71
+ pagination.appendChild(nextLi);
72
  }
73
 
74
  displayData();
75
 
76
  sentimentFilter.addEventListener('change', () => {
77
+ displayData(sentimentFilter.value, 1);
78
  });
79
  })
80
  .catch(error => {