From ecdad9655c32fb24c23dc23b46fec8f887399206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20T=C3=B3th?= <tothmiklostibor@gmail.com> Date: Fri, 10 Jun 2022 15:45:08 +0200 Subject: [PATCH] Clean code up --- src/jsMain/kotlin/Main.kt | 27 ++++++++++++++----------- src/jsMain/kotlin/pekstuff/PekTable.kt | 27 +++++++++---------------- src/jsMain/kotlin/pekstuff/Utils.kt | 27 +++++++++++++++---------- src/jsMain/kotlin/pontozas.kt | 2 -- src/jsMain/kotlin/processing/Process.kt | 6 ++++-- 5 files changed, 45 insertions(+), 44 deletions(-) diff --git a/src/jsMain/kotlin/Main.kt b/src/jsMain/kotlin/Main.kt index 32ec215..9659ac7 100644 --- a/src/jsMain/kotlin/Main.kt +++ b/src/jsMain/kotlin/Main.kt @@ -1,18 +1,21 @@ -import androidx.compose.runtime.* -import gapi.initGapi -import gapi.loadGapi import kotlinx.browser.document -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch -import org.jetbrains.compose.web.attributes.disabled -import org.jetbrains.compose.web.dom.* -import org.jetbrains.compose.web.renderComposable -import processing.format -import ui.* -import ui.State + +val thingsToTry = listOf( + { replaceTitle() }, + { pontozas() }, +) + fun main() { - pontozas() + thingsToTry.forEach { + try { + it() + } catch (_: dynamic) {} + } } + +fun replaceTitle() { + document.title = document.title.replace("PéK", "PéK \uD83D\uDC68\u200D\uD83C\uDF73") +} diff --git a/src/jsMain/kotlin/pekstuff/PekTable.kt b/src/jsMain/kotlin/pekstuff/PekTable.kt index c4511da..21cad2b 100644 --- a/src/jsMain/kotlin/pekstuff/PekTable.kt +++ b/src/jsMain/kotlin/pekstuff/PekTable.kt @@ -7,24 +7,18 @@ import org.w3c.dom.Element import org.w3c.dom.HTMLInputElement import org.w3c.dom.HTMLTableElement -fun getPeople() = - document.querySelectorAll("#name-list > li > a") - .toList() - .map { it.textContent!! } - -fun getPrinciples() = - document.querySelector("#points-table > tbody > tr")!! - .querySelectorAll("td > div > span.tooltiptext") - .toList() - .map { it.textContent!!.trimAsPrinciple() } - - - object PekTable { - val people by lazy { getPeople() } - val principles by lazy { getPrinciples() } + val people get() = + document.querySelectorAll("#name-list > li > a") + .toList() + .map { it.textContent!! } + val principles get() = + document.querySelector("#points-table > tbody > tr")!! + .querySelectorAll("td > div > span.tooltiptext") + .toList() + .map { it.textContent!!.trimAsPrinciple() } private val tableElem = document.querySelector("#points-table") as HTMLTableElement - private val table by lazy { + private val table get() = document.querySelectorAll("#points-table > tbody > tr") .toList() .map { @@ -32,7 +26,6 @@ object PekTable { .querySelectorAll("td > div > input") .toList() } - } operator fun get(person: String, principle: String): Int { val pers = people.indexOf(person) diff --git a/src/jsMain/kotlin/pekstuff/Utils.kt b/src/jsMain/kotlin/pekstuff/Utils.kt index 65d4b60..e0b6967 100644 --- a/src/jsMain/kotlin/pekstuff/Utils.kt +++ b/src/jsMain/kotlin/pekstuff/Utils.kt @@ -50,20 +50,11 @@ fun String.trimAsPrinciple(): String { return ret.trim() } -fun NodeList.toList(): List<Node> { - val ret = mutableListOf<Node>() - for (i in 0 until this.length) { - val elem = this[i] - elem?.let { - ret.add(it) - } - } - return ret -} +fun NodeList.toList(): List<Node> = List(length) { i -> this[i] }.filterNotNull() fun Node.trigger() { val event = document.createEvent("HTMLEvents") - event.initEvent("change", false, true) + event.initEvent("change", bubbles = false, cancelable = true) this.dispatchEvent(event) } @@ -93,3 +84,17 @@ suspend fun PekTable.clear( } } } + +fun showComments() { + val h3 = document.querySelector("#comment-accordion > h3.uk-accordion-title") + val div = document.querySelector("""#comment-accordion > div[data-wrapper="true"]""") as? HTMLDivElement + if (h3 == null || div == null) { + return + } + + h3.classList.add("uk-active") + div.style.height = "auto" + div.style.overflowX = "" + div.style.overflowY = "" + div.setAttribute("aria-expanded", "true") +} \ No newline at end of file diff --git a/src/jsMain/kotlin/pontozas.kt b/src/jsMain/kotlin/pontozas.kt index 901be99..9d76e19 100644 --- a/src/jsMain/kotlin/pontozas.kt +++ b/src/jsMain/kotlin/pontozas.kt @@ -23,8 +23,6 @@ fun pontozas() { fixNameSpacing() - document.title = document.title.replace("PéK", "PéK \uD83D\uDC68\u200D\uD83C\uDF73") - renderComposable(root = rootDiv) { var google by remember { mutableStateOf(false) } var state by remember { mutableStateOf<State>(Ready) } diff --git a/src/jsMain/kotlin/processing/Process.kt b/src/jsMain/kotlin/processing/Process.kt index 6313085..457c46b 100644 --- a/src/jsMain/kotlin/processing/Process.kt +++ b/src/jsMain/kotlin/processing/Process.kt @@ -6,6 +6,7 @@ import kotlinx.coroutines.delay import pekstuff.PekDelay import pekstuff.PekNote import pekstuff.PekTable +import pekstuff.showComments import kotlin.math.max class ProcessingError(private val errors: List<String>): Exception(errors.toString()) { @@ -18,9 +19,10 @@ class ProcessingError(private val errors: List<String>): Exception(errors.toStri suspend fun DataSource.process( progress: (Double) -> Unit = {} ) { - // todo show comment stuff - progress(0.0) + + showComments() + val principleMappings = principles.associateWith { PekTable.principles.findClosestMatch(it) } -- GitLab