Procházet zdrojové kódy

add . and 0 if comma move

Bernadette Elena Hammerle před 3 roky
rodič
revize
828f35474c
3 změnil soubory, kde provedl 19 přidání a 55 odebrání
  1. 9 27
      src/Addition.js
  2. 1 1
      src/Footer.js
  3. 9 27
      src/Subtraction.js

+ 9 - 27
src/Addition.js

@@ -129,14 +129,18 @@ function Addition() {
     let numbersCopy = [...numbers];
 
     if(pressedKey === 37){ // left arrow
-      numbersCopy[noId].push(" ");
+      if(numbersCopy[noId].includes(".")){
+        numbersCopy[noId].push("0");
+      }else{
+        numbersCopy[noId].push(".");
+      }
       setNumbers(numbersCopy);
       setTimeout(() => {
         document.getElementById(tdId).focus();
       }, 100);
 
     }else if(pressedKey === 39 && // right arrow
-             numbersCopy[noId][numbersCopy[noId].length-1] === " "){
+             [".", "0"].includes(numbersCopy[noId][numbersCopy[noId].length-1])){
       numbersCopy[noId].pop();
       setNumbers(numbersCopy);
       setTimeout(() => {
@@ -217,7 +221,7 @@ function Addition() {
 
         // create label text like: d + d + .. = input
         let digit = numbers[parseInt(n)][imdtResIdx];
-        if(digit === "" || digit === " "){
+        if([".", "0", " ", ""].includes(digit)){
           digit = 0;
         }
         labelText += digit;
@@ -447,34 +451,12 @@ function Addition() {
     setNumbers(numbersCopy);
 
     let commaCorrect = false;
-    commaPositions = [...new Set(commaPositions.filter(c => c >= 0))];
+    commaPositions = [...new Set(commaPositions)];
 
     // if no commas in numbers
-    if(commaPositions.length === 0){
-      setCommaIdx(-1);
-      // check if no number was moved
-      commaCorrect = !numbersCopy.map(n => n[numbersLen] !== " ").includes(false);
-
-    // correct comma positions
-    }else if(commaPositions.length === 1){
+    if(commaPositions.length === 1 && commaPositions[0] !== numbersLen){
       setCommaIdx(commaPositions[0]);
       commaCorrect = true;
-
-      // check if numbers without comma are correct too
-      for(let no of numbersCopy){
-        if(!no.includes(".")){
-          // digit before comma is a number, no space
-          if(no[commaPositions[0]-1] === " "){
-            commaCorrect = false;
-          }
-          // only spaces from comma to end
-          for(let digit=commaPositions[0]; digit<=numbersLen; digit++){
-            if(no[digit] !== "&nbsp;"){
-              commaCorrect = false;
-            }
-          }
-        }
-      }
     }
 
     if(commaCorrect){

+ 1 - 1
src/Footer.js

@@ -4,7 +4,7 @@ function Footer() {
   return (
     <footer className="py-2 bg-dark fixed-bottom">
       <p className="m-0 text-center text-white">
-        Bernadette Hammerle | Project in Intelligent Information Systems | Juli 2021 | Version 3.0
+        Bernadette Hammerle | Project in Intelligent Information Systems | Juli 2021 | Version 4.0
       </p>
     </footer>
   );

+ 9 - 27
src/Subtraction.js

@@ -132,14 +132,18 @@ function Subtraction() {
     let numbersCopy = [...numbers];
 
     if(pressedKey === 37){ // left arrow
-      numbersCopy[noId].push("&nbsp;");
+      if(numbersCopy[noId].includes(".")){
+        numbersCopy[noId].push("0");
+      }else{
+        numbersCopy[noId].push(".");
+      }
       setNumbers(numbersCopy);
       setTimeout(() => {
         document.getElementById(tdId).focus();
       }, 100);
 
     }else if(pressedKey === 39 && // right arrow
-             numbersCopy[noId][numbersCopy[noId].length-1] === "&nbsp;"){
+             [".", "0"].includes(numbersCopy[noId][numbersCopy[noId].length-1])){
       numbersCopy[noId].pop();
       setNumbers(numbersCopy);
       setTimeout(() => {
@@ -225,7 +229,7 @@ function Subtraction() {
 
           // create label text like: d + d + (wie viel) = input
           digit = numbers[parseInt(n)][imdtResIdx];
-          if(digit === "" || digit === "&nbsp;"){
+          if([".", "0", "&nbsp;", ""].includes(digit)){
             digit = 0;
           }
           labelText += digit;
@@ -500,34 +504,12 @@ function Subtraction() {
     setNumbers(numbersCopy);
 
     let commaCorrect = false;
-    commaPositions = [...new Set(commaPositions.filter(c => c >= 0))];
+    commaPositions = [...new Set(commaPositions)];
 
     // if no commas in numbers
-    if(commaPositions.length === 0){
-      setCommaIdx(-1);
-      // check if no number was moved
-      commaCorrect = !numbersCopy.map(n => n[numbersLen] !== "&nbsp;").includes(false);
-
-    // correct comma positions
-    }else if(commaPositions.length === 1){
+    if(commaPositions.length === 1 && commaPositions[0] !== numbersLen){
       setCommaIdx(commaPositions[0]);
       commaCorrect = true;
-
-      // check if numbers without comma are correct too
-      for(let no of numbersCopy){
-        if(!no.includes(".")){
-          // digit before comma is a number, no space
-          if(no[commaPositions[0]-1] === "&nbsp;"){
-            commaCorrect = false;
-          }
-          // only spaces from comma to end
-          for(let digit=commaPositions[0]; digit<=numbersLen; digit++){
-            if(no[digit] !== "&nbsp;"){
-              commaCorrect = false;
-            }
-          }
-        }
-      }
     }
 
     if(commaCorrect){