values checking added

This commit is contained in:
2026-01-01 14:04:53 +10:00
parent 26bc727758
commit 9e5950490a

View File

@@ -141,7 +141,7 @@ function updateCalculateButton() {
else {
ret = inputsB["l"] !== null && inputsB["angle"] !== null
}
ret &= elements.outputR.checked || elements.outputH.checked ||elements.outputL.checked;
ret &= elements.outputR.checked || elements.outputH.checked || elements.outputL.checked;
elements.calculateButton.disabled = !ret;
}
@@ -209,6 +209,30 @@ function clearInputs() {
}
elements.outputsTable.classList.add("hidden");
}
function checkAngle(angleString) {
let angle = parseFloat(angleString);
if (isNaN(angle)) {
return "Введите корректное число";
}
if (angle <= 0) {
return "Угол должен быть больше 0";
}
if (angle >= 180) {
return "Угол должен быть меньше 180";
}
return "";
}
function checkLength(lengthString) {
let length = parseFloat(lengthString);
if (!isFinite(length)) {
return "Введите корректное число";
}
if (length <= 0) {
return "Длина должна быть больше 0";
}
return "";
}
elements.outputsFieldset.addEventListener('change', function (event) {
if (event.target.type === 'checkbox') {
@@ -216,41 +240,85 @@ elements.outputsFieldset.addEventListener('change', function (event) {
}
});
elements.inputsForm.addEventListener('change', function (event) {
if (event.target.type === 'radio') {
if (event.target.id[event.target.id.length - 1].toLowerCase() == "a") {
currentModeIsA = true;
switchAppearance(true);
console.log("Switching inputs to A");
}
else {
currentModeIsA = false
switchAppearance(false);
console.log("Switching inputs to B");
elements.inputsForm.addEventListener('change', handleInputEvent);
elements.inputsForm.addEventListener('input', handleInputEvent);
}
} else if (event.target.type === 'number') {
switch (event.target.id) {
case "equalSideLength":
inputsA.l = parseFloat(event.target.value) || 0;
break;
case "baseAngle":
inputsA.angle = parseFloat(event.target.value) || 0;
break;
case "baseSideLength":
inputsB.l = parseFloat(event.target.value) || 0;
break;
case "baseAdjacentAngle":
inputsB.angle = parseFloat(event.target.value) || 0;
break;
default:
console.log(event.target.id)
break;
}
updateCalculateButton();
function handleSwitchInputs(event) {
if (event.target.id[event.target.id.length - 1].toLowerCase() == "a") {
currentModeIsA = true;
switchAppearance(true);
console.log("Switching inputs to A");
}
else {
currentModeIsA = false
switchAppearance(false);
console.log("Switching inputs to B");
}
});
}
function HandleInputsUpdate(event) {
switch (event.target.id) {
case "equalSideLength":
{
const err = checkLength(event.target.value);
setErrTooltip(0, err);
if (err === "") {
inputsA.l = parseFloat(event.target.value);
} else {
inputsA.l = null;
}
}
break;
case "baseAngle":
{
const err = checkAngle(event.target.value);
setErrTooltip(1, err);
if (err === "") {
inputsA.angle = parseFloat(event.target.value);
} else {
inputsA.angle = null;
}
}
break;
case "baseSideLength":
{
const err = checkLength(event.target.value);
setErrTooltip(2, err);
if (err === "") {
inputsB.l = parseFloat(event.target.value);
} else {
inputsB.l = null;
}
}
break;
case "baseAdjacentAngle":
{
const err = checkAngle(event.target.value);
setErrTooltip(3, err);
if (err === "") {
inputsB.angle = parseFloat(event.target.value);
} else {
inputsB.angle = null;
}
}
break;
default:
console.log(event.target.id)
break;
}
updateCalculateButton();
}
function handleInputEvent(event) {
if (event.target.type === 'radio') {
handleSwitchInputs(event);
} else if (event.target.type === 'number') {
HandleInputsUpdate(event);
}
}
elements.clearButton.addEventListener('click', (event) => {
event.preventDefault();