progress
This commit is contained in:
1 parent
d84861949f
commit
b6c68f5045
14 files changed
+296
-49
No files matched your search
@@ -0,0 +1,112 @@
|
||||
package net.keinekekse.app.books.ui
|
||||
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.html.*
|
||||
import net.keinekekse.app.books.db.BookRepository
|
||||
import net.keinekekse.app.books.model.Book
|
||||
|
||||
fun HTML.booksPage(booksRepo: BookRepository) {
|
||||
booksPage("Books-DB", mapOf(Pair(navBooks.first, ""))) {
|
||||
// content left
|
||||
div(classes = "basis-64 px-1 py-2 text-center $bgLeftColumn") {
|
||||
div {
|
||||
+"some content on the left "
|
||||
}
|
||||
|
||||
}
|
||||
// content right
|
||||
div(classes = "flex flex-auto $bgRightColumn") {
|
||||
div(classes = "flex flex-col flex-auto") {
|
||||
// div {
|
||||
// +"some heading"
|
||||
// }
|
||||
booksTable(booksRepo)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun FlowContent.booksTable(booksRepo: BookRepository) {
|
||||
val books: List<Book> = runBlocking {
|
||||
booksRepo.allBooks()
|
||||
}
|
||||
|
||||
div(classes = "flex-auto overflow-auto px-1 pb-1") {
|
||||
table {
|
||||
id = "bookstable"
|
||||
thead(classes = "$cssFixedTHead ") {
|
||||
tr {
|
||||
th(classes = "py-3 px-2") { +"Titel" }
|
||||
th(classes = "py-3 px-2") { +"Autor(en)" }
|
||||
th(classes = "py-3 px-2") { +"Serie" }
|
||||
th(classes = "py-3 px-2") { +"Sprache" }
|
||||
th(classes = "py-3 px-2") { +"Jahr" }
|
||||
th(classes = "py-3 px-2") { +"Typ" }
|
||||
th(classes = "py-3 px-2") { +"Gelesen" }
|
||||
th(classes = "py-3 px-2") {
|
||||
a {
|
||||
href = navBooksNew.second
|
||||
title = navBooksNew.first
|
||||
materialSymbolButton(
|
||||
"auto_stories",
|
||||
"font-weight: bold; font-size: 2em"
|
||||
)
|
||||
// library_add
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
tbody {
|
||||
for (book in books) {
|
||||
tr {
|
||||
td(classes = "border-t-1 $borderTable px-2 py-1") {
|
||||
+book.title
|
||||
}
|
||||
td(classes = "border-t-1 $borderTable px-2 py-1") {
|
||||
+artistsString(book, 40)
|
||||
}
|
||||
td(classes = "border-t-1 $borderTable px-2 py-1") {
|
||||
+(book.series?.name ?: "") // TODO add index
|
||||
}
|
||||
td(classes = "border-t-1 $borderTable px-2 py-1") {
|
||||
+book.language.name
|
||||
}
|
||||
td(classes = "border-t-1 $borderTable px-2 py-1") {
|
||||
+book.year.toString()
|
||||
}
|
||||
td(classes = "border-t-1 $borderTable px-2 py-1") {
|
||||
+book.type.name
|
||||
}
|
||||
td(classes = "border-t-1 $borderTable px-2 py-1 text-center text-slate-400") {
|
||||
title = if (book.read) "gelesen" else "ungelesen"
|
||||
if (book.read) materialSymbol("check_small") //check_small || check_circle
|
||||
else materialSymbol("close_small") //cancel || close || block
|
||||
}
|
||||
td(classes = "border-t-1 $borderTable px-2 py-1 text-nowrap") {
|
||||
a {
|
||||
title = if (book.read) "ungelesen" else "gelesen"
|
||||
materialSymbolButton("published_with_changes")
|
||||
}
|
||||
a {
|
||||
href = "${navBooksEdit.second}/${book.id}"
|
||||
materialSymbolButton("Edit")
|
||||
}
|
||||
materialSymbolButton("Delete")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun artistsString(book: Book, len: Int = 0): String {
|
||||
val rc = book.artists.joinToString(" & ") { it.artist.toString() }
|
||||
return if (rc.length > len) rc.slice(0..len) else rc
|
||||
}
|
||||
Reference in new issue
Block a user