Leetcode Timer

As of 2020-05-18. See the latest version.

  1. // ==UserScript==
  2. // @name Leetcode Timer
  3. // @description:en Start a timer whenever a user loads a problem at Leetcode.com
  4. // @version 1
  5. // @grant none
  6. // @include *://*leetcode.com/problems/*
  7. // @author ketankr9
  8. // @namespace https://greatest.deepsurf.us/users/564674
  9. // ==/UserScript==
  10.  
  11.  
  12. function countdownTimer() {
  13. var difference = +new Date() - startTime;
  14. var elapsed = "0";
  15.  
  16. var parts = {
  17. days: Math.floor(difference / (1000 * 60 * 60 * 24)),
  18. hours: Math.floor((difference / (1000 * 60 * 60)) % 24),
  19. minutes: Math.floor((difference / 1000 / 60) % 60),
  20. seconds: Math.floor((difference / 1000) % 60)
  21. };
  22.  
  23. elapsed = Object.keys(parts)
  24. .map(part => {
  25. if (!parts[part]) return;
  26. return `${parts[part]} ${part}`;
  27. })
  28. .join(" ");
  29. document.getElementById("countdown").innerHTML = elapsed;
  30. }
  31.  
  32. var f = function(div){
  33. div.innerHTML = '<div id="countdown" style="font-size:20px;"></div>' + div.innerHTML;
  34. startTime = +new Date();
  35. setInterval(countdownTimer, 1000);
  36. }
  37.  
  38. function waitForElementToDisplay(selector, time, f) {
  39. var node = document.getElementsByClassName(selector);
  40. console.log(node);
  41. if(node.length > 0) {
  42. console.log("Element Found");
  43. f(node[0])
  44. return;
  45. }
  46. setTimeout(function() {
  47. waitForElementToDisplay(selector, time, f);
  48. }, time);
  49. }
  50.  
  51. var startTime;
  52. waitForElementToDisplay("btns__1OeZ", 1000, f);