RemedyUI

RemedyUI modification

От 11.02.2016. Виж последната версия.

// ==UserScript==
// @name         RemedyUI
// @namespace    http://remedy/
// @version      0.3.3
// @description  RemedyUI modification
// @author       Dejan
// @copyright    2016
// @license      GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html
// @match        http://remedy/arsys/forms/*
// @match        http://remedy.otn.local/arsys/forms/*
// @run-at       document-end
// @noframes
// @grant        GM_addStyle
// ==/UserScript==
/* jshint -W097 */
'use strict';



var usrText="";
//Get logged in users name
waitForKeyElements("#label301354000", getUser);


function getUser(jNode) {
    usrText = jNode.text ().trim ();
    if (usrText) {
        //console.log ("User is " + usrText);        
        waitForKeyElements("#T301444200 > tbody > tr", setStyle);
    }
    else
        return true;  //-- Keep waiting.
}


function setStyle (jNode) {
    var reLow = new RegExp(".*low.*"+usrText+".*", 'ig');
    var reMed = new RegExp(".*medium.*"+usrText+".*", 'ig');
    var reHigh = new RegExp(".*high.*"+usrText+".*", 'ig');
    var reCritical = new RegExp(".*critical.*"+usrText+".*", 'ig');
    
    //remove highlighting selected row
    jNode.removeClass("SelPrimary");
    jNode.click(function(){
      $(this).removeClass("SelPrimary"); 
    });
    
    jNode.each(function (k, v) {
        //set cell padding
        $(this).find("td").css("padding", "5px 0 5px 0");   
        
        
        if ($(this).text().match(reLow)) {
            $(this).css ("color", "#33691e");  //light green 900
            $(this).find("td").css("background-color", "#aed581");  //light green 300
        }else if($(this).text().match(reMed)){
            $(this).css ("color", "#e65100");  //orange 900
            $(this).find("td").css("background-color", "#ffb74d");  //orange 300
        }else if($(this).text().match(reHigh)){
            $(this).css ("color", "#b71c1c");  //red 900
            $(this).find("td").css("background-color", "#e57373");  //red 300
        }else if($(this).text().match(reCritical)){
            $(this).css ("color", "#fff");  //white
            $(this).find("td").css("background-color", "#d32f2f");  //red 700
        }else if($(this).text().match("Low")){  //annonymous user
            $(this).css ("color", "#33691e");  //light green 900
            $(this).find("td").css("background-color", "#dcedc8");  //light green 100
        }else if($(this).text().match("Medium")){
            $(this).css ("color", "#e65100");  //orange 900
            $(this).find("td").css("background-color", "#ffe0b2");  //orange 100
        }else if($(this).text().match("High")){
            $(this).css ("color", "#b71c1c");  //red 900
            $(this).find("td").css("background-color", "#ffcdd2");  //red 100
        }else if($(this).text().match("Critical")){
            $(this).css ("color", "#fff");  //white
            $(this).find("td").css("background-color", "#ef5350");  //red 400
        }
    });
}

//change title color
$("#WIN_0_301493400 > table > tbody > tr > td").css("color","#8cc63c");


//hide annoying summary tooltip
//no space after \
GM_addStyle("                                       \
#artooltip{                                         \
  visibility: hidden !important                     \
}                                                   \
#T301444200 > tbody > tr:nth-child(n+1):hover td{   \
  background-color: yellow !important;              \
}                                                   \
@font-face {                                                                                                               \
  font-family: 'Ubuntu';                                                                                                   \
  font-style: normal;                                                                                                      \
  font-weight: 400;                                                                                                        \
  src: local('Ubuntu'), url('https://fonts.gstatic.com/s/ubuntu/v8/sDGTilo5QRsfWu6Yc11AXg.woff2') format('woff2');         \
}                                                                                                                          \
*{                                                                                                                         \
  font-family: 'Ubuntu', sans-serif !important;                                                                            \
}                                                                                                                          \
#WIN_2_301444200 > div.TableInner > div > div.BaseTableColHeaders{ \
  padding: 0 0 30px 0;                                             \
  background: #2196f3;                                             \
}                                                                  \
#WIN_2_301444200 > div.TableInner > div > div.BaseTableColHeaders > div:nth-child(n+1){  \
  /*change table heading*/                                                               \
  padding: 10px 0 20px 4px;                                                              \
  color: #fff;                                                                           \
  background: transparent;                                                               \
}                                                                                        \
#WIN_2_301444200 > div.TableInner > div > div.BaseTableInner{                            \
      top:30px !important;                                                               \
}                                                                                        \
");



/*Reference link: https://gist.github.com/raw/2625891/waitForKeyElements.js */
/*--- waitForKeyElements():  A utility function, for Greasemonkey scripts,
    that detects and handles AJAXed content.

    Usage example:

        waitForKeyElements (
            "div.comments"
            , commentCallbackFunction
        );

        //--- Page-specific function to do what we want when the node is found.
        function commentCallbackFunction (jNode) {
            jNode.text ("This comment changed by waitForKeyElements().");
        }

    IMPORTANT: This function requires your script to have loaded jQuery.
*/
function waitForKeyElements (
    selectorTxt,    /* Required: The jQuery selector string that
                        specifies the desired element(s).
                    */
    actionFunction, /* Required: The code to run when elements are
                        found. It is passed a jNode to the matched
                        element.
                    */
    bWaitOnce,      /* Optional: If false, will continue to scan for
                        new elements even after the first match is
                        found.
                    */
    iframeSelector  /* Optional: If set, identifies the iframe to
                        search.
                    */
) {
    var targetNodes, btargetsFound;

    if (typeof iframeSelector == "undefined")
        targetNodes     = $(selectorTxt);
    else
        targetNodes     = $(iframeSelector).contents ()
                                           .find (selectorTxt);

    if (targetNodes  &&  targetNodes.length > 0) {
        btargetsFound   = true;
        /*--- Found target node(s).  Go through each and act if they
            are new.
        */
        targetNodes.each ( function () {
            var jThis        = $(this);
            var alreadyFound = jThis.data ('alreadyFound')  ||  false;

            if (!alreadyFound) {
                //--- Call the payload function.
                var cancelFound     = actionFunction (jThis);
                if (cancelFound)
                    btargetsFound   = false;
                else
                    jThis.data ('alreadyFound', true);
            }
        } );
    }
    else {
        btargetsFound   = false;
    }

    //--- Get the timer-control variable for this selector.
    var controlObj      = waitForKeyElements.controlObj  ||  {};
    var controlKey      = selectorTxt.replace (/[^\w]/g, "_");
    var timeControl     = controlObj [controlKey];

    //--- Now set or clear the timer as appropriate.
    if (btargetsFound  &&  bWaitOnce  &&  timeControl) {
        //--- The only condition where we need to clear the timer.
        clearInterval (timeControl);
        delete controlObj [controlKey]
    }
    else {
        //--- Set a timer, if needed.
        if ( ! timeControl) {
            timeControl = setInterval ( function () {
                    waitForKeyElements (    selectorTxt,
                                            actionFunction,
                                            bWaitOnce,
                                            iframeSelector
                                        );
                },
                300
            );
            controlObj [controlKey] = timeControl;
        }
    }
    waitForKeyElements.controlObj   = controlObj;
}
长期地址
遇到问题?请前往 GitHub 提 Issues。