package dev.inmo.kmppscriptbuilder.web.views import dev.inmo.kmppscriptbuilder.core.models.* import dev.inmo.kmppscriptbuilder.web.utils.ukActive import kotlinx.browser.document import org.w3c.dom.HTMLElement import org.w3c.dom.HTMLInputElement class MavenProjectInfoView : View { private val nameElement = document.getElementById("projectNameInput") as HTMLInputElement private val descriptionElement = document.getElementById("projectDescriptionInput") as HTMLInputElement private val urlElement = document.getElementById("projectUrlInput") as HTMLInputElement private val vcsUrlElement = document.getElementById("projectVCSUrlInput") as HTMLInputElement private val disableGpgSigningElement = document.getElementById("disableGpgSigning") as HTMLElement private val optionalGpgSigningElement = document.getElementById("optionalGpgSigning") as HTMLElement private val enableGpgSigningElement = document.getElementById("enableGpgSigning") as HTMLElement private val includeMavenCentralElement = document.getElementById("includeMavenCentralTargetRepoToggle") as HTMLInputElement private val developersView = DevelopersView(document.getElementById("developersListDiv") as HTMLElement) private val repositoriesView = RepositoriesView(document.getElementById("repositoriesListDiv") as HTMLElement) private var gpgSignMode: GpgSigning = GpgSigning.Disabled set(value) { field = value when (value) { GpgSigning.Enabled -> { enableGpgSigningElement.ukActive = true disableGpgSigningElement.ukActive = false optionalGpgSigningElement.ukActive = false } GpgSigning.Optional -> { enableGpgSigningElement.ukActive = false disableGpgSigningElement.ukActive = false optionalGpgSigningElement.ukActive = true } GpgSigning.Disabled -> { enableGpgSigningElement.ukActive = false disableGpgSigningElement.ukActive = true optionalGpgSigningElement.ukActive = false } } } var mavenConfig: MavenConfig get() = MavenConfig( nameElement.value.ifBlank { defaultProjectName }, descriptionElement.value.ifBlank { defaultProjectDescription }, urlElement.value, vcsUrlElement.value, developersView.developers, repositoriesView.repositories + if (includeMavenCentralElement.checked) { listOf(SonatypeRepository) } else { emptyList() }, when { optionalGpgSigningElement.ukActive -> GpgSigning.Optional enableGpgSigningElement.ukActive -> GpgSigning.Enabled else -> GpgSigning.Disabled } ) set(value) { nameElement.value = value.name descriptionElement.value = value.description urlElement.value = value.url vcsUrlElement.value = value.vcsUrl gpgSignMode = if (value.includeGpgSigning) { GpgSigning.Enabled } else { value.gpgSigning } developersView.developers = value.developers val reposWithoutSonatype = value.repositories.filter { it != SonatypeRepository } includeMavenCentralElement.checked = value.repositories.size != reposWithoutSonatype.size repositoriesView.repositories = reposWithoutSonatype } init { enableGpgSigningElement.onclick = { gpgSignMode = GpgSigning.Enabled; Unit } disableGpgSigningElement.onclick = { gpgSignMode = GpgSigning.Disabled; Unit } optionalGpgSigningElement.onclick = { gpgSignMode = GpgSigning.Optional; Unit } } }