The Works Burger Chooser

Choose a random burger on the works menu

Від 06.03.2018. Дивіться остання версія.

  1. // ==UserScript==
  2. // @name The Works Burger Chooser
  3. // @namespace https://greasyfork.org/users/649
  4. // @version 1.2
  5. // @description Choose a random burger on the works menu
  6. // @author Adrien Pyke
  7. // @match *://worksburger.com/menu/burger-menu/*
  8. // @grant unsafeWindow
  9. // ==/UserScript==
  10.  
  11. (() => {
  12. 'use strict';
  13.  
  14. let W = (typeof unsafeWindow === 'undefined') ? window : unsafeWindow;
  15.  
  16. const SCRIPT_NAME = 'The Works Burger Chooser';
  17.  
  18. const Util = {
  19. log(...args) {
  20. args.unshift(`%c${SCRIPT_NAME}:`, 'font-weight: bold;color: #233c7b;');
  21. console.log(...args);
  22. },
  23. q(query, context = document) {
  24. return context.querySelector(query);
  25. },
  26. qq(query, context = document) {
  27. return Array.from(context.querySelectorAll(query));
  28. },
  29. css(css) {
  30. let out = '';
  31. for (let rule in css) {
  32. out += rule + ':' + css[rule] + '!important;';
  33. }
  34. return out;
  35. },
  36. prepend(parent, child) {
  37. parent.insertBefore(child, parent.firstChild);
  38. },
  39. randomColor() {
  40. let letters = '0123456789ABCDEF'.split('');
  41. let color = '#';
  42. for (let i = 0; i < 6; i++) {
  43. color += letters[Math.floor(Math.random() * letters.length)];
  44. }
  45. return color;
  46. }
  47. };
  48.  
  49. const selectBurger = function() {
  50. Util.log('Choosing Random Burger...');
  51.  
  52. let burgers = Util.qq('.vc_grid-item-mini');
  53. burgers.forEach(burger => {
  54. burger.removeAttribute('style');
  55. });
  56.  
  57. let burger = burgers[Math.floor(Math.random() * burgers.length)];
  58.  
  59. Util.log(burger);
  60.  
  61. burger.setAttribute('style', Util.css({
  62. 'transition': '.5s',
  63. 'box-shadow': 'inset 0 0 100px ' + Util.randomColor(),
  64. 'transform': 'scale(1.2, 1.2)',
  65. 'border-radius': '20px'
  66. }));
  67.  
  68. setTimeout(() => {
  69. burger.style.transform = 'scale(1, 1)';
  70. }, 500);
  71.  
  72. burger.scrollIntoView();
  73. };
  74.  
  75. if (W.BM_MODE) {
  76. selectBurger();
  77. } else {
  78. Util.log('Adding Button...');
  79. let button = document.createElement('button');
  80. button.textContent = 'Choose Random Burger';
  81. button.setAttribute('style', Util.css({
  82. 'position': 'fixed',
  83. 'bottom': '20px',
  84. 'left': '20px',
  85. 'padding': '5px',
  86. 'z-index': 99999
  87. }));
  88. button.onclick = e => {
  89. e.stopImmediatePropagation();
  90. e.preventDefault();
  91. selectBurger();
  92. };
  93. document.body.appendChild(button);
  94. }
  95. })();