[GC] UL Trophy ordering

Order trophies by gold/silver/bronze in every userlookup and also shows the CSS code used in the browser's console

  1. // ==UserScript==
  2. // @name [GC] UL Trophy ordering
  3. // @namespace https://greasyfork.org/users/1230396
  4. // @version 1.0
  5. // @description Order trophies by gold/silver/bronze in every userlookup and also shows the CSS code used in the browser's console
  6. // @author Berna
  7. // @match https://www.grundos.cafe/userlookup/?user=*
  8. // @icon https://i.imgur.com/gDxnNrn.gif
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12. function extractUrlEndAndApplyCSS() {
  13. var elements = document.querySelectorAll('.ul__gametrophy');
  14.  
  15. var cssRulesByOrder = {};
  16.  
  17. elements.forEach(function (element) {
  18. var lastClass = element.classList[element.classList.length - 1];
  19.  
  20. var imgElement = element.querySelector('img');
  21.  
  22. if (imgElement) {
  23. var srcAttribute = imgElement.getAttribute('src');
  24. var urlEnd = srcAttribute.substring(srcAttribute.lastIndexOf('/') + 1);
  25.  
  26. var orderMatch = urlEnd.match(/_(\d+)\.gif/);
  27. var order = orderMatch ? orderMatch[1] : '';
  28.  
  29. if (!cssRulesByOrder[order]) {
  30. cssRulesByOrder[order] = [];
  31. }
  32.  
  33. cssRulesByOrder[order].push('.' + lastClass + ',');
  34. }
  35. });
  36.  
  37. var styleElement = document.createElement('style');
  38.  
  39. document.head.appendChild(styleElement);
  40.  
  41. for (var order in cssRulesByOrder) {
  42. var cssRules = cssRulesByOrder[order].join(' ');
  43. var cssRuleText = cssRules.slice(0, -1) + ' { order: ' + order + '; }';
  44.  
  45. console.log(cssRuleText);
  46.  
  47. styleElement.textContent += cssRuleText;
  48. }
  49. }
  50.  
  51. extractUrlEndAndApplyCSS();