Created
February 20, 2020 19:54
-
-
Save MilkmanWes/7f84ff5182d3b373f3cb0ff3caf34c2f to your computer and use it in GitHub Desktop.
Add utilization percent to the navbar of missionchief
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Missionchief Utilization | |
// @namespace http://tampermonkey.net/ | |
// @version 0.1 | |
// @description Adds a grid showing by station category the percentage of vehicles that are not available. | |
// @author You | |
// @match https://www.missionchief.com/ | |
// @grant none | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
var utilizationTable = ` | |
<li id="utilizationDisplay" style="color: #FFF; padding: 15px"> | |
<table style="border: 1px solid white;"> | |
<thead> | |
<tr> | |
<th style="border: 1px solid white; padding: 3px;" scope="col">All</th> | |
<th style="border: 1px solid white; padding: 3px;" scope="col">Fire</th> | |
<th style="border: 1px solid white; padding: 3px;" scope="col">Rescue</th> | |
<th style="border: 1px solid white; padding: 3px;" scope="col">Police</th> | |
</tr> | |
</thead> | |
<tbody> | |
<tr> | |
<td style="border: 1px solid white; padding: 3px;" id="utilizationAll"></td> | |
<td style="border: 1px solid white; padding: 3px;" id="utilizationFire"></td> | |
<td style="border: 1px solid white; padding: 3px;" id="utilizationEMS"></td> | |
<td style="border: 1px solid white; padding: 3px;" id="utilizationPolice"></td> | |
</tr> | |
</tbody> | |
</table> | |
</li>` | |
function getUtilization() { | |
var vehicles = document.querySelectorAll("li.building_list_li > ul > li > span.building_list_fms"); | |
var result = { | |
total: 0, | |
avail: 0, | |
inuse: 0, | |
totalFire: 0, | |
availFire: 0, | |
inuseFire: 0, | |
totalPolice: 0, | |
availPolice: 0, | |
inusePolice: 0, | |
totalEMS: 0, | |
availEMS: 0, | |
inuseEMS: 0 | |
}; | |
for (var i = 0; i < vehicles.length; i++) { | |
var v = vehicles[i].parentNode.parentNode.parentElement.getAttribute("building_type_id"); | |
//console.log(vehicles[i]); | |
//console.log(v); | |
result.total = result.total + 1; | |
if (v == "0") { | |
result.totalFire = result.totalFire + 1; | |
if (vehicles[i].textContent == "1" || vehicles[i].textContent == "2") { | |
result.avail = result.avail + 1; | |
result.availFire = result.availFire + 1; | |
} else { | |
result.inuse = result.inuse + 1; | |
result.inuseFire = result.inuseFire + 1; | |
} | |
} else if (v == "5") { | |
result.totalPolice = result.totalPolice + 1; | |
if (vehicles[i].textContent == "1" || vehicles[i].textContent == "2") { | |
result.avail = result.avail + 1; | |
result.availPolice = result.availPolice + 1; | |
} else { | |
result.inuse = result.inuse + 1; | |
result.inusePolice = result.inusePolice + 1; | |
} | |
} else if (v == "3") { | |
result.totalEMS = result.totalEMS + 1; | |
if (vehicles[i].textContent == "1" || vehicles[i].textContent == "2") { | |
result.avail = result.avail + 1; | |
result.availEMS = result.availEMS + 1; | |
} else { | |
result.inuse = result.inuse + 1; | |
result.inuseEMS = result.inuseEMS + 1; | |
} | |
}; | |
} | |
return result; | |
}; | |
function showUtilization() { | |
var utilization = getUtilization(); | |
console.log(utilization); | |
utilization.percent = (utilization.inuse / utilization.total) * 100; | |
utilization.percentFire = (utilization.inuseFire / utilization.totalFire) * 100; | |
utilization.percentPolice = (utilization.inusePolice / utilization.totalPolice) * 100; | |
utilization.percentEMS = (utilization.inuseEMS / utilization.totalEMS) * 100; | |
console.log(utilization.percent); | |
var utilizationText = 'A:' + utilization.percent.toFixed(2) + '% P:' + utilization.percentPolice.toFixed(2); | |
utilizationText = utilizationText + '%<br>F:' + utilization.percentFire.toFixed(2) + '% R:' + utilization.percentEMS.toFixed(2) + '%'; | |
console.log(utilizationText); | |
//document.querySelector("#utilizationDisplay").innerHTML = utilizationText; | |
document.querySelector("#utilizationAll").innerHTML = utilization.percent.toFixed(2) + '%'; | |
document.querySelector("#utilizationFire").innerHTML = utilization.percentFire.toFixed(2) + '%'; | |
document.querySelector("#utilizationEMS").innerHTML = utilization.percentEMS.toFixed(2) + '%'; | |
document.querySelector("#utilizationPolice").innerHTML = utilization.percentPolice.toFixed(2) + '%'; | |
console.log("updated"); | |
}; | |
window.addEventListener('load', function() { | |
// your code here | |
var navNews = document.querySelector("li#news_li") | |
navNews.insertAdjacentHTML('afterend', utilizationTable); | |
showUtilization(); | |
}, false); | |
var myUtilization = setInterval(showUtilization, 10000); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Can it be updated to work for the UK version as the medical side does no work :)