many things for github PRs
// ==UserScript==
// @name PR page improvements
// @namespace http://tampermonkey.net/
// @version 1.5
// @description many things for github PRs
// @author Me
// @match https://github.com/ebuzzing/*/pull/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=github.com
// @grant none
// ==/UserScript==
(function() {
'use strict';
let lastUrl = location.href;
// --------
// -------- PR jobs no scroll, infinite height
// --------
// Add style to the document
const style = document.createElement('style');
style.textContent = '.branch-action-item.open>.merge-status-list.hide-closed-list { max-height: 1000vh !important; }';
document.head.appendChild(style);
// Create a MutationObserver to monitor the DOM for changes
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
if (mutation.addedNodes.length > 0) {
// Check if any of the added nodes contain the elements we are interested in
// --------
// -------- PR jobs links target blank
// --------
document.querySelectorAll('a.status-actions').forEach(e => {
e.setAttribute('target', '_blank');
});
// --------
// -------- All sonarcloud links target blank
// --------
[...document.querySelectorAll('a')].filter(e => e.getAttribute('href').includes("http")).forEach(link => link.setAttribute('target', '_blank'));
// --------
// -------- For Marine highlight buttons in red in PRs that do not belong to you
// --------
if (document.querySelector("#partial-discussion-header > div.d-flex.flex-items-center.flex-wrap.mt-0.gh-header-meta > div.flex-auto.min-width-0.mb-2 > a").innerText !== "github-louis-yvelin") Array.from(document.querySelectorAll("div.merge-message button")).forEach((e) => e.setAttribute('style', "background-color: red"));
}
lastUrl = location.href;
});
});
// Configure the observer to watch for additions to the child list of the target node
const config = { childList: true, subtree: true };
// Start observing the document body for changes
observer.observe(document.body, config);
// --------
// -------- Add hide whitespace by default
// --------
const goToFilesElement = document.querySelector("#repo-content-pjax-container > div > div.clearfix.js-issues-results > div.px-3.px-md-0.ml-n3.mr-n3.mx-md-0.tabnav > nav > a:nth-child(4)");
goToFilesElement&& goToFilesElement.setAttribute('href', goToFilesElement.getAttribute('href') + '?w=1');
})();