Greasy Fork is available in English.

Case Assignment Automator

Case Assignment Remember Configuration & Automated

Verze ze dne 26. 03. 2019. Zobrazit nejnovější verzi.

// ==UserScript==
// @name         Case Assignment Automator
// @namespace    http://tampermonkey.net/
// @version      1.13
// @description  Case Assignment Remember Configuration & Automated
// @author       Shawn Q
// @match        https://caseassignment.channelservices.microsoft.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    // Your code here...

    // Specify your preferred queue here and if you'd like to have it auto displayed
    var mine = [1, 3];
    var auto_mine = true;
    var auto_execute = true;
    // End of customization

    var EXAMPT_MANDARIN = true;
    var TOTAL_NUMBER = 12;

    var bc = [], prem = [], midElms = [], cBox, executeBtn, btnDiv, spans;
    WaitAndCheck();
    var _COUNTER = 0;
    function WaitAndCheck(){
        setTimeout(function updateTitle() {
            if(isEmptyOrSpaces(document.getElementsByTagName("span")[0].innerHTML))
            {
                if(++_COUNTER < 10) WaitAndCheck();
            }
            else{
                cBox = document.getElementsByTagName('input');
                executeBtn = document.getElementById('prioritize_work_items');
                btnDiv = document.getElementById('prioritize_button');
                midElms.push(btnDiv);
                if(auto_mine){
                    CheckMine();
                    executeBtn.click();
                }
                Categorize();
                midElms.push(spans[0]);
                Middlize(midElms);
                AddBtns();
            }
        }, 50);
    }
    function CheckBC(){
        UncheckAll();
        bc.forEach(function(num) {
            cBox[num].click();
        });
        if(auto_execute) executeBtn.click();
    }
    function CheckPrem(){
        UncheckAll();
        prem.forEach(function(num) {
            cBox[num].click();
        });
        if(auto_execute) executeBtn.click();
    }
    function CheckMine(){
        UncheckAll();
        mine.forEach(function(num) {
            cBox[num].click();
        });
        if(auto_execute) executeBtn.click();
    }
    function isEmptyOrSpaces(str){
        return str === null || str.match(/^ *$/) !== null;
    }
    function UncheckAll(){
        for(var i = 0; i <= TOTAL_NUMBER; i++)
        {
            if(cBox[i].checked) cBox[i].click();
        }
    }
    function AddBtn(btn, id, text, func){
        btn = document.createElement("BUTTON");
        btn.classList.add('button');
        btn.id = id;
        btn.innerHTML = text;
        btn.addEventListener("click", func);
        btn.style.marginLeft = "3px";
        btnDiv.appendChild(btn);
    }
    function Middlize(elms){
        elms.forEach(function(elm) {
            elm.style.display = "flex";
            elm.style.justifyContent = "center";
            elm.style.marginLeft = "0px";
        });
        executeBtn.style.marginLeft = "0px";
        btnDiv.style.marginTop = "2px";

        var table = document.getElementById('select_queues');
        table.style.position = "relative";
        table.style.left = "50%";
        table.style.transform = "translate(-50%)";
        table.style.marginLeft = "0px";
    }
    function AddBtns(){
        executeBtn.style.transitionDuration = "0.35s";
        var btn;

        AddBtn(btn, 'mine', 'Mine', CheckMine);
        AddBtn(btn, 'bc', 'BC', CheckBC);
        AddBtn(btn, 'prem', 'Prem', CheckPrem);
        AddBtn(btn, 'clear', 'Clear', UncheckAll);
    }
    function Categorize(){
        spans = document.getElementsByTagName("span");
        spans[0].parentNode.style.marginLeft = "0px";
        var needSearch = ['bc', 'prem'];

        for (var i = 1; i <= TOTAL_NUMBER; i++) {
            var spanTxt = spans[i].innerText.toLowerCase();
            if (spanTxt.includes(needSearch[0]) || spanTxt.includes(needSearch[1])) {
                if(spanTxt.includes(needSearch[0])){
                    bc.push(i-1);
                } else if (EXAMPT_MANDARIN && spanTxt.includes('mandarin')) {}
                else prem.push(i-1);
            }
        }
    }
})();