]> src.twobees.de Git - tampermonkeyscripts.git/blobdiff - AzureDevOpsCommentEnhancer.user.js
0.18: make '@@DEPENDENCIES' blue
[tampermonkeyscripts.git] / AzureDevOpsCommentEnhancer.user.js
old mode 100755 (executable)
new mode 100644 (file)
index 053be6c..b42e8be
@@ -1,6 +1,6 @@
 // ==UserScript==
 // @name         Fix ADS checkin comments in discussion and history of workitems
-// @version      0.11
+// @version      0.18
 // @author       Tobias Sachs
 //  ... in @match replace "ads" with the url of you Azure DevOps Server
 // @match        https://ads/*
 // @description
 // ==/UserScript==
 
-// 0.11: #fix comments in Bugs opened via mention email notification
+// 0.18: make '@@DEPENDENCIES' blue
+// 0.17: search caseless for '@@CUST'
+// 0.16: do not modify a comment more than once
+// 0.15: fix links to work items found in commitmessages (e.g. #1235)
+// 0.14: also check html property of comments
+// 0.13: Allow to manually insert changeset comments, which where not associated with the item during checking.
+//       Just copy changecomment into the commentsection and prefix with "Associated with changeset CHANGESET_NUMBER:"
+// 0.12: also fix "Resolved with changeset" comments
+// 0.11: fix regexp for later changesets attached.
 // 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.09: updateq download/update URLs
+// 0.08: fix typregexp for later changesets attachedos/formatting
+// 0.07: fix work itlsem tampering
 // 0.06: Add link to Changeset in diff view
 
 /* jshint esversion:6 */
     let timerId;
 
     let fixWorkitems = () => {
-        console.debug("fixWorkitems...");
         let found = document.getElementsByClassName("comment-content");
-        if (fixCommentContents(found)) return;
+        fixCommentContents(found);
 
         found = document.getElementsByClassName("history-item-comment");
-        if (fixCommentContents(found)) return;
+        fixCommentContents(found);
 
-        found = document.getElementsByClassName("comments-section");
-        if (fixCommentContents(found)) return;
-
-        console.debug("... notihing found to fix..");
+        console.debug("observe...");
     };
 
+    let checkRegex = /^.*(Associated|Resolved).*[:.]/;
     let fixCommentContents = (items) => {
         if (items === null || items === undefined || items.length === 0) {
-            return false;
+            return;
         }
         console.info("fixing '" + items.length +"' comments.");
         for (var i = 0; i < items.length; i++) {
             let el = items[i];
+            if(el.wasTampered) { continue; }
+
             let html = el.innerHTML;
-            if (html.startsWith("Associated")) {
-                html = html.replace(/(Associated with changeset )(\d*):/,
-                    "<b>$1<a href='/HeBa/Entwicklung/_versionControl/changeset/$2'>$2</a></b>:<br />");
-                html = html.replace(/#(\d+)/g, "<a href='/HeBa/Entwicklung/_versionControl/changeset/$1'>#$1</a>");
+            if (    checkRegex.test(html)
+                || (el.textContext && checkRegex.test(el.textContext))
+               ) {
+                html = html.replace(/((Associated|Resolved) with changeset )(\d*)([:.])/,
+                    "<b>$1<a href='/HeBa/Entwicklung/_versionControl/changeset/$3'>$3</a></b>$4<br />");
+                html = html.replace(/#(\d+)/g, "<a href='/HeBa/Entwicklung/_workitems/edit/$1'>#$1</a>");
                 html = html.replace(/\n/gi, "<br />");
-                html = html.replace(/(@@CUST.*)/s, "<br><span style=\"color: green; font-style:italic;\">$1</span>");
+                html = html.replace(/(@@CUST.*)/is, "<br><span style=\"color: green; font-style:italic;\">$1</span>");
+                html = html.replace(/(@@Dependencies.*)/is, "<span style=\"color: blue; font-style:italic;\">$1</span>");
                 el.innerHTML = html;
+                el.wasTampered = "😋";
             }
         }
-        reurn true;
     };
 
     let fixVersionControl = () => {