diff --git a/src/main.js b/src/main.js index 1432a5d..f6ede17 100644 --- a/src/main.js +++ b/src/main.js @@ -1,11 +1,15 @@ import './styles.css' // Configuration -const UPDATE_INTERVAL = 250 // ms +const UPDATE_INTERVAL = 2000 // ms const HISTORY_DURATION = 300 // seconds -const MAX_HISTORY_POINTS = Math.ceil((HISTORY_DURATION * 1000) / UPDATE_INTERVAL) // 1200 points +const MAX_HISTORY_POINTS = Math.ceil((HISTORY_DURATION * 1000) / UPDATE_INTERVAL) // 150 points const REQUEST_TIMEOUT = 5000 // ms +// Pause state +let isPaused = false +let intervalId = null + // Hosts to monitor (IPv4 preferred endpoints) const HOSTS = [ { name: 'Google Cloud Console', url: 'https://console.cloud.google.com', color: '#4285f4' }, @@ -201,11 +205,27 @@ function createUI() { app.innerHTML = `
-

NetWatch

+
+

NetWatch

+ +

Real-time network latency monitor | - Updates every ${UPDATE_INTERVAL}ms | - History: ${HISTORY_DURATION}s + Updates every ${UPDATE_INTERVAL / 1000}s | + History: ${HISTORY_DURATION}s | + Running

@@ -374,13 +394,48 @@ function handleResize() { }) } +// Toggle pause state +function togglePause() { + isPaused = !isPaused + + const pauseIcon = document.getElementById('pause-icon') + const playIcon = document.getElementById('play-icon') + const pauseText = document.getElementById('pause-text') + const statusIndicator = document.getElementById('status-indicator') + + if (isPaused) { + // Stop the interval + if (intervalId) { + clearInterval(intervalId) + intervalId = null + } + pauseIcon.classList.add('hidden') + playIcon.classList.remove('hidden') + pauseText.textContent = 'Resume' + statusIndicator.textContent = 'Paused' + statusIndicator.className = 'text-yellow-400' + } else { + // Resume the interval + measureAll() + intervalId = setInterval(measureAll, UPDATE_INTERVAL) + pauseIcon.classList.remove('hidden') + playIcon.classList.add('hidden') + pauseText.textContent = 'Pause' + statusIndicator.textContent = 'Running' + statusIndicator.className = 'text-green-400' + } +} + // Initialize function init() { createUI() + // Wire up pause button + document.getElementById('pause-btn').addEventListener('click', togglePause) + // Start measurement loop measureAll() - setInterval(measureAll, UPDATE_INTERVAL) + intervalId = setInterval(measureAll, UPDATE_INTERVAL) // Handle resize window.addEventListener('resize', handleResize)