KotlinPublicationScriptsBui.../web/src/jsMain/kotlin/dev/inmo/kmppscriptbuilder/web/views/MavenProjectInfoView.kt

83 lines
3.8 KiB
Kotlin
Raw Normal View History

2021-03-01 20:43:30 +00:00
package dev.inmo.kmppscriptbuilder.web.views
2021-05-01 14:12:06 +00:00
import dev.inmo.kmppscriptbuilder.core.models.*
2022-01-04 15:49:16 +00:00
import dev.inmo.kmppscriptbuilder.web.utils.ukActive
2021-03-01 20:43:30 +00:00
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
2022-01-04 15:49:16 +00:00
private val disableGpgSigningElement = document.getElementById("disableGpgSigning") as HTMLElement
private val optionalGpgSigningElement = document.getElementById("optionalGpgSigning") as HTMLElement
private val enableGpgSigningElement = document.getElementById("enableGpgSigning") as HTMLElement
2021-03-01 20:43:30 +00:00
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)
2021-03-01 20:43:30 +00:00
2022-01-04 15:49:16 +00:00
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
}
}
}
2021-03-01 20:43:30 +00:00
var mavenConfig: MavenConfig
get() = MavenConfig(
2021-05-01 14:12:06 +00:00
nameElement.value.ifBlank { defaultProjectName },
descriptionElement.value.ifBlank { defaultProjectDescription },
2021-03-01 20:43:30 +00:00
urlElement.value,
vcsUrlElement.value,
developersView.developers,
repositoriesView.repositories + if (includeMavenCentralElement.checked) {
2021-03-01 20:43:30 +00:00
listOf(SonatypeRepository)
} else {
emptyList()
2022-01-04 15:49:16 +00:00
},
when {
optionalGpgSigningElement.ukActive -> GpgSigning.Optional
enableGpgSigningElement.ukActive -> GpgSigning.Enabled
else -> GpgSigning.Disabled
2021-03-01 20:43:30 +00:00
}
)
set(value) {
nameElement.value = value.name
descriptionElement.value = value.description
urlElement.value = value.url
vcsUrlElement.value = value.vcsUrl
2022-01-04 15:49:16 +00:00
gpgSignMode = if (value.includeGpgSigning) {
GpgSigning.Enabled
} else {
value.gpgSigning
}
2021-03-01 20:43:30 +00:00
developersView.developers = value.developers
val reposWithoutSonatype = value.repositories.filter { it != SonatypeRepository }
includeMavenCentralElement.checked = value.repositories.size != reposWithoutSonatype.size
2021-03-14 15:53:26 +00:00
repositoriesView.repositories = reposWithoutSonatype
2021-03-01 20:43:30 +00:00
}
2022-01-04 15:49:16 +00:00
init {
enableGpgSigningElement.onclick = { gpgSignMode = GpgSigning.Enabled; Unit }
disableGpgSigningElement.onclick = { gpgSignMode = GpgSigning.Disabled; Unit }
optionalGpgSigningElement.onclick = { gpgSignMode = GpgSigning.Optional; Unit }
}
}