6fd6d06978
Signed-off-by: Arthur Lu <learthurgo@gmail.com>
56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
import {requestAPI, goToPage} from "./utils.js";
|
|
|
|
window.addEventListener("DOMContentLoaded", init);
|
|
|
|
let SIPrefix = [
|
|
"",
|
|
"Ki",
|
|
"Mi",
|
|
"Gi",
|
|
"Ti"
|
|
]
|
|
|
|
async function init () {
|
|
let cookie = document.cookie;
|
|
if (cookie === "") {
|
|
goToPage("login.html");
|
|
}
|
|
|
|
let resources = await requestAPI("/user/resources");
|
|
buildResourceTable(resources, "#resource-table");
|
|
}
|
|
|
|
function buildResourceTable (object, tableid) {
|
|
|
|
if (object instanceof Object) {
|
|
let table = document.querySelector(tableid);
|
|
let tbody = table.querySelector("tbody");
|
|
Object.keys(object.resources.avail).forEach((element) => {
|
|
let row = tbody.insertRow();
|
|
let key = row.insertCell();
|
|
key.innerText = `${element}`;
|
|
let used = row.insertCell();
|
|
used.innerText = `${parseNumber(object.resources.used[element], object.resources.units[element])}`;
|
|
let val = row.insertCell();
|
|
val.innerText = `${parseNumber(object.resources.avail[element], object.resources.units[element])}`;
|
|
let total = row.insertCell();
|
|
total.innerText = `${parseNumber(object.resources.max[element], object.resources.units[element])}`;
|
|
});
|
|
}
|
|
}
|
|
|
|
function parseNumber(value, unitData) {
|
|
let compact = unitData.compact;
|
|
let multiplier = unitData.multiplier;
|
|
let unit = unitData.unit;
|
|
value = multiplier * value;
|
|
if (compact) {
|
|
let exponent = Math.floor(Math.log2(value) / 10);
|
|
value = value / 1024 ** exponent;
|
|
let unitPrefix = SIPrefix[exponent];
|
|
return `${value} ${unitPrefix}${unit}`
|
|
}
|
|
else {
|
|
return `${value} ${unit}`;
|
|
}
|
|
} |