deprecated/mod_edit_assesment_plot2.R

#' 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
       )
   })
  })
}
teofiln/gene.editing.dash documentation built on Feb. 21, 2022, 12:59 a.m.