Skip to content

Instantly share code, notes, and snippets.

@ulfsauer0815
Created April 7, 2017 07:41
Show Gist options
  • Save ulfsauer0815/d65a1a7ca903d992ad2dec44e6e1cacb to your computer and use it in GitHub Desktop.
Save ulfsauer0815/d65a1a7ca903d992ad2dec44e6e1cacb to your computer and use it in GitHub Desktop.
Colorizing GitHub pull requests by age
// ==UserScript==
// @name GitHub Pull Request Colorizer
// @namespace http://github.com/UlfS
// @version 0.1
// @description Colorizes the pull requests depending on age (green=new, red=older than 10 days)
// @author UlfS
// @match https://github.com/*pulls*
// include /https?://github.com/([^/]+/[^/]+/)?pulls(&.*)?/
// @grant none
// ==/UserScript==
var colorHueRange = [0.32, 0];
var colorSaturation = 1;
var colorLightness = 0.9;
var hourRange = [0, 24*10];
// hslToRgb taken from https://gist.github.com/mjackson/5311256
/**
* Converts an HSL color value to RGB. Conversion formula
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
* Assumes h, s, and l are contained in the set [0, 1] and
* returns r, g, and b in the set [0, 255].
*
* @param Number h The hue
* @param Number s The saturation
* @param Number l The lightness
* @return Array The RGB representation
*/
function hslToRgb(h, s, l) {
var r, g, b;
if (s == 0) {
r = g = b = l; // achromatic
} else {
function hue2rgb(p, q, t) {
if (t < 0) t += 1;
if (t > 1) t -= 1;
if (t < 1/6) return p + (q - p) * 6 * t;
if (t < 1/2) return q;
if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;
return p;
}
var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
var p = 2 * l - q;
r = hue2rgb(p, q, h + 1/3);
g = hue2rgb(p, q, h);
b = hue2rgb(p, q, h - 1/3);
}
return [ r * 255, g * 255, b * 255 ];
}
function pad2(s) {
return s.length < 2 ? '0'+s : s;
}
function toColorCode(x) {
return '#'+ x.map(function(num) {return pad2(Math.round(num).toString(16));}).join("");
}
function norm(fromRange, toRange, value) {
return (toRange[1]-toRange[0])/(fromRange[1]-fromRange[0])*(Math.min(value, fromRange[1])-fromRange[1])+toRange[1];
}
var divs = document.getElementsByClassName('Box-row');
for (var i=0, div; div = divs[i]; i++) {
var date = Date.parse(div.getElementsByTagName("relative-time")[0].getAttribute("datetime"));
var hoursAgo = Math.abs(Date.now() - date) / (60*60*1000);
var colorH = norm(hourRange, colorHueRange, hoursAgo);
var color = toColorCode(hslToRgb(colorH, colorSaturation, colorLightness));
div.style.backgroundColor=color;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment