#' edit_assesment_plot1 UI Function
#'
#' @description A shiny Module.
#'
#' @param id,input,output,session Internal parameters for {shiny}.
#'
#' @noRd
#'
#' @importFrom shiny NS tagList
mod_edit_assesment_plot2_ui <- function(id){
ns <- NS(id)
# TODO: Config or package data for input options
groups_options <-
c("target_id",
"sample_name",
"analysis_type",
"flank_size",
"gdna_id",
"description",
"experiment_id",
"Group",
"TimePoint",
"Disease"
) %>%
setNames(., janitor::make_clean_names(., case = "sentence"))
tagList(
column(
width = 12,
shiny::h5("Customize your plot"),
shiny::wellPanel(class = "well-thin", shiny::div(
class = "form-row",
shiny::div(
class = "col-md-2 compact-dropdown",
custom_picker_menu(
.id = ns("xvar"),
.label = "X axis variable",
.choices = groups_options,
selected = "sample_name",
multiple = FALSE,
width = "100%"
)
),
shiny::div(
class = "col-md-2 compact-dropdown",
custom_picker_menu(
.id = ns("facet"),
.label = "Grouping",
.choices = c("none", groups_options),
selected = "none",
multiple = FALSE,
width = "100%"
)
),
shiny::div(
class = "col-md-2 compact-dropdown",
custom_picker_menu(
.id = ns("color"),
.label = "Color-coding",
.choices = c("none", groups_options),
selected = "Group",
multiple = FALSE,
width = "100%"
)
),
shiny::div(
class = "col-md-3 compact-dropdown",
custom_picker_menu(
.id = ns("target"),
.label = "Filter targets",
.choices = unique(as.character(demo_data$qc_barplot$target_id)),
selected = NULL,
multiple = TRUE,
width = "100%"
)),
shiny::div(
class = "col-md-3 compact-dropdown",
custom_picker_menu(
.id = ns("sample"),
.label = "Filter samples",
.choices = unique(demo_data$qc_barplot$sample_name),
selected = NULL,
multiple = TRUE,
width = "100%"
)
))),
shiny::hr(),
plotly::plotlyOutput(outputId = ns("edit_assessment_1"))
))
}
#' edit_assesment_plot1 Server Functions
#'
#' @noRd
mod_edit_assesment_plot2_server <- function(id, app_data){
moduleServer( id, function(input, output, session){
ns <- session$ns
filter_list <- shiny::reactive({
lapply(c("target", "sample"), \(x) input[[x]]) %>%
setNames(c("target_id", "sample_name")) %>%
purrr::discard(is.null)
})
data_to_render <- shiny::reactive({
gargoyle::watch("new_project_selected")
gargoyle::watch("no_project_selected")
shiny::validate(shiny::need(
shiny::isTruthy(app_data$project),
message = "Please select a project in the `Project' tab."))
demo_data$qc_barplot %>%
dplyr::filter(experiment_id == app_data$project) %>%
dyn_filter(.data = ., .filter_list = filter_list())
})
shiny::observe({
new_choices <- unique(data_to_render()$sample_name)
shiny::updateSelectInput(inputId = "sample",
label = "Sample",
choices = new_choices,
selected = NULL)
}) %>% shiny::bindEvent(input$description)
output$edit_assessment_1 <- plotly::renderPlotly({
shiny::validate(
shiny::need(
nrow(data_to_render()) > 0,
message = "Found no data matching your query. Please adjust your filters.")
)
if (input$color == "none") {
input_gvar <- NULL
} else {
input_gvar <- input$color
}
if (input$facet == "none") {
input_fvar <- NULL
} else {
input_fvar <- input$facet
}
data_to_render() %>%
dplyr::mutate(modified_pct = round(as.numeric(modified_pct), 2)) %>%
make_barplot_w_jitter_and_grouping(
.xvar = input$xvar,
.yvar = "modified_pct",
.gvar = input_gvar,
.fvar = input_fvar
)
})
})
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.