rluks / Show Dovolena Bamboo

// ==UserScript==
// @name         Show Dovolena Bamboo
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Shows number of remaining vacation days in Bamboo HR
// @author       rluks
// @match        https://flowmon.bamboohr.co.uk/*
// @grant        none
// @license      GPL-3.0-or-later
// ==/UserScript==

var DaysScheduled;
var DaysAvailable;

function MyInfoTab() {
    var vacationelements = document.getElementsByClassName("PTOCard__main__iconTime__time");
    if(vacationelements.length == 0){//looks like a Home tab
        Home();
        return;
    }

    for (var i = 0; i < vacationelements.length; i++) {
        var elContent = vacationelements[i].innerHTML.trim();
        if(Number.isInteger(Number(elContent))){
           DaysAvailable = Number(elContent);
           break;
        }
    }

    var SchedIdx;
    var scheduledelements = document.getElementsByClassName("PTOCard__main__scheduled");
    for (var j = 0; j < scheduledelements.length; j++) {
        var elContent2 = scheduledelements[j].innerHTML;
        if(elContent2.trim().length > 0){
            var res = elContent2.split(" ");
            DaysScheduled = Number(res[0]);
            SchedIdx = j;
        }
    }

    var daysToSpend = DaysAvailable - DaysScheduled;
    var newDiv = document.createElement("div");
    var newContent = document.createTextNode(daysToSpend + " days left to spend");
    newDiv.appendChild(newContent);
    scheduledelements[SchedIdx].innerHTML = scheduledelements[SchedIdx].innerHTML + "<br>(<b>" + daysToSpend + "</b> days left)";
}

function Home() {
    var widgetIdx;
    var widgetScheduled;
    var timeOffWidget = document.getElementsByClassName("TimeOffWidget__type-available");
    for (var i = 0; i < timeOffWidget.length; i++) {
        if(timeOffWidget[i].innerHTML.indexOf("palm-trees") > 0){
            var availableStr = timeOffWidget[i].textContent.trim();
            availableStr = availableStr.replace(",",".");
            DaysAvailable = parseFloat(availableStr);
            widgetIdx = i;
            break;
        }
    }

    widgetScheduled = timeOffWidget[widgetIdx].nextSibling.nextSibling;
    var res = widgetScheduled.textContent.split(" ");
    var scheduledStr = res[0];
    scheduledStr = scheduledStr.replace(",",".");
    DaysScheduled = parseFloat(scheduledStr);

    var daysToSpend = DaysAvailable - DaysScheduled;
    var newDiv = document.createElement("div");
    var newContent = document.createTextNode(daysToSpend + " days left to spend");
    newDiv.appendChild(newContent);
    widgetScheduled.innerHTML = widgetScheduled.innerHTML + "<br>(<b>" + daysToSpend + "</b> days left)";
}

(function() {
    'use strict';

    MyInfoTab();

 

})();