Jira Task Priority Colorizer

Change card colors based on Jira task priority using inserted stylesheets

Versión del día 09/10/2024. Echa un vistazo a la versión más reciente.

// ==UserScript==
// @name         Jira Task Priority Colorizer
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Change card colors based on Jira task priority using inserted stylesheets
// @author       erolatex
// @include      /^https?:\/\/.*jira.*\/.*/
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // Define CSS rules for different priorities
    const styleContent = `
        .ghx-issue[data-priority*="P0"] {
            background-color: #FFADB0 !important;
        }
        .ghx-issue[data-priority*="P1"] {
            background-color: #FF8488 !important;
        }
        .ghx-issue[data-priority*="P2"] {
            background-color: #FFD3C6 !important;
        }
        .ghx-issue[data-priority*="P3"] {
            background-color: #FFF !important;
        }
        .ghx-issue[data-priority*="P4"] {
            background-color: #FFF !important;
        }
    `;

    const styleElement = document.createElement('style');
    styleElement.type = 'text/css';
    styleElement.appendChild(document.createTextNode(styleContent));
    document.head.appendChild(styleElement);

    function updateCardPriorities() {
        let cards = document.querySelectorAll('.ghx-issue');

        cards.forEach(card => {
            let priorityElement = card.querySelector('.ghx-priority');
            if (priorityElement) {
                console.log('Priority Element:', priorityElement);
                console.log('Priority Element HTML:', priorityElement.outerHTML);
                let priority = priorityElement.getAttribute('title') || priorityElement.getAttribute('aria-label') || priorityElement.innerText || priorityElement.textContent;
                console.log('Priority:', priority);
                if (priority) {
                    card.setAttribute('data-priority', priority);
                    console.log('Card updated with data-priority:', card);
                }
            } else {
                console.log('Priority element not found in card:', card);
            }
        });
    }

    const observer = new MutationObserver(() => {
        updateCardPriorities();
    });

    observer.observe(document.body, { childList: true, subtree: true });

    window.addEventListener('load', function() {
        updateCardPriorities();
    });

    setInterval(updateCardPriorities, 5000);
})();