Ver Fonte

Fixed auto-selecting measures.

Thomas Flucke há 2 anos atrás
pai
commit
9dd0092eca
1 ficheiros alterados com 26 adições e 26 exclusões
  1. 26 26
      webClient/src/main/scala/com/weEat/modules/USDAEditor.scala

+ 26 - 26
webClient/src/main/scala/com/weEat/modules/USDAEditor.scala

@@ -69,17 +69,16 @@ case class USDAEditor(
       "Custom"
     ),
     children <-- _measures.map(
-      _.filter(_.unit.typ == VOLUME)
-        .map({ case Measure(p, m, rawName) =>
-          option(selected <-- defaultVolPort.optionContains(p),
-            value := calcConversion(p, m).toString,
-            rawName,
-            onMountCallback({ (ctx) =>
-              import org.scalajs.dom.Event
-              ctx.thisNode.ref.parentElement.dispatchEvent(new Event("change"))
-            })
-          )
-        })
+      _.filter(_.unit.typ == VOLUME).map({ case Measure(p, m, rawName) =>
+        option(selected <-- defaultVolPort.optionContains(p),
+          value := calcConversion(p, m).toString,
+          rawName,
+          onMountCallback({ (ctx) =>
+            import org.scalajs.dom.Event
+            ctx.thisNode.ref.parentElement.dispatchEvent(new Event("change"))
+          })
+        )
+      })
     ),
     onChange.mapToValue --> _volume.updater({ (prev: String, value: String) =>
       if (value == customValue) prev else value
@@ -101,17 +100,16 @@ case class USDAEditor(
       "Custom"
     ),
     children <-- _measures.map(
-      _.filter(_.unit.typ == NUMBER)
-        .map({ case Measure(p, m, rawName) =>
-          option(selected <-- defaultNumPort.optionContains(p),
-            value := calcConversion(p, m).toString,
-            rawName,
-            onMountCallback({ (ctx) =>
-              import org.scalajs.dom.Event
-              ctx.thisNode.ref.parentElement.dispatchEvent(new Event("change"))
-            })
-          )
-        })
+      _.filter(_.unit.typ == NUMBER).map({ case Measure(p, m, rawName) =>
+        option(selected <-- defaultNumPort.optionContains(p),
+          value := calcConversion(p, m).toString,
+          rawName,
+          onMountCallback({ (ctx) =>
+            import org.scalajs.dom.Event
+            ctx.thisNode.ref.parentElement.dispatchEvent(new Event("change"))
+          })
+        )
+      })
     ),
     onChange.mapToValue --> _count.updater({ (prev: String, value: String) =>
       if (value == customValue) prev else value
@@ -201,7 +199,7 @@ case class USDAEditor(
     if (fp.measureUnit.id != undefinedMeasureUnitId) Count
     else MeasureUnit.guessUnit(str).getOrElse(Count)
 
-  val measureMatchThreshold = 0.01
+  val measureMatchThreshold = 0.001
 
   /* Procedure to determine default:
    * 1. Check if there is some value already:
@@ -221,10 +219,12 @@ case class USDAEditor(
     value: Option[Float]
   ): Option[FoodPortion] = (value match {
     case Some(dV) => measures.filter(_.unit.typ == typ).minByOption({
-      case Measure(portion, measure, _) => {
-        val diff = (calcConversion(portion, measure) - dV).abs
-        Option.when(diff < measureMatchThreshold)(diff)
+      case Measure(portion, measure, raw) => {
+        (calcConversion(portion, measure) - dV).abs
       }
+    }).filter({
+      case Measure(portion, measure, _) =>
+        (calcConversion(portion, measure) - dV).abs < measureMatchThreshold
     })
     case None => Option.when(defaultOverNone)(
       MeasureUnit.closestPair(measures.filter(_.unit.typ == typ))