From cf80fd251e98e921f5be668b1daf154dc7d9e4ae Mon Sep 17 00:00:00 2001 From: OkunElya Date: Thu, 1 Jan 2026 14:37:53 +1000 Subject: [PATCH] small refactor --- hw/hw7/hw7.js | 84 ++++++++++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 37 deletions(-) diff --git a/hw/hw7/hw7.js b/hw/hw7/hw7.js index 6be53d4..30459e0 100644 --- a/hw/hw7/hw7.js +++ b/hw/hw7/hw7.js @@ -41,7 +41,7 @@ let inputsB = { angle: null }; -function highlightError(errorFieldIndex, add = true) { +function highlightErrorElement(errorFieldIndex, add = true) { let fields = [ elements.equalSideLength, elements.baseAngle, @@ -69,7 +69,7 @@ function setErrTooltip(errorFieldIndex, tooltip) { elements.outputValuesErr ][errorFieldIndex]; if (errElem) { - highlightError(errorFieldIndex, tooltip !== ""); + highlightErrorElement(errorFieldIndex, tooltip !== ""); if (tooltip !== "") { errElem.classList.remove("hidden");; @@ -146,7 +146,7 @@ function updateCalculateButton() { elements.calculateButton.disabled = !ret; } -function switchAppearance(selectA) { +function switchInputs(selectA) { if (selectA) { elements.imageA.classList.remove("hidden"); elements.imageB.classList.add("hidden"); @@ -190,7 +190,7 @@ function displayTable(calcResults) { } -function clearInputs() { +function clearCurrentInputs() { if (currentModeIsA) { elements.equalSideLength.value = null; elements.baseAngle.value = null; @@ -215,7 +215,7 @@ function clearInputs() { updateCalculateButton() } -function checkAngle(angleString) { +function check180Angle(angleString) { let angle = parseFloat(angleString); if (isNaN(angle)) { return "Введите корректное число"; @@ -229,6 +229,20 @@ function checkAngle(angleString) { return ""; } +function check90Angle(angleString) { + let angle = parseFloat(angleString); + if (isNaN(angle)) { + return "Введите корректное число"; + } + if (angle <= 0) { + return "Угол должен быть больше 0"; + } + if (angle >= 90) { + return "Угол должен быть меньше 90"; + } + return ""; +} + function checkLength(lengthString) { let length = parseFloat(lengthString); if (!isFinite(length)) { @@ -240,72 +254,63 @@ function checkLength(lengthString) { return ""; } -elements.outputsFieldset.addEventListener('change', function (event) { - if (event.target.type === 'checkbox') { - updateCheckboxes(); - } -}); - -elements.inputsForm.addEventListener('change', handleInputEvent); -elements.inputsForm.addEventListener('input', handleInputEvent); - function handleSwitchInputs(event) { if (event.target.id[event.target.id.length - 1].toLowerCase() == "a") { currentModeIsA = true; - switchAppearance(true); + switchInputs(true); console.log("Switching inputs to A"); } else { currentModeIsA = false; - switchAppearance(false); + switchInputs(false); console.log("Switching inputs to B"); } } -function HandleInputsUpdate(event) { +function handleInputsUpdate(event) { switch (event.target.id) { case "equalSideLength": { const err = checkLength(event.target.value); setErrTooltip(0, err); - if (err !== "") { + if (err === "") { + inputsA.l = parseFloat(event.target.value); + } else { inputsA.l = null; - return } - inputsA.l = parseFloat(event.target.value); } break; case "baseAngle": { - const err = checkAngle(event.target.value); + const err = check180Angle(event.target.value); setErrTooltip(1, err); - if (err !== "") { + if (err === "") { + inputsA.angle = parseFloat(event.target.value); + } else { inputsA.angle = null; - return; } - inputsA.angle = parseFloat(event.target.value); } break; case "baseSideLength": { const err = checkLength(event.target.value); setErrTooltip(2, err); - if (err !== "") { + if (err === "") { + inputsB.l = parseFloat(event.target.value); + } else { inputsB.l = null; - return; } - inputsB.l = parseFloat(event.target.value); } break; case "baseAdjacentAngle": { - const err = checkAngle(event.target.value); + const err = check90Angle(event.target.value); setErrTooltip(3, err); - if (err !== "") { + if (err === "") { + inputsB.angle = parseFloat(event.target.value); + } else { inputsB.angle = null; - return; } - inputsB.angle = parseFloat(event.target.value); } break; default: @@ -316,28 +321,33 @@ function HandleInputsUpdate(event) { } -function handleInputEvent(event) { +function handleFieldsetEvent(event) { if (event.target.type === 'radio') { handleSwitchInputs(event); } else if (event.target.type === 'number') { - HandleInputsUpdate(event); + handleInputsUpdate(event); } } +elements.inputsForm.addEventListener('change', handleFieldsetEvent); +elements.inputsForm.addEventListener('input', handleFieldsetEvent); +elements.outputsFieldset.addEventListener('change', (event) => { + if (event.target.type === 'checkbox') { + updateCheckboxes(); + } +}); elements.clearButton.addEventListener('click', (event) => { event.preventDefault(); - clearInputs() + clearCurrentInputs() }); - elements.calculateButton.addEventListener('click', (event) => { event.preventDefault(); displayTable(getCalculations()); }); - // чтобы не сконфузило updateCheckboxes(); -switchAppearance(elements.radioA.checked); \ No newline at end of file +switchInputs(elements.radioA.checked); \ No newline at end of file