diff options
Diffstat (limited to 'src/main/scala/reading/component/index/FiltersMenu.scala')
-rw-r--r-- | src/main/scala/reading/component/index/FiltersMenu.scala | 72 |
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)") - ) - } - ) - ) - } -} |