// Initialize session variables let sessionStartTime; let lastButtonClickTime; // Function to generate a random session ID function generateSessionId() { return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15); } // Function to fetch a random animal name from the server async function getNextAnimal() { try { const response = await fetch('/getNextAnimal'); const data = await response.json(); document.getElementById('animal-name').textContent = data.animalName; } catch (error) { console.error('Error fetching data:', error); } } // Function to set or retrieve the session ID cookie function getSessionId() { const sessionId = document.cookie.replace(/(?:(?:^|.*;\s*)sessionId\s*=\s*([^;]*).*$)|^.*$/, '$1'); if (!sessionId) { const newSessionId = generateSessionId(); document.cookie = `sessionId=${newSessionId}`; return newSessionId; } return sessionId; } function clearSessionId() { document.cookie = ``; } // Function to set session start time function setSessionStartTime() { sessionStartTime = new Date(); } // Function to calculate and display time difference function displayTimeDifference() { if (sessionStartTime && lastButtonClickTime) { const timeDifference = lastButtonClickTime - sessionStartTime; console.log(`Time since session start: ${timeDifference} milliseconds`); // You can display the time difference on the page as needed } } // Add click event listeners to the buttons document.getElementById('isCritterButton').addEventListener('click', () => { recordButtonClick('is critter', getSessionId()); }); document.getElementById('isNotCritterButton').addEventListener('click', () => { recordButtonClick('is not critter', getSessionId()); }); document.getElementById('startOverButton').addEventListener('click', () => { clearSessionId(); }); // Function to record button clicks on the server async function recordButtonClick(buttonName, sessionId) { try { const currentTime = new Date(); if (lastButtonClickTime) { const timeDifference = currentTime - lastButtonClickTime; // Include the time difference in the POST request data const animal = document.getElementById('animal-name').textContent; await fetch('/recordButtonClick', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ "animal": animal, "button": buttonName, "session": sessionId, "difference": timeDifference, "time": sessionStartTime }), }); } lastButtonClickTime = currentTime; // Record the timestamp of the button click displayTimeDifference(); // Calculate and display time difference // TODO - slight delay before loading next animal, to show the user how long that decision took them getNextAnimal(); // Load another random animal } catch (error) { console.error('Error recording button click:', error); } } // Initial random animal load and session start time getNextAnimal(); setSessionStartTime();