129 lines
3.4 KiB
JavaScript
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");
|
|
}
|