Sfoglia il codice sorgente

Fixed custom volume/mass input.

Thomas Flucke 2 anni fa
parent
commit
fc21bf86f8

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

@@ -64,7 +64,7 @@ case class USDAEditor(
       value := noneValue,
       "None"
     ),
-    option(selected <-- defaultVolPort.map(_ == None && usda.density != None),
+    option(selected := usda.density != None,
       value := customValue,
       "Custom"
     ),
@@ -96,7 +96,7 @@ case class USDAEditor(
       value := noneValue,
       "None"
     ),
-    option(selected <-- defaultNumPort.map(_ == None && usda.massPerUnit != None),
+    option(selected := usda.density != None,
       value := customValue,
       "Custom"
     ),
@@ -172,13 +172,19 @@ case class USDAEditor(
     })(
       _name.observe.now(),
       _fdcId,
-      _volume.signal.flatMap({
+      _volume.signal.combineWithFn(_volumeIsCustom)({
+        case (_, true) => "custom"
+        case (str, false) => str
+      }).flatMap({
         case `noneValue` => Val(None)
         case _ => _density.map((str) => Some(str.toFloat))
       }).observe.now(),
-      _count.signal.flatMap({
+      _count.signal.combineWithFn(_countIsCustom)({
+        case (_, true) => "custom"
+        case (str, false) => str
+      }).flatMap({
         case `noneValue` => Val(None)
-        case _ => _mass.map({(str) => println(str);Some(str.toFloat)})
+        case _ => _mass.map((str) => Some(str.toFloat))
       }).observe.now(),
       //_typ,
       _calorie.observe.now().toFloat,

+ 25 - 4
webClient/src/main/scala/com/weEat/views/UsdaImporter.scala

@@ -57,12 +57,14 @@ object UsdaImporter extends View[Option[String]] {
   private val SEARCH_PAGE_SIZE = 40.asInstanceOf[Short]
 
   def content(queryPage: Signal[ViewPage]) = {
+    val foodTypes = Var(Set(Foundation, SRLegacy))
     val searchBar: SearchBar[Seq[Signal[Option[Seq[SearchResultFood]]]]] =
       SearchBar((term) =>
-        USDAController.getFoodsSearch(term, Seq(
-          // Branded,
-          Foundation, SRLegacy
-        ).map(_.toString), pageSize = Some(SEARCH_PAGE_SIZE))().map {
+        USDAController.getFoodsSearch(
+          term,
+          foodTypes.now().toSeq.map(_.toString),
+          pageSize = Some(SEARCH_PAGE_SIZE)
+        )().map {
           case SearchResult(criteria, n, cur, tot, baseList) =>
             Val(Some(baseList)) +:
               (cur + 1 to tot).map({ (c) => lazyFutureSignal(
@@ -101,6 +103,25 @@ object UsdaImporter extends View[Option[String]] {
         label(forId := "search", "Search: "),
         searchBar.render
       ),
+      div(cls := "form-group",
+        for (dataType <- DataType.values.toSeq)
+        yield div(cls := "form-check form-check-inline",
+          input(cls := "form-check-input",
+            typ := "checkbox",
+            idAttr := dataType.toString,
+            defaultChecked := foodTypes.now().contains(dataType),
+            onChange.mapToChecked --> foodTypes.updater[Boolean] {
+              (prev, checked) =>
+              if (checked) prev + dataType
+              else prev - dataType
+            }
+          ),
+          label(cls := "form-check-label",
+            forId := dataType.toString,
+            dataType.toString
+          )
+        )
+      ),
       searchBar.searchTerm --> { (str: Option[String]) =>
         val oldQ = View.router.currentPageSignal.now().asInstanceOf[ViewPage].q
         if (oldQ != str)