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