Improve error handling

This commit is contained in:
Florine W. Dekker 2019-06-10 00:54:16 +02:00
parent c7f920d4a6
commit cb87f6fa09
Signed by: FWDekker
GPG Key ID: B1B567AF58D6EE0F
1 changed files with 24 additions and 14 deletions

View File

@ -161,25 +161,39 @@
const submitButton = $("#submit");
const outputField = $("#out");
const outputSimplifiedFraction = () => {
const validateInputs = () => {
let numerator = numeratorInput.value;
let denominator = denominatorInput.value;
if (!isInt(numerator) || !isInt(denominator)) {
outputField.innerText = "The numerator and denominator must be integers.";
if (numerator === "")
return [numeratorInput, "Numerator must not be empty."];
if (denominator === "")
return [denominatorInput, "Denominator must not be empty."];
if (!isInt(numerator))
return [numeratorInput, "Numerator must be an integer."];
if (!isInt(denominator))
return [denominatorInput, "Denominator must be an integer."];
if (+denominator === 0)
return [denominatorInput, "Denominator must not be 0."];
return undefined;
};
const outputSimplifiedFraction = () => {
const validationInfo = validateInputs();
if (validationInfo !== undefined) {
validationInfo[0].select();
outputField.innerText = validationInfo[1];
return;
}
const fraction = new Fraction(numerator, denominator);
const fraction = new Fraction(numeratorInput.value, denominatorInput.value);
outputField.innerText = "$$" + fraction.toString() + " = " + fraction.simplify().toReducedString() + "$$";
MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
};
submitButton.onclick = () => {
outputSimplifiedFraction();
numeratorInput.select();
};
submitButton.onclick = () => outputSimplifiedFraction();
numeratorInput.addEventListener("keydown", event => {
if (event.key === "Enter") {
@ -194,12 +208,8 @@
denominatorInput.addEventListener("keydown", event => {
if (event.key === "Enter") {
if (numeratorInput.value === "") {
numeratorInput.select();
} else {
outputSimplifiedFraction();
denominatorInput.select();
}
outputSimplifiedFraction();
denominatorInput.select();
}
});
</script>