class Common { constructor() { this.activityIndicator = document.getElementById('activity_indicator'); this.endTimeElement = document.getElementById('end_time'); this.serverTimeElement = document.getElementById('server_time'); this.init(); } init() { this.updateServerTime(); setInterval(() => this.updateServerTime(), 60000); // Update every minute this.checkScrapingStatus(); } async fetchEndTime() { try { const response = await fetch('/scraping_get_end_time'); const data = await response.json(); if (data.end_time) { const endTime = new Date(data.end_time); const localEndTime = endTime.toLocaleString(); this.endTimeElement.textContent = `End Time: ${endTime} TCT`; } } catch (error) { this.endTimeElement.textContent = 'Error fetching end time'; console.error('Error fetching end time:', error); } } async updateServerTime() { try { const response = await fetch('/server_time'); const data = await response.json(); this.serverTimeElement.textContent = `Server Time (UTC): ${data.server_time}`; } catch (error) { console.error('Error fetching server time:', error); } } async checkScrapingStatus() { try { const response = await fetch('/scraping_status'); const data = await response.json(); if (data.scraping_active) { this.activityIndicator.classList.remove('text-bg-danger'); this.activityIndicator.classList.add('text-bg-success'); this.activityIndicator.textContent = 'Active'; this.endTimeElement.classList.remove('d-none'); this.endTimeElement.textContent = data.end_time; await this.fetchEndTime(); } else { this.activityIndicator.classList.remove('text-bg-success'); this.activityIndicator.classList.add('text-bg-danger'); this.activityIndicator.textContent = 'Inactive'; this.endTimeElement.textContent = ''; this.endTimeElement.classList.add('d-none'); } } catch (error) { console.error('Error checking scraping status:', error); } } } document.addEventListener('DOMContentLoaded', () => { new Common(); }); function checkAllCheckboxes(tableId, checkAllCheckboxId) { const table = document.getElementById(tableId); const checkboxes = table.querySelectorAll('input[type="checkbox"]:not(:disabled)'); const checkAllCheckbox = document.getElementById(checkAllCheckboxId); checkboxes.forEach(checkbox => checkbox.checked = checkAllCheckbox.checked); }