X-Git-Url: https://src.twobees.de/?a=blobdiff_plain;f=AzureDevOpsCommentEnhancer.user.js;h=302769dadba0d68c23da9b205e2c28ad9ac134c8;hb=6743cb0f3fc9640489bbea6a724312ed98becbbb;hp=aa338109e0cbfd84efe0cb9687d93c36bb3ec0b2;hpb=585e782df064fcc0c31d584a9ea182245e060a89;p=tampermonkeyscripts.git diff --git a/AzureDevOpsCommentEnhancer.user.js b/AzureDevOpsCommentEnhancer.user.js index aa33810..302769d 100755 --- a/AzureDevOpsCommentEnhancer.user.js +++ b/AzureDevOpsCommentEnhancer.user.js @@ -1,24 +1,27 @@ // ==UserScript== // @name Fix ADS checkin comments in discussion and history of workitems -// @version 0.7 +// @version 0.10 // @author Tobias Sachs // ... in @match replace "ads" with the url of you Azure DevOps Server // @match https://ads/* -// @updateURL https://github.com/tsheba/tampermonkeyscripts/raw/master/AzureDevOpsCommentEnhancer.user.js -// @downloadURL https://github.com/tsheba/tampermonkeyscripts/raw/master/AzureDevOpsCommentEnhancer.user.js +// @updateURL https://src.twobees.de/?p=tampermonkeyscripts.git;a=blob_plain;f=AzureDevOpsCommentEnhancer.user.js;hb=HEAD +// @downloadURL https://src.twobees.de/?p=tampermonkeyscripts.git;a=blob_plain;f=AzureDevOpsCommentEnhancer.user.js;hb=HEAD // @grant none // @description // ==/UserScript== -// 0.7: fix work item tampering -// 0.6: Add link to Changeset in diff view +// 0.10: #Bugnumber to links, highlight comments for customors in checkins +// 0.09: update download/update URLs +// 0.08: fix typos/formatting +// 0.07: fix work item tampering +// 0.06: Add link to Changeset in diff view +/* jshint esversion:6 */ (function() { 'use strict'; - let timerId = undefined; + let timerId; - let fixWorkitems = () => - { + let fixWorkitems = () => { let found = document.getElementsByClassName("comment-content"); fixCommentContents(found); @@ -26,81 +29,80 @@ fixCommentContents(found); console.debug("observe..."); - } - let fixCommentContents = (items) => - { - if (items === null || items === undefined || items.length === 0) - { + }; + + let fixCommentContents = (items) => { + if (items === null || items === undefined || items.length === 0) { return; } console.info("fixing '" + items.length +"' comments."); - for (var i = 0; i < items.length; i++){ + for (var i = 0; i < items.length; i++) { let el = items[i]; let html = el.innerHTML; - if (html.startsWith("Associated")) - { - html = html.replace(/(Associated with changeset )(\d*):/, "$1$2:
"); - el.innerHTML = html.replace(/\n/gi, "
"); + if (html.startsWith("Associated")) { + html = html.replace(/(Associated with changeset )(\d*):/, + "$1$2:
"); + html = html.replace(/#(\d+)/g, "#$1"); + html = html.replace(/\n/gi, "
"); + html = html.replace(/(@@CUST.*)/s, "
$1"); + el.innerHTML = html; } } }; - let fixVersionControl = () => - { + let fixVersionControl = () => { let elToFix; let found = document.getElementsByClassName("changeset-version")[0]; - if (found) { - // if opened from email notification it is the first span in div "changeset-version" - elToFix = found.querySelector("span"); - } - else - { - // if opened from histrory in ads it is the span in div "changeset-id" - // elToFix = document.getElementsByClassName("changeset-id")[0]; - } - if (!elToFix) - { + if (!found) { return; } - elToFix.innerHTML = elToFix.innerHTML.replace(/(Changeset )(\d+)/, "$1$2"); + // if opened from email notification, it is the first span in div "changeset-version" + elToFix = found.querySelector("span"); - } + if (!elToFix) { + return; + } + + elToFix.innerHTML = elToFix.innerHTML + .replace(/(Changeset )(\d+)/, + "$1$2"); + }; let fixit = () => { - if (timerId){ + if (timerId) { console.debug("fixit timerreset..."); clearTimeout(timerId); } observer.disconnect(); - timerId = setTimeout(function(){ + timerId = setTimeout(function() { timerId = undefined; let url = window.location.href; - if (url.includes("/_versionControl")) - { + if (url.includes("/_versionControl")) { fixVersionControl(); } - else{ + else { // if (url.includes("/_workitems")){ - // does not work since workitem are often shown in - // diaolgs on random pages + // does not work since workitems are often shown in + // dialogs on random pages fixWorkitems(); } - // keep watching for changes. + // keep watching for changes observer.observe(document, { subtree: true, childList: true, characterData: true }); }, 300); }; const observer = new MutationObserver(function() { - console.debug('observertriggered...'); + console.debug('observer was triggered...'); fixit(); }); fixit(); })(); +