Team-Resurgent/PrometheOS/PrometheOS-Firmware-1.5.0/PrometheOSUtility/PrometheOSWeb/wwwroot/flash.js
2025-07-11 21:28:24 +02:00

129 lines
3.4 KiB
JavaScript

let ledColorState = 0;
window.onload = function () {
refreshFileInfo();
};
function getFileSize()
{
const file = document.getElementById("file");
if (file.value == "") {
return -1;
}
const fileSize = file.files[0].size;
if (fileSize == 0) {
return -1;
} else if (fileSize % (256 * 1024) != 0) {
return -1;
} else if (fileSize > (1024 * 1024)) {
return -1;
}
return fileSize;
}
async function refreshFileInfo()
{
const file = document.getElementById("file");
if (file.value != "") {
const name = document.getElementById("name");
name.value = file.files[0].name.substring(0, 40);
}
await fetch("http://192.168.1.66/api/freeslots.json").then(async response => {
const json = await response.json();
const freeSlots = document.getElementById("freeSlots");
freeSlots.textContent = json["freeslots"];
const upload = document.getElementById("upload");
const slotsNeeeded = document.getElementById("slotsNeeded");
const fileSize = getFileSize();
if (fileSize < 0) {
upload.setAttribute("disabled", "disabled");
slotsNeeeded.textContent = "NA";
}
else
{
const slotsNeededValue = fileSize / (256 * 1024);
slotsNeeeded.textContent = slotsNeededValue;
if (slotsNeededValue > json["freeslots"]) {
upload.setAttribute("disabled", "disabled");
} else {
upload.removeAttribute("disabled");
}
}
}).catch(error => {
//
});
}
function setLedColor(ledColor)
{
ledColorState = ledColor;
let ledColorText = document.getElementById("ledColor");
switch (ledColor) {
case 1:
ledColorText.textContent = "Red";
break;
case 2:
ledColorText.textContent = "Green";
break;
case 3:
ledColorText.textContent = "Yellow";
break;
case 4:
ledColorText.textContent = "Blue";
break;
case 5:
ledColorText.textContent = "Purple";
break;
case 6:
ledColorText.textContent = "Turquoise";
break;
case 7:
ledColorText.textContent = "White";
break;
default:
ledColorText.textContent = "Off";
}
}
async function upload()
{
const upload = document.getElementById("upload");
upload.setAttribute("disabled", "disabled");
const file = document.getElementById("file");
file.setAttribute("disabled", "disabled");
const name = document.getElementById("name");
var data = new FormData();
data.append('file', file.files[0]);
data.append('body', "{\"ledColor\":" + ledColorState + ",\"bankName\":\"" + name.value + "\"}");
await fetch("http://192.168.1.66/api/upload", {
method: 'POST',
body: data
}).then(response => {
if (response.status == 200) {
window.location.href = "/index.html";
} else {
uploadFailure();
}
}).catch(() => {
uploadFailure()
}
);
}
function uploadFailure()
{
alert("Upload failed.");
let upload = document.getElementById("upload");
upload.removeAttribute("disabled");
let file = document.getElementById("file");
file.removeAttribute("disabled");
}