forked from Simnation/Main
98 lines
2.6 KiB
JavaScript
98 lines
2.6 KiB
JavaScript
![]() |
const pinContainer = document.querySelector(".pinpad-container"),
|
||
|
pinBox = document.getElementById("PINbox");
|
||
|
|
||
|
let pinValue = "";
|
||
|
let correctSequence = [];
|
||
|
|
||
|
const openPinpad = (pinNumber) => {
|
||
|
correctSequence = pinNumber.split("");
|
||
|
pinBox.value = "";
|
||
|
pinValue = "";
|
||
|
pinContainer.style.display = "block";
|
||
|
setTimeout(() => (pinContainer.style.opacity = 1), 300);
|
||
|
};
|
||
|
|
||
|
const closePinpad = async () => {
|
||
|
pinContainer.style.opacity = 0;
|
||
|
setTimeout(async () => {
|
||
|
pinContainer.style.display = "none";
|
||
|
try {
|
||
|
await fetch(`https://${GetParentResourceName()}/pinpadExit`, {
|
||
|
method: "POST",
|
||
|
headers: {
|
||
|
"Content-Type": "application/json",
|
||
|
},
|
||
|
body: JSON.stringify({ action: "closePinpad" }),
|
||
|
});
|
||
|
} catch (err) {}
|
||
|
}, 300);
|
||
|
};
|
||
|
|
||
|
const addNumber = (num) => {
|
||
|
pinValue += num;
|
||
|
pinBox.value += "*";
|
||
|
|
||
|
if (pinValue.length === correctSequence.length) {
|
||
|
checkSequence();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
const checkSequence = async () => {
|
||
|
const isCorrect = pinValue === correctSequence.join("");
|
||
|
pinValue = "";
|
||
|
pinBox.value = "";
|
||
|
|
||
|
try {
|
||
|
if (isCorrect) {
|
||
|
await postData(`https://${GetParentResourceName()}/pinpadFinish`, { correct: true });
|
||
|
} else {
|
||
|
await postData(`https://${GetParentResourceName()}/pinpadFinish`, { correct: false });
|
||
|
}
|
||
|
} catch (err) {}
|
||
|
closePinpad();
|
||
|
};
|
||
|
|
||
|
const postData = async (url, data) => {
|
||
|
try {
|
||
|
await fetch(url, {
|
||
|
method: "POST",
|
||
|
headers: { "Content-Type": "application/json" },
|
||
|
body: JSON.stringify(data),
|
||
|
});
|
||
|
} catch (err) {}
|
||
|
};
|
||
|
|
||
|
const clearInput = () => {
|
||
|
pinValue = "";
|
||
|
pinBox.value = "";
|
||
|
};
|
||
|
|
||
|
document.addEventListener("DOMContentLoaded", () => {
|
||
|
const pinButtonsContainer = document.getElementById("PINcode");
|
||
|
const clearButton = document.getElementById("clearButton");
|
||
|
|
||
|
pinButtonsContainer.addEventListener("click", (event) => {
|
||
|
const button = event.target;
|
||
|
if (button.classList.contains("PINbutton") && button.id !== "clearButton") {
|
||
|
addNumber(button.value);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
clearButton.addEventListener("click", clearInput);
|
||
|
});
|
||
|
|
||
|
document.addEventListener("keydown", function (event) {
|
||
|
const keyName = event.key;
|
||
|
if (keyName === "Escape") {
|
||
|
closePinpad();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
window.addEventListener("message", (event) => {
|
||
|
if (event.data.action === "openPinpad") {
|
||
|
const pinNumber = event.data.numbers;
|
||
|
const pinAsString = pinNumber.toString();
|
||
|
openPinpad(pinAsString);
|
||
|
}
|
||
|
});
|