aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/reading/component/index/FiltersMenu.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/reading/component/index/FiltersMenu.scala')
-rw-r--r--src/main/scala/reading/component/index/FiltersMenu.scala72
1 files changed, 0 insertions, 72 deletions
diff --git a/src/main/scala/reading/component/index/FiltersMenu.scala b/src/main/scala/reading/component/index/FiltersMenu.scala
deleted file mode 100644
index f3f9ca2..0000000
--- a/src/main/scala/reading/component/index/FiltersMenu.scala
+++ /dev/null
@@ -1,72 +0,0 @@
-package reading.component.index
-
-import rx._
-import Ctx.Owner.Unsafe._
-
-import scalatags.JsDom.all._
-import scalacss.Defaults._
-import scalacss.ScalatagsCss._
-
-import reading.component.index.style.{ FiltersMenu => FiltersMenuStyle }
-import reading.models._
-import reading.utils.{ RxTag, RxAttr }
-import reading.Route
-
-object FiltersMenu {
- def apply(books: Rx[Seq[Book]], filters: Var[Seq[Filter]]): Frag =
- RxTag { implicit context =>
- div(
- FiltersMenuStyle.render,
- FiltersMenuStyle.groups,
- filters().find(_.kind == FilterKind.Grade) match {
- case None =>
- group(books, filters, "Classe", Grade.values.map(Filter.apply(_)))
- case Some(grade) =>
- group(books, filters, "Programme", Program.values.map(Filter.apply(_)))
- },
- group(books, filters, "Theme", Theme.values.map(Filter.apply(_))),
- group(books, filters, "Genre", Genre.values.map(Filter.apply(_))),
- group(books, filters, "Niveau", Level.values.map(Filter.apply(_))),
- group(books, filters, "PĂ©riode", Period.values.map(Filter.apply(_)))
- )
- }
-
- def group(
- books: Rx[Seq[Book]],
- filters: Var[Seq[Filter]],
- name: String,
- groupFilters: Seq[Filter]
- )(
- implicit
- context: Ctx.Data
- ): Frag = {
- val filtersWithCount = Rx {
- groupFilters
- .filter(filter => !Filter.contains(filters(), filter))
- .map(filter => (filter, Book.filter(books(), Seq(filter)).length))
- .filter(_._2 > 0)
- }
-
- if (filtersWithCount().isEmpty)
- span("")
- else
- div(
- FiltersMenuStyle.group,
- div(FiltersMenuStyle.groupTitle, name),
- div(
- filtersWithCount().map {
- case (filter, count) =>
- button(
- FiltersMenuStyle.filter,
- RxAttr(onclick, Rx(() => {
- val newFilters = filter +: filters()
- filters() = newFilters
- Route.push(Route.Books(newFilters))
- })),
- span(s"${filter.name.capitalize} ($count)")
- )
- }
- )
- )
- }
-}