Skip to content

Instantly share code, notes, and snippets.

@MilkmanWes
Created February 20, 2020 19:54
Show Gist options
  • Save MilkmanWes/7f84ff5182d3b373f3cb0ff3caf34c2f to your computer and use it in GitHub Desktop.
Save MilkmanWes/7f84ff5182d3b373f3cb0ff3caf34c2f to your computer and use it in GitHub Desktop.
Add utilization percent to the navbar of missionchief
// ==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);
})();
@Stiker839
Copy link

Can it be updated to work for the UK version as the medical side does no work :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment