Case Assignment Automator

Case Assignment Remember Configuration & Automated

As of 26/03/2019. See the latest version.

// ==UserScript==
// @name         Case Assignment Automator
// @namespace    http://tampermonkey.net/
// @version      1.0
// @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 = [0, 1, 2, 4];
    var auto_mine = true;
    // End of customization

    const EXAMPT_MANDARIN = true;
    const TOTAL_NUMBER = 12;

    var bc = [], prem = [], cBox;
    WaitAndCheck();
    var _COUNTER = 0;
    function WaitAndCheck(){
        setTimeout(function updateTitle() {
            if(isEmptyOrSpaces(document.getElementsByTagName('span')[0].innerHTML))
            {
                if(++_COUNTER < 10) WaitAndCheck();
            }
            else{
                Catgorize();
                Addbtns();
                cBox = document.getElementsByTagName('input');
                if(auto_mine){
                    CheckMine();
                    document.getElementById('prioritize_work_items').click();
                }
            };
        }, 50);
    }
    function CheckBC(){
        UncheckAll();
        bc.forEach(function(num) {
            cBox[num].click();
        });
    }
    function CheckPrem(){
        UncheckAll();
        prem.forEach(function(num) {
            cBox[num].click();
        });
    }
    function CheckMine(){
        UncheckAll();
        mine.forEach(function(num) {
            cBox[num].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 Addbtns(){
        var btn = document.createElement("BUTTON");
        btn.classList.add('button');
        btn.id = 'mine';
        btn.innerHTML = "Mine";
        btn.addEventListener("click", CheckMine);
        document.getElementById('prioritize_button').appendChild(btn);

        btn = document.createElement("BUTTON");
        btn.classList.add('button');
        btn.id = 'bc';
        btn.innerHTML = "BC";
        btn.addEventListener("click", CheckBC);
        document.getElementById('prioritize_button').appendChild(btn);

        btn = document.createElement("BUTTON");
        btn.classList.add('button');
        btn.id = 'prem';
        btn.innerHTML = "Prem";
        btn.addEventListener("click", CheckPrem);
        document.getElementById('prioritize_button').appendChild(btn);
    }
    function Catgorize(){
        var spans = document.getElementsByTagName("span");
        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);
            }
        }
    }
})();