|
|
@@ -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))
|