xSh0uTx / ServiceNow Incident Utilities

// ==UserScript==
// @name         ServiceNow Incident Utilities
// @namespace    http://tampermonkey.net/
// @version      0.5
// @description  ServiceNow Incident Utilities
// @author       76561198102993358
// @match        https://qvcprod.service-now.com/incident.do?*
// @grant        none
// @copyright 2020, xSh0uTx (https://openuserjs.org/users/xSh0uTx)
// @license MIT
// @downloadURL https://openuserjs.org/install/xSh0uTx/ServiceNow_Incident_Utilities.user.js
// @updateURL https://openuserjs.org/meta/xSh0uTx/ServiceNow_Incident_Utilities.meta.js
// ==/UserScript==


function ME_button(event) {
    g_form.setValue('incident.assigned_to',g_user.userID, g_user.fullName);
    if (event.shiftKey) {
        $('sysverb_update_and_stay').click();
    }
}


function ID_Button(event) {
    let tempButton = $('myButton2');
    navigator.clipboard.writeText(g_form.getReference('caller_id').user_name);
    tempButton.innerHTML = 'C';
    setTimeout(function(){ tempButton.innerHTML= "ID"; }, 1000);
}

function MIR3_Button(event) {
    window.value = window.open("https://ondemand.mir3.com/qvc/inquickalert2/?inqa=qvc&indomain=in.mir3.com");
    let ag = g_form.getValue('sys_display.incident.assignment_group');
    let sDesc = g_form.getValue('incident.short_description');
    if(ag == 'QxH - Client Support Team'){
        g_form.setValue('incident.short_description','[MIR3] ' + sDesc, sDesc);
    }
    window.addEventListener("message", function(message){
        if(message.origin == "https://ondemand.mir3.com"){
            window.value.postMessage([g_form.getValue('sys_readonly.incident.number'), sDesc, ag], 'https://ondemand.mir3.com/qvc/inquickalert2/?inqa=qvc&indomain=in.mir3.com');
        }
    });
}

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function record_Behalf_Button(event) {
    let pop = null;
    let loop = 0;
    while(loop < 6){
        pop = document.querySelector("div.popover-header.popover-header-bar.popover-header-buttons");
        await sleep(200);
        loop += 1;
        if(pop != null){
            let user = document.querySelector("#sys_readonly\\.sys_user\\.user_name").value;
            let domain = "QVCDEV";
            pop.innerHTML += `<a target="_blank" href="customURI:?u?${user}" class="btn btn-sm btn-default pop-over-button pull-right">Unlock [WIP]</a>
                              <a target="_blank" href="customURI:?ls?${user}?${domain}" class="btn btn-sm btn-default pop-over-button pull-right">LockStatus [WIP]</a>`;
            console.log(loop);
            return;
        }
    }
}

async function record_Caller_Button(event) {
    let pop = null;
    let loop = 0;
    while(loop < 6){
        pop = document.querySelector("div.popover-header.popover-header-bar.popover-header-buttons");
        await sleep(200);
        loop += 1;
        if(pop != null){
            let user = document.querySelector("#sys_readonly\\.sys_user\\.user_name").value;
            let domain = "QVCDEV";
            pop.innerHTML += `<a href="customURI:?u?${user}" class="btn btn-sm btn-default pop-over-button pull-right" data-type="reference_clickthrough">Unlock</a>
                              <a href="customURI:?ls?${user}?${domain}" class="btn btn-sm btn-default pop-over-button pull-right" data-type="reference_clickthrough">LockStatus</a>`;
            console.log(loop);
            return;
        }
    }
}


function terminateAccount(var1, var2) {
    alert(var1 + var2);
}

var caller_addons = document.getElementById("viewr.incident.caller_id").parentElement;
var assignedTo_addons = document.getElementById("viewr.incident.assigned_to").parentElement;
var priority_addons = document.querySelector("#element\\.incident\\.priority > div.col-xs-2.col-sm-3.col-lg-2.form-field-addons")

assignedTo_addons.innerHTML = assignedTo_addons.innerHTML+'<button class="form_action_button header action_context btn btn-default" id="personal1" style="white-space: nowrap" type="button" title="" value="sysverb_update_and_stay" id="sysverb_update_and_stay" data-action-name="sysverb_update_and_stay"  name="not_important" data-original-title="Assign to yourself" aria-expanded="false">ME</button>';
caller_addons.innerHTML += '<button id="myButton2" style="white-space: nowrap" type="button" title="" data-original-title="Copy User ID" aria-expanded="false">ID</button>';
priority_addons.innerHTML += '<button id="myButton3" style="white-space: nowrap" type="button" title="" data-original-title="Open MIR3" aria-expanded="false">MIR</button>';

document.querySelector("#personal1").addEventListener ("click", ME_button , false);
document.querySelector("#myButton2").addEventListener ("click", ID_Button , false);
document.querySelector("#myButton3").addEventListener ("click", MIR3_Button , false);

document.querySelector("#viewr\\.incident\\.caller_id").addEventListener ("click", record_Caller_Button , false);
document.querySelector("#viewr\\.incident\\.u_on_behalf_of").addEventListener ("click", record_Behalf_Button , false);