diff --git a/js/ticket_time_tracking.js b/js/ticket_time_tracking.js index 7c2b2ef1..b9f8d47b 100644 --- a/js/ticket_time_tracking.js +++ b/js/ticket_time_tracking.js @@ -1,49 +1,87 @@ -// Ticket time tracking +document.addEventListener("DOMContentLoaded", function() { -// Default values -var hours = 0; -var minutes = 0; -var seconds = 0; -setInterval(countTime, 1000); + // Default values + var hours = 0; + var minutes = 0; + var seconds = 0; + var timerInterval = null; // variable to hold interval id + var isPaused = false; // variable to track if the timer is paused -// Counter -function countTime() -{ - ++seconds; - if (seconds == 60) { - seconds = 0; - minutes++; - } - if (minutes == 60) { - minutes = 0; - hours++; + function startTimer() { + if(timerInterval === null) { + timerInterval = setInterval(countTime, 1000); + } } - // Total timeworked - var time_worked = pad(hours) + ":" + pad(minutes) + ":" + pad(seconds); - document.getElementById("time_worked").value = time_worked; -} + // Counter + function countTime() { + ++seconds; + if (seconds == 60) { + seconds = 0; + minutes++; + } + if (minutes == 60) { + minutes = 0; + hours++; + } -// Allows manually adjusting the timer -function setTime() -{ - var time_as_text = document.getElementById("time_worked").value; - const time_text_array = time_as_text.split(":"); - hours = parseInt(time_text_array[0]); - minutes = parseInt(time_text_array[1]); - seconds = parseInt(time_text_array[2]); -} + // Total time worked + var time_worked = pad(hours) + ":" + pad(minutes) + ":" + pad(seconds); + document.getElementById("time_worked").value = time_worked; + } -// This function "pads" out the values, adding zeros if they are required -function pad(val) -{ - var valString = val + ""; - if (valString.length < 2) - { - return "0" + valString; + // Allows manually adjusting the timer + function setTime() { + var time_as_text = document.getElementById("time_worked").value; + const time_text_array = time_as_text.split(":"); + hours = parseInt(time_text_array[0]); + minutes = parseInt(time_text_array[1]); + seconds = parseInt(time_text_array[2]); + if (!isPaused) { + startTimer(); // start the timer when time is manually adjusted + } } - else - { - return valString; + + // This function "pads" out the values, adding zeros if they are required + function pad(val) { + var valString = val + ""; + if (valString.length < 2) { + return "0" + valString; + } else { + return valString; + } } -} \ No newline at end of file + + // Function to pause the timer + function pauseTimer() { + if(timerInterval !== null) { + clearInterval(timerInterval); + timerInterval = null; + } + } + + // Function to toggle the timer + function toggleTimer() { + var button = document.getElementById("toggleTimer"); + if(isPaused) { + // If timer is paused, then start the timer and change the button icon to pause + startTimer(); + button.innerHTML = ''; + isPaused = false; + } else { + // If timer is running, then pause the timer and change the button icon to play + pauseTimer(); + button.innerHTML = ''; + isPaused = true; + } + } + + // Start timer when page is loaded + startTimer(); + + // Set setTime as the onchange event handler for the time input + document.getElementById("time_worked").addEventListener('change', setTime); + + // Toggle timer when button is clicked + document.getElementById("toggleTimer").addEventListener('click', toggleTimer); +}); diff --git a/ticket.php b/ticket.php index 6d665968..64d729c5 100644 --- a/ticket.php +++ b/ticket.php @@ -310,6 +310,9 @@ if (isset($_GET['ticket_id'])) { +
+ +