File size: 3,666 Bytes
3e1f389
 
 
f3b513c
 
 
 
3e1f389
 
 
 
218ec82
f3b513c
3e1f389
 
 
 
f3b513c
3e1f389
f3b513c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3e1f389
f3b513c
3e1f389
 
 
 
 
f3b513c
3e1f389
 
 
 
 
 
 
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
document.addEventListener('DOMContentLoaded', () => {
    const tableBody = document.getElementById('dataTable');
    const sentimentFilter = document.getElementById('sentimentFilter');
    const pagination = document.getElementById('pagination');
    const itemsPerPage = 10;
    let currentPage = 1;
    let dataset = [];

    fetch('data.csv')
        .then(response => response.text())
        .then(data => {
            const rows = data.trim().split('\n').slice(1);
            dataset = rows.map(row => {
                const [index, text, label] = row.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);
                return { index: parseInt(index), text: text.replace(/^"|"$/g, ''), label: label.replace(/^"|"$/g, '') };
            });

            function displayData(filter = 'all', page = 1) {
                tableBody.innerHTML = '';
                const filteredData = filter === 'all' ? dataset : dataset.filter(item => item.label === filter);
                const start = (page - 1) * itemsPerPage;
                const end = start + itemsPerPage;
                const paginatedData = filteredData.slice(start, end);

                paginatedData.forEach(item => {
                    const row = document.createElement('tr');
                    row.innerHTML = `
                        <td>${item.index}</td>
                        <td>${item.text}</td>
                        <td>${item.label}</td>
                    `;
                    tableBody.appendChild(row);
                });

                updatePagination(filteredData.length, page);
            }

            function updatePagination(totalItems, page) {
                pagination.innerHTML = '';
                const totalPages = Math.ceil(totalItems / itemsPerPage);

                if (totalPages <= 1) return;

                const prevLi = document.createElement('li');
                prevLi.className = `page-item ${page === 1 ? 'disabled' : ''}`;
                prevLi.innerHTML = '<a class="page-link" href="#">Previous</a>';
                prevLi.addEventListener('click', (e) => {
                    e.preventDefault();
                    if (page > 1) displayData(sentimentFilter.value, page - 1);
                });
                pagination.appendChild(prevLi);

                for (let i = 1; i <= totalPages; i++) {
                    const li = document.createElement('li');
                    li.className = `page-item ${i === page ? 'active' : ''}`;
                    li.innerHTML = `<a class="page-link" href="#">${i}</a>`;
                    li.addEventListener('click', (e) => {
                        e.preventDefault();
                        displayData(sentimentFilter.value, i);
                    });
                    pagination.appendChild(li);
                }

                const nextLi = document.createElement('li');
                nextLi.className = `page-item ${page === totalPages ? 'disabled' : ''}`;
                nextLi.innerHTML = '<a class="page-link" href="#">Next</a>';
                nextLi.addEventListener('click', (e) => {
                    e.preventDefault();
                    if (page < totalPages) displayData(sentimentFilter.value, page + 1);
                });
                pagination.appendChild(nextLi);
            }

            displayData();

            sentimentFilter.addEventListener('change', () => {
                displayData(sentimentFilter.value, 1);
            });
        })
        .catch(error => {
            console.error('Error loading data:', error);
            tableBody.innerHTML = '<tr><td colspan="3">Error loading dataset.</td></tr>';
        });
});