geposanui/R/preset_editor.R

95 lines
2.9 KiB
R
Raw Normal View History

2021-10-21 14:56:19 +02:00
# Create a preset editor.
preset_editor_ui <- function(id) {
species_choices <- species$id
names(species_choices) <- species$name
known_genes <- genes[name != ""]
gene_choices <- known_genes$id
names(gene_choices) <- known_genes$name
verticalLayout(
h3("Preset"),
selectInput(
NS(id, "preset"),
"Default presets",
choices = list(
"Replicatively aging species" = "replicative",
"All species" = "all",
"Customize" = "custom"
)
),
2021-11-02 14:42:52 +01:00
tabsetPanel(
id = NS(id, "customization"),
type = "hidden",
tabPanelBody(value = "none"),
tabPanelBody(
value = "custom",
shinyWidgets::pickerInput(
inputId = NS(id, "species"),
label = "Included species",
choices = species_choices,
selected = species_replicative,
options = list(
"actions-box" = TRUE,
"live-search" = TRUE
),
multiple = TRUE
2021-10-21 14:56:19 +02:00
),
2021-11-02 14:42:52 +01:00
shinyWidgets::pickerInput(
inputId = NS(id, "reference_genes"),
label = "Reference genes",
choices = gene_choices,
selected = genes_tpe_old,
options = list(
"actions-box" = TRUE,
"live-search" = TRUE
),
multiple = TRUE
2021-10-21 14:56:19 +02:00
),
2021-11-02 14:42:52 +01:00
actionButton(
NS(id, "apply_button"),
"Perform analysis",
class = "btn-primary",
style = "margin-top: 16px; margin-bottom: 16px"
)
2021-10-21 14:56:19 +02:00
)
)
)
}
# Create a server for the preset editor.
#
# @param id ID for namespacing the inputs and outputs.
#
# @return A reactive containing the preset.
preset_editor_server <- function(id) {
moduleServer(id, function(input, output, session) {
result <- reactiveVal(preset_replicative_species)
observeEvent(input$preset, {
2021-11-02 14:42:52 +01:00
panel <- if (input$preset == "replicative") {
2021-10-21 14:56:19 +02:00
result(preset_replicative_species)
2021-11-02 14:42:52 +01:00
"none"
2021-10-21 14:56:19 +02:00
} else if (input$preset == "all") {
result(preset_all_species)
2021-11-02 14:42:52 +01:00
"none"
} else {
"custom"
2021-10-21 14:56:19 +02:00
}
2021-11-02 14:42:52 +01:00
updateTabsetPanel(session, "customization", selected = panel)
2021-10-21 14:56:19 +02:00
})
observeEvent(input$apply_button, {
result(geposan::preset(
methods = method_ids,
species_ids = input$species,
gene_ids = genes$id,
reference_gene_ids = input$reference_genes
2021-10-21 14:56:19 +02:00
))
})
result
})
}