Add config
This commit is contained in:
parent
32596228fe
commit
997f374fe4
18 changed files with 287 additions and 120 deletions
|
@ -3,11 +3,28 @@ package de.kif.frontend.views.overview
|
|||
import de.kif.frontend.iterator
|
||||
import de.kif.frontend.launch
|
||||
import de.kif.frontend.repository.PostRepository
|
||||
import de.westermann.kobserve.event.subscribe
|
||||
import org.w3c.dom.HTMLElement
|
||||
import org.w3c.dom.HTMLTextAreaElement
|
||||
import org.w3c.dom.events.EventListener
|
||||
import org.w3c.dom.get
|
||||
import kotlin.browser.document
|
||||
import kotlin.dom.clear
|
||||
|
||||
private fun sortOverviewPosts(container: HTMLElement) {
|
||||
val list = container.children.iterator().asSequence().toList()
|
||||
|
||||
val sorted = list.sortedWith(compareBy(
|
||||
{ if (it.dataset["pinned"]?.toBoolean() == true) 0 else 1 },
|
||||
{ -(it.dataset["id"]?.toLong() ?: -1) }
|
||||
))
|
||||
|
||||
container.clear()
|
||||
|
||||
for (element in sorted) {
|
||||
container.appendChild(element)
|
||||
}
|
||||
}
|
||||
|
||||
fun initOverviewMain() {
|
||||
val main = document.getElementsByClassName("overview-main")[0] as HTMLElement
|
||||
|
@ -15,24 +32,13 @@ fun initOverviewMain() {
|
|||
PostRepository.onCreate {
|
||||
val post = PostView.create(it)
|
||||
post.classList += "overview-post"
|
||||
main.appendChild(post.html)
|
||||
|
||||
val first = main.firstElementChild as? HTMLElement
|
||||
sortOverviewPosts(main)
|
||||
}
|
||||
|
||||
if (first == null) {
|
||||
main.appendChild(post.html)
|
||||
return@onCreate
|
||||
}
|
||||
if (first.classList.contains("post")) {
|
||||
main.insertBefore(post.html, first)
|
||||
return@onCreate
|
||||
}
|
||||
|
||||
val next = first.nextElementSibling as? HTMLElement
|
||||
if (next == null) {
|
||||
main.appendChild(post.html)
|
||||
} else {
|
||||
main.insertBefore(post.html, next)
|
||||
}
|
||||
subscribe<PostChangeEvent> {
|
||||
sortOverviewPosts(main)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package de.kif.frontend.views.overview
|
||||
|
||||
import de.kif.common.model.Post
|
||||
import de.kif.frontend.launch
|
||||
import de.kif.frontend.repository.PostRepository
|
||||
import de.westermann.kobserve.event.emit
|
||||
import de.westermann.kwebview.View
|
||||
import de.westermann.kwebview.components.Link
|
||||
import de.westermann.kwebview.createHtmlView
|
||||
|
@ -16,7 +16,13 @@ class PostView(
|
|||
view: HTMLElement
|
||||
) : View(view) {
|
||||
|
||||
private var postId = dataset["id"]?.toLongOrNull() ?: -1
|
||||
val postId = dataset["id"]?.toLongOrNull() ?: -1
|
||||
|
||||
var pinned: Boolean
|
||||
get() = dataset["pinned"] == "true"
|
||||
set(value) {
|
||||
dataset["pinned"] = value.toString()
|
||||
}
|
||||
|
||||
private val nameView: Link
|
||||
private val contentView: View
|
||||
|
@ -27,8 +33,11 @@ class PostView(
|
|||
|
||||
nameView.text = p.name
|
||||
nameView.target = "/p/${p.url}"
|
||||
pinned = p.pinned
|
||||
|
||||
contentView.html.innerHTML = PostRepository.htmlByUrl(p.url)
|
||||
|
||||
emit(PostChangeEvent(postId))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -67,3 +76,5 @@ class PostView(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class PostChangeEvent(val id: Long)
|
||||
|
|
|
@ -967,12 +967,6 @@ form {
|
|||
min-width: 20%;
|
||||
}
|
||||
|
||||
.overview-shortcuts {
|
||||
a {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.overview-twitter {
|
||||
height: 20rem;
|
||||
background-color: #b3e6f9;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue