1. class FormSubmissionTimer {
  2. constructor(formId) {
  3. this.formId = formId;
  4. this.startTime = null;
  5. this.submissionCount = 0;
  6. this.totalTime = 0;
  7. this.submissionTimes = []; // Array to store submission times
  8. }
  9. start() {
  10. this.startTime = performance.now(); // Record start time
  11. }
  12. stop() {
  13. if (this.startTime === null) {
  14. console.warn("stop() called before start().");
  15. return;
  16. }
  17. const endTime = performance.now();
  18. const submissionTime = endTime - this.startTime;
  19. this.submissionTimes.push(submissionTime);
  20. this.totalTime += submissionTime;
  21. this.submissionCount++;
  22. this.startTime = null; // Reset start time for next submission
  23. this.logSubmission(this.submissionCount, submissionTime);
  24. }
  25. logSubmission(submissionNumber, submissionTime) {
  26. const formattedTime = (submissionTime / 1000).toFixed(3); // Convert to seconds
  27. console.log(`Submission ${submissionNumber}: Time = ${formattedTime} seconds`);
  28. }
  29. getAverageSubmissionTime() {
  30. if (this.submissionCount === 0) {
  31. return 0;
  32. }
  33. return this.totalTime / this.submissionCount;
  34. }
  35. reset() {
  36. this.startTime = null;
  37. this.submissionCount = 0;
  38. this.totalTime = 0;
  39. this.submissionTimes = [];
  40. }
  41. }
  42. // Example usage (assuming you have a form with id 'myForm'):
  43. // const formTimer = new FormSubmissionTimer('myForm');
  44. // formTimer.start();
  45. // // When the form is submitted:
  46. // formTimer.stop();
  47. // // To get the average time:
  48. // const averageTime = formTimer.getAverageSubmissionTime();
  49. // console.log(`Average submission time: ${averageTime} seconds`);
  50. // //resetting the timer
  51. // //formTimer.reset();

Add your comment