Ananserver / script.js
abdullahalioo's picture
Update script.js
7461893 verified
document.addEventListener('DOMContentLoaded', function() {
// DOM Elements
const ticketsBody = document.getElementById('ticketsBody');
const refreshBtn = document.getElementById('refreshBtn');
const downloadBtn = document.getElementById('downloadBtn');
const totalTicketsEl = document.getElementById('total-tickets');
const totalCountEl = document.getElementById('total-count');
const uniqueCountriesEl = document.getElementById('unique-countries');
// Load data when page loads
fetchData();
// Event listeners
refreshBtn.addEventListener('click', fetchData);
downloadBtn.addEventListener('click', downloadCSV);
// Fetch data from server
function fetchData() {
fetch('/get_tickets')
.then(response => response.json())
.then(data => {
renderTable(data.tickets);
updateStats(data.tickets);
})
.catch(error => {
console.error('Error fetching data:', error);
alert('Error fetching data. Please try again.');
});
}
// Render table with ticket data
function renderTable(tickets) {
ticketsBody.innerHTML = '';
if (tickets.length === 0) {
ticketsBody.innerHTML = '<tr><td colspan="8" class="no-data">No ticket data available</td></tr>';
return;
}
tickets.forEach(ticket => {
const row = document.createElement('tr');
row.innerHTML = `
<td>${ticket.ticket_number}</td>
<td>${ticket.name}</td>
<td>${ticket.email}</td>
<td>${ticket.phone}</td>
<td>${ticket.tickets_count}</td>
<td>${ticket.country}</td>
<td>${ticket.region}</td>
<td>${formatDate(ticket.timestamp)}</td>
`;
ticketsBody.appendChild(row);
});
}
// Update statistics cards
function updateStats(tickets) {
totalTicketsEl.textContent = tickets.length;
const totalCount = tickets.reduce((sum, ticket) => sum + ticket.tickets_count, 0);
totalCountEl.textContent = totalCount;
const uniqueCountries = new Set(tickets.map(ticket => ticket.country));
uniqueCountriesEl.textContent = uniqueCountries.size;
}
// Format date for display
function formatDate(dateString) {
const options = { year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' };
return new Date(dateString).toLocaleDateString('en-US', options);
}
// Download CSV
function downloadCSV() {
window.location.href = '/download_csv';
}
});