package reading.component import rx._ import Ctx.Owner.Unsafe._ import scalatags.JsDom.all._ import scalacss.Defaults._ import scalacss.ScalatagsCss._ import reading.Books import reading.component.style.{ Index => IndexStyle } import reading.component.index.{ Menu, Header, Books => BooksComponent } import reading.models.{ Book, Filter } object Index { 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()) } val count: Rx[Int] = Rx(books().length) val showFiltersMenu: Var[Boolean] = Var(false) div( IndexStyle.render, IndexStyle.page, Menu(books, filters, showFiltersMenu), div( IndexStyle.main, Header(filters, showFiltersMenu, count), BooksComponent(books) ) ) } }