Spaces:
Running
Running
Update script.js
Browse files
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 |
-
|
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.
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
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 => {
|