Leetcode Timer

Start a timer whenever a user loads a problem at Leetcode.com

Verze ze dne 18. 05. 2020. Zobrazit nejnovější verzi.

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