Refined Github Commit Rewind

Make World Better!

当前为 2023-09-12 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Refined Github Commit Rewind
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description Make World Better!
  6. // @author Konv Suu
  7. // @license MIT
  8. // @match https://github.com/**
  9. // @icon https://cdn0.iconfinder.com/data/icons/data-analytics-orchid-vol-2/256/Reverse_Engineering-128.png
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function () {
  14. 'use strict'
  15.  
  16. function reverseTimelineItems() {
  17. const timeline = document.querySelector('.js-navigation-container.js-active-navigation-container.mt-3')
  18. const timelineItems = timeline.querySelectorAll('.TimelineItem.TimelineItem--condensed')
  19. timeline.innerHTML = ''
  20. const timelineItemsArr = Array.from(timelineItems).reverse()
  21.  
  22. timelineItemsArr[0].classList.remove('pt-2')
  23. timelineItemsArr[0].classList.add('pt-0')
  24. timelineItemsArr[timelineItemsArr.length - 1].classList.add('pt-2')
  25.  
  26. timelineItemsArr.forEach((item) => {
  27. reverseCommits(item.querySelector('.Box.Box--condensed'))
  28. timeline.appendChild(item)
  29. })
  30. }
  31.  
  32. function reverseCommits(timeline) {
  33. const commitItems = timeline.querySelectorAll('.Box-row.Box-row--focus-gray.js-commits-list-item.js-navigation-item')
  34. timeline.innerHTML = ''
  35. const commitItemsArr = Array.from(commitItems).reverse()
  36. commitItemsArr.forEach((item) => {
  37. timeline.appendChild(item)
  38. })
  39. }
  40.  
  41. function append() {
  42. const container = document.querySelector('.file-navigation')
  43. const reverseBtn = document.createElement('button')
  44. reverseBtn.classList.add('btn', 'mt-2')
  45. reverseBtn.innerText = 'Reverse'
  46. reverseBtn.addEventListener('click', () => {
  47. reverseTimelineItems()
  48. })
  49. container.appendChild(reverseBtn)
  50. }
  51.  
  52. function run() {
  53. if (location.href.startsWith('https://github.com/') && location.href.split('/').includes('commits'))
  54. append()
  55. }
  56.  
  57. run()
  58.  
  59. // listen to github page loaded event
  60. document.addEventListener('pjax:end', () => run())
  61. document.addEventListener('turbo:render', () => run())
  62. })()