aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/reading/component
diff options
context:
space:
mode:
authorJoris2017-01-16 22:23:38 +0100
committerJoris2017-01-16 22:23:38 +0100
commit36fc53409c9119ac94788d8296d6b171eb0a6500 (patch)
treed75a3f3232ed73e2c9859200f5d88995d379dc08 /src/main/scala/reading/component
parente9e235a10cabc20ceaf110420d4618e83e425631 (diff)
downloadreading-36fc53409c9119ac94788d8296d6b171eb0a6500.tar.gz
reading-36fc53409c9119ac94788d8296d6b171eb0a6500.tar.bz2
reading-36fc53409c9119ac94788d8296d6b171eb0a6500.zip
Add navigation history with urls
Diffstat (limited to 'src/main/scala/reading/component')
-rw-r--r--src/main/scala/reading/component/Index.scala4
-rw-r--r--src/main/scala/reading/component/index/Books.scala6
-rw-r--r--src/main/scala/reading/component/index/Filters.scala7
-rw-r--r--src/main/scala/reading/component/index/FiltersMenu.scala11
-rw-r--r--src/main/scala/reading/component/index/style/Books.scala2
5 files changed, 20 insertions, 10 deletions
diff --git a/src/main/scala/reading/component/Index.scala b/src/main/scala/reading/component/Index.scala
index ef8ae51..41139cc 100644
--- a/src/main/scala/reading/component/Index.scala
+++ b/src/main/scala/reading/component/Index.scala
@@ -14,8 +14,8 @@ import reading.models.{Book, Filter}
import reading.utils.RxAttr
object Index {
- def apply(): Frag = {
- val filters: Var[Seq[Filter]] = Var(Nil)
+ def apply(initialFilters: Seq[Filter]): HtmlTag = {
+ val filters: Var[Seq[Filter]] = Var(initialFilters)
val books: Rx[Seq[Book]] = Rx {
if(filters().isEmpty) Books() else Book.filter(Books(), filters())
}
diff --git a/src/main/scala/reading/component/index/Books.scala b/src/main/scala/reading/component/index/Books.scala
index 435bf50..3faa130 100644
--- a/src/main/scala/reading/component/index/Books.scala
+++ b/src/main/scala/reading/component/index/Books.scala
@@ -32,10 +32,12 @@ object Books {
),
div(
div(BooksStyle.item, s"classe : ${book.programs.map(Program.grade).distinct.sorted.mkString(", ")}"),
- div(BooksStyle.item, s"programme : ${book.programs.sorted.mkString(", ")}"),
+ div(BooksStyle.item, s"programme : ${book.programs.map(p => "« " ++ p.toString ++ " »").sorted.mkString(", ")}"),
div(BooksStyle.item, s"thème : ${book.themes.sorted.mkString(", ")}"),
div(BooksStyle.item, s"genre : ${book.genres.sorted.mkString(", ")}"),
- div(BooksStyle.item, s"période : ${book.period}")
+ book.period.map { period =>
+ div(BooksStyle.item, s"période : $period")
+ }
)
)
)
diff --git a/src/main/scala/reading/component/index/Filters.scala b/src/main/scala/reading/component/index/Filters.scala
index a53e46d..a5ea3f6 100644
--- a/src/main/scala/reading/component/index/Filters.scala
+++ b/src/main/scala/reading/component/index/Filters.scala
@@ -11,6 +11,7 @@ import reading.component.index.style.{Filters => FiltersStyle}
import reading.component.widget.Cross
import reading.component.style.Col
import reading.models.Filter
+import reading.Route
import reading.utils.{RxTag, RxAttr}
object Filters {
@@ -26,7 +27,11 @@ object Filters {
filters().sortBy(_.name).map { filter =>
div(
FiltersStyle.filter,
- RxAttr(onclick, Rx(() => filters() = Filter.remove(filters(), filter))),
+ RxAttr(onclick, Rx(() => {
+ val newFilters = Filter.remove(filters(), filter)
+ filters() = newFilters
+ Route.push(Route.Books(newFilters))
+ })),
span(FiltersStyle.name, filter.name),
Cross(15.px, Col.white)
)
diff --git a/src/main/scala/reading/component/index/FiltersMenu.scala b/src/main/scala/reading/component/index/FiltersMenu.scala
index febc52c..1015df1 100644
--- a/src/main/scala/reading/component/index/FiltersMenu.scala
+++ b/src/main/scala/reading/component/index/FiltersMenu.scala
@@ -10,6 +10,7 @@ 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 =
@@ -17,7 +18,7 @@ object FiltersMenu {
div(
FiltersMenuStyle.render,
FiltersMenuStyle.groups,
- filters().find(_.kind == GradeKind) match {
+ filters().find(_.kind == FilterKind.Grade) match {
case None =>
group(books, filters, "Classe", Grade.values.map(Filter.apply(_)))
case Some(grade) =>
@@ -41,7 +42,7 @@ object FiltersMenu {
val filtersWithCount = Rx {
groupFilters
.filter(filter => !Filter.contains(filters(), filter))
- .map(filter => (filter, Book.filter(books(), filter +: filters()).length))
+ .map(filter => (filter, Book.filter(books(), Seq(filter)).length))
.filter(_._2 > 0)
}
@@ -55,7 +56,11 @@ object FiltersMenu {
filtersWithCount().map { case (filter, count) =>
button(
FiltersMenuStyle.filter,
- RxAttr(onclick, Rx(() => filters() = filter +: filters())),
+ RxAttr(onclick, Rx(() => {
+ val newFilters = filter +: filters()
+ filters() = newFilters
+ Route.push(Route.Books(newFilters))
+ })),
span(s"${filter.name.capitalize} ($count)")
)
}
diff --git a/src/main/scala/reading/component/index/style/Books.scala b/src/main/scala/reading/component/index/style/Books.scala
index fc3a18f..ad7375d 100644
--- a/src/main/scala/reading/component/index/style/Books.scala
+++ b/src/main/scala/reading/component/index/style/Books.scala
@@ -8,8 +8,6 @@ object Books extends StyleSheet.Inline {
import dsl._
val books = style(
- display.flex,
- flexWrap.wrap
)
val book = style(