diff --git a/build.gradle.kts b/build.gradle.kts index d203c50..f0c9950 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,7 +17,6 @@ repositories { kotlin { jvmToolchain(20) -// project.sourceSets.create("main") project.sourceSets.create("commonTest") sourceSets { val main: KotlinSourceSet by getting { diff --git a/src/main/kotlin/org/reactome/lit_ball/common/QuerySetting.kt b/src/main/kotlin/org/reactome/lit_ball/common/QuerySetting.kt index b8591ac..95082c7 100644 --- a/src/main/kotlin/org/reactome/lit_ball/common/QuerySetting.kt +++ b/src/main/kotlin/org/reactome/lit_ball/common/QuerySetting.kt @@ -10,11 +10,13 @@ import java.io.File data class QuerySetting( var mandatoryKeyWords: MutableSet = mutableSetOf(), var forbiddenKeyWords: MutableSet = mutableSetOf(), + var pubDateFilterFrom: String = "", + var pubDateFilterTo: String = "", var classifier: String = "virus-EXP", var annotationClasses: MutableSet = mutableSetOf(), ) { override fun toString(): String { - return "QuerySetting(posKeyWords=$mandatoryKeyWords, negKeyWords=$forbiddenKeyWords, classifier=$classifier), annotationClasses=$annotationClasses" + return "QuerySetting(posKeyWords=$mandatoryKeyWords, negKeyWords=$forbiddenKeyWords, pubDateFilterFrom/To=$pubDateFilterFrom/$pubDateFilterTo, classifier=$classifier), annotationClasses=$annotationClasses" } companion object { diff --git a/src/main/kotlin/org/reactome/lit_ball/dialog/QuerySettingsDialog.kt b/src/main/kotlin/org/reactome/lit_ball/dialog/QuerySettingsDialog.kt index 31651b5..96bf881 100644 --- a/src/main/kotlin/org/reactome/lit_ball/dialog/QuerySettingsDialog.kt +++ b/src/main/kotlin/org/reactome/lit_ball/dialog/QuerySettingsDialog.kt @@ -5,14 +5,15 @@ package org.reactome.lit_ball.dialog import androidx.compose.foundation.layout.Column import androidx.compose.material.* import androidx.compose.runtime.Composable +import androidx.compose.runtime.MutableState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import org.reactome.lit_ball.common.LitBallQuery import org.reactome.lit_ball.common.QuerySetting +import org.reactome.lit_ball.common.LitBallQuery import org.reactome.lit_ball.util.splitToSet @Composable @@ -26,25 +27,32 @@ fun QuerySettingsDialog( rememberSaveable { mutableStateOf(item.setting?.mandatoryKeyWords?.joinToString(separator = ", ") ?: "") } val field2Value = rememberSaveable { mutableStateOf(item.setting?.forbiddenKeyWords?.joinToString(separator = ", ") ?: "") } - val field3Value = rememberSaveable { mutableStateOf(item.setting?.classifier ?: "") } - val field4Value = + val field3Value = rememberSaveable { mutableStateOf(item.setting?.pubDateFilterFrom ?: "") } + val field4Value = rememberSaveable { mutableStateOf(item.setting?.pubDateFilterTo ?: "") } + val field5Value = rememberSaveable { mutableStateOf(item.setting?.classifier ?: "") } + val field6Value = rememberSaveable { mutableStateOf(item.setting?.annotationClasses?.joinToString(separator = ", ") ?: "") } + fun closeDialog() { + rootScope.launch { onCloseClicked() } + } + AlertDialog( - onDismissRequest = { - rootScope.launch { (onCloseClicked)() } - }, + onDismissRequest = { closeDialog() }, confirmButton = { TextButton( onClick = { item.setting!!.mandatoryKeyWords = field1Value.value.splitToSet(",") item.setting!!.forbiddenKeyWords = field2Value.value.splitToSet(",") - item.setting!!.classifier = field3Value.value.trim() - item.setting!!.annotationClasses = field4Value.value.splitToSet(",") + item.setting!!.pubDateFilterFrom = field3Value.value.trim() + item.setting!!.pubDateFilterTo = field4Value.value.trim() + item.setting!!.classifier = field5Value.value.trim() + item.setting!!.classifier = field5Value.value.trim() + item.setting!!.annotationClasses = field6Value.value.splitToSet(",") rootScope.launch(Dispatchers.IO) { item.saveSettings() } - rootScope.launch { (onCloseClicked)() } + closeDialog() } ) { Text("Confirm") @@ -52,45 +60,47 @@ fun QuerySettingsDialog( }, dismissButton = { TextButton( - onClick = { - rootScope.launch { (onCloseClicked)() } - } + onClick = { closeDialog() } ) { Text("Dismiss") } }, - title = { - Text( - "Edit query settings", - ) - }, + title = { Text("Edit query settings") }, text = { Column(horizontalAlignment = Alignment.Start) { - TextField( - value = field1Value.value, - onValueChange = { field1Value.value = it }, - label = { Text("Mandatory keywords") }, - placeholder = { Text("text1, text2, ...") } - ) - TextField( - value = field2Value.value, - onValueChange = { field2Value.value = it }, - label = { Text("Forbidden keywords") }, - placeholder = { Text("text1, text2, ...") } - ) - TextField( - value = field3Value.value, - onValueChange = { field3Value.value = it }, - label = { Text("Classifier model name") }, - ) - TextField( - value = field4Value.value, - onValueChange = { field4Value.value = it }, - label = { Text("Annotation classes") }, - placeholder = { Text("text1, text2, ...") } - ) + TextFieldWithPlaceholder(field1Value, "Mandatory keywords", "text1, text2, ...") + TextFieldWithPlaceholder(field2Value, "Forbidden keywords", "text1, text2, ...") + TextFieldWithPlaceholder(field3Value, "From (Date)", "1949-12-31") + TextFieldWithoutPlaceholder(field4Value, "To (Date)") + TextFieldWithoutPlaceholder(field5Value, "Classifier model name") + TextFieldWithPlaceholder(field6Value, "Annotation classes", "text1, text2, ...") } }, ) } +@Composable +fun TextFieldWithPlaceholder( + value: MutableState, + label: String, + placeholder: String, +) { + TextField( + value = value.value, + onValueChange = { value.value = it }, + label = { Text(label) }, + placeholder = { Text(placeholder) } + ) +} + +@Composable +fun TextFieldWithoutPlaceholder( + value: MutableState, + label: String, +) { + TextField( + value = value.value, + onValueChange = { value.value = it }, + label = { Text(label) }, + ) +} \ No newline at end of file