NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==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(); })();