Learn R Programming

shinyCohortBuilder (version 0.4.0)

cb_ui: Include filtering panel in Shiny

Description

The function returns filtering panel placeholder, you may use in you custom Shiny application. Use in the UI part of your application.

Usage

cb_ui(
  id,
  ...,
  state = FALSE,
  steps = TRUE,
  code = TRUE,
  attrition = TRUE,
  new_step = c("clone", "configure"),
  manage_step = FALSE
)

cb_server( id, cohort, run_button = "none", stats = c("pre", "post"), feedback = FALSE, enable_bookmarking = shiny::getShinyOption("bookmarkStore", default = "disable"), show_help = TRUE, ... )

Value

Nested list of `shiny.tag` objects - html structure of filtering panel module.

`shiny::moduleServer` output providing server logic for filtering panel module.

Arguments

id

Id of the module used to render the panel.

...

Extra attributes passed to the panel div container.

state

Set to TRUE (default) to enable get/set state panel.

steps

Set to TRUE (default) if multiple steps should be available.

code

Set to TRUE (default) to enable reproducible code panel.

attrition

Set to TRUE (default) to enable attrition plot panel.

new_step

Choose which add step method should be used for creating new step. Possible options are: "clone" - copy filters from last step, "configure" - opening modal and allow to chose filters from available filters.

manage_step

When `TRUE`, enables feature, that alows to modify the latest step filters (add/remove them). Available list of filters used by the feature should be stores as `source$attributes$available_filters` object.

cohort

Cohort object storing filtering steps configuration.

run_button

Should Run button be displayed? If so, the current step computations are run only when clicked. Three options are available "none" - no button, "local" - button displayed at each step panel, "global" - button visible in top filtering panel.

stats

Choose which statistics should be displayed for data (and some filters). Possible options are: "pre" - previous step stat, "post" - current step stats, `c("pre", "post")` - for both and NULL for no stats.

feedback

Set to TRUE (default) if feedback plots should be displayed at each filter.

enable_bookmarking

Set to TRUE (default) if panel should be compatible with native shiny bookmarking.

show_help

Set to TRUE (default) to enable help buttons.

Examples

Run this code
if (interactive()) {
  library(cohortBuilder)
  library(shiny)
  library(shinyCohortBuilder)

  librarian_source <- set_source(as.tblist(librarian))
  librarian_cohort <- cohort(
    librarian_source,
    filter(
      "discrete", id = "author", dataset = "books",
      variable = "author", value = "Dan Brown",
      active = FALSE
    ),
    filter(
      "range", id = "copies", dataset = "books",
      variable = "copies", range = c(5, 10),
      active = FALSE
    ),
    filter(
      "date_range", id = "registered", dataset = "borrowers",
      variable = "registered", range = c(as.Date("2010-01-01"), Inf),
      active = FALSE
    )
  )

  ui <- fluidPage(
    sidebarLayout(
      sidebarPanel(
        cb_ui("librarian")
      ),
      mainPanel()
    )
  )

  server <- function(input, output, session) {
    cb_server("librarian", librarian_cohort)
  }

  shinyApp(ui, server)
}
if (interactive()) {
  # enabling latest step filters management
  library(cohortBuilder)
  library(shiny)
  library(shinyCohortBuilder)

  librarian_source <- set_source(as.tblist(librarian))
  librarian_source$attributes$available_filters <- list(
    filter(
      "discrete", id = "author", dataset = "books",
      variable = "author", value = "Dan Brown",
      active = FALSE
    ),
    filter(
      "range", id = "copies", dataset = "books",
      variable = "copies", range = c(5, 10),
      active = FALSE
    ),
    filter(
      "date_range", id = "registered", dataset = "borrowers",
      variable = "registered", range = c(as.Date("2010-01-01"), Inf),
      active = FALSE
    ),
    filter(
      "discrete", id = "program", dataset = "borrowers",
      variable = "program", value = NA,
      active = FALSE
    )
  )
  librarian_cohort <- cohort(
    librarian_source,
    filter(
      "range", id = "copies", dataset = "books",
      variable = "copies", range = c(5, 10),
      active = FALSE
    ),
    filter(
      "date_range", id = "registered", dataset = "borrowers",
      variable = "registered", range = c(as.Date("2010-01-01"), Inf),
      active = FALSE
    )
  )

  ui <- fluidPage(
    sidebarLayout(
      sidebarPanel(
        cb_ui("librarian", manage_step = TRUE)
      ),
      mainPanel()
    )
  )

  server <- function(input, output, session) {
    cb_server("librarian", librarian_cohort)
  }

  shinyApp(ui, server)
}

Run the code above in your browser using DataLab