diff --git a/src/jsMain/kotlin/Main.kt b/src/jsMain/kotlin/Main.kt index 32ec21598b096e193cbb34dec96bb18f003d602c..9659ac74afe4e626066e50ddde6269755403ec4b 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 c4511dac503ddfd88a2b54da79b0c2d6a9afb1a4..21cad2bda02099684f7ae1e28fdc0b9f87fac148 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 65d4b60e9d8f4b4329ab02b7e07c1e9bd1643eb7..e0b6967766e28357bcf188326e61acdd9a1cfbd4 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 901be99dd8cfdcd8051c1b2c7f31dc8efe34b19d..9d76e19288eb0660434f695fd467fdf25a107f24 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 63130852f8a2683a24bdfbd95241f0be7a218386..457c46b918ed65b52fd55ff5caf7322c3d66a722 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) }