Last active
April 12, 2023 08:34
-
-
Save Bludwarf/39bfc031654d40abf3e80f64605ce4ad to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Redmine issue link in Gitlab Merge Request | |
// @namespace https://bludwarf.github.io/ | |
// @version 1.0 | |
// @description Add link to Merge Request title from GitLab to Redmine | |
// @author [email protected] | |
// @match https://gitlab*/*/merge_requests/* | |
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABrVBMVEUAAADnAADfAADdAADkAAvjAAzjAAzjAA3iAAzkAAviAAu/AAD/AADiAAziAAvfAADWAADcCwDcCwDlAADjAAvmAAjZBgDdCwDdCQDcBgDcCgDdCwD/AADUAADiAAziAAvUAADdCwDdCwD/AADdCgDbCQDiAAvfAAa/AADbCwDdCgDbCgDbBwDMAADaAADiAADeCQDQAADcCgDdBwAAAADdCgDcCwDbCgDCAADbCgDcCwDZCADeCgDbCwDfBwC/AADKAADMAADLAADUAADdCQDcCgDJAADJAADLAADKAADTAADLAADLAADKAADaAADIAADLAADMAADLAADKAADNAADLAADNAADLAADKAADOAADLAADLAADKAADEAADLAADMAADKAADMAADMAADKAADLAACjAACUAABVAADKAADNAADLAADLAAB/AACZAAChAAChAAChAAChAACpAACZAACpAACmAACgAAChAACfAAChAACcAACiAAChAACcAACeAAChAAChAACgAACiAACiAACgAACdAACiAAChAACgAAChAAChAADdDADdCwDMAACiAADiOACXAAAAi3RSTlMACwgPhrjT1c2sbQQEzrYQE87fCtUfKfigJe3HAwbRwhLyxgHspJYoCOe8vUAFDgluC7JEAZD+ZBVd/T6V7iAQuPaZGGyjGM38ax3++aUHHNr91ZZt5D7vHU+t5eAatA+9eez4gRwMA4Q0hUoGCm3+rj8SBQkXYdHOtDTk+SdF+N95FqLGFcNMp36IxVriGQAAAU5JREFUOMvdUVc7A0EUvQjRg+gSQnSi914jRO+9J2pECYLoLYzJb7ZzR9ns+Dx6cB7mnrZ3v50F+HMEBP4SBqmCQ9Tq0LDwn+MIiIxSI6IBNEIcExunBRXm8QmQmJSsyFNSCUnT6dNZIQMMmYRkGeW5IZtIyIFctiAvv4CpQnmhiCCKTSWlWs2HeiuTFcormFVZxZWpWhI1td/vqNMB1DeQxi/D2ESaWwBaP3Vbe4ceOrtkG03dgWDusfRy1WeltH9g0P+zhoZHKB3lfIwyjPsXJtCcRD6FfNq/MIPmLKPmOUbnFTe3wEzrIhdLyxa6orz7Vbq2jsRm35DOzS1lYXtHOnYdAHs+5/7B4ZH4d13HJ6c+N8CZD+FS5udoOx1wgcQjLLjkD17BNc4boWDjhVtw4nQLhTteuAcPzgeh8MgLT/DsZXgRCnb0va/wL/AO1zZ1SBk0n4EAAAAASUVORK5CYII= | |
// @grant none | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
class RedmineIssue { | |
constructor(tracker, id) { | |
this.tracker = tracker; | |
this.id = id; | |
} | |
static parse(text) { | |
const match = text.match(/^(\w+).+(\d{5,})/i); | |
if (!match) return undefined; | |
return new RedmineIssue(match[1], match[2]); | |
} | |
} | |
class RedmineServer { | |
constructor(url) { | |
this.url = url; | |
} | |
/** | |
* @param {RedmineIssue} redmineIssue | |
* @return {string} | |
*/ | |
getIssueLink(redmineIssue) { | |
return this.url + 'issues/' + redmineIssue.id; | |
} | |
} | |
function getIssueColor(redmineIssue) { | |
const tracker = redmineIssue.tracker; | |
if (tracker.match(/^ano/i)) return 'var(--red-400)'; // Rouge GitLab | |
if (tracker.match(/vo/i)) return 'var(--green-500)'; // Vert GitLab | |
else 'none'; | |
} | |
function insertAll(redmineIssue, redmineServer) { | |
const h2Tags = document.getElementsByTagName('h2'); | |
const href = redmineServer.getIssueLink(redmineIssue); | |
for (const h2Tag of h2Tags) { | |
console.log('h2', h2Tag); | |
h2Tag.innerHTML = h2Tag.innerHTML | |
.replace(redmineIssue.id, `<a href="${href}" title="Consulter le ticket #${redmineIssue.id} dans Redmine.">${redmineIssue.id}</a>`) | |
.replace(redmineIssue.tracker, `<span style="color: ${getIssueColor(redmineIssue)}">${redmineIssue.tracker}</span>`) | |
; | |
} | |
} | |
const redmineServer = new RedmineServer('http://redmine2:8082/'); | |
const redmineIssue = RedmineIssue.parse(document.title); | |
insertAll(redmineIssue, redmineServer); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment