// ==UserScript== // @name Component-labels for JIRA Scrum // @namespace https://github.com/yewton // @description Show components as labels in JIRA Scrum // @include https://www.example.org/secure/RapidBoard.jspa* // @version 0.0.2 // @grant GM_xmlhttpRequest // @require https://code.jquery.com/jquery-1.12.0.min.js // ==/UserScript== // cf. http://slides.com/kbigwheel/how-to-greasemonkey-in-ajax#/5 MutationObserver = window.MutationObserver || window.WebKitMutationObserver; var observer = new MutationObserver(function(mutations, observer) { $('.js-issue').filter(function () { return !!!$(this).data('cl-added'); }).each(function () { var $issue = $(this); $issue.data('cl-added', true); var key = $issue.data('issue-key'); if (!!!key) return; var id = $issue.data('issue-id'); var $end = $issue.find('span.ghx-end'); $.get('/rest/api/2/issue/' + key + '?fields=components', function (data) { data.fields.components.forEach(function (component) { var marker = 'cl-label-' + component.id; if (0 < $end.find('.' + marker).length) return; var seed = component.id + component.name.charCodeAt(0); var label = (seed % 9) + 1; var $c = $('<span class="aui-label ghx-label-' + label + ' ' + marker + '">' + component.name + '</span>'); $end.prepend($c); }); }); }); }); observer.observe(document, { subtree: true, attributes: true });