Thanks to visit codestin.com
Credit goes to github.com

Skip to content

shinyworks/chains

chains chains package logo, the word chains constructed from chain links

Lifecycle: experimental CRAN status R-universe version R-CMD-check Codecov test coverage

{chains} provides validated_reactive_val(), a hybrid reactive object that acts like a shiny::reactiveVal() but with a validation expression like a shiny::reactive(). This allows for the creation of self-validating reactive values, useful for managing complex, interdependent state in ‘shiny’ applications.

Motivation

In a standard Shiny app, you might have two inputs that depend on each other, like a “category” and “sub-category” selector. When the user changes the category, you need an observeEvent() to update the sub-category’s value to something valid. validated_reactive_val() and its wrappers like vrv_fct_scalar() simplify this pattern by building the validation logic directly into the reactive object itself. We also ensure that the changes happen in the correct order, and prevent observers from “seeing” the inconsistent state.

# The allowed groups depend on the selected "level".
allowed_groups <- shiny::reactive({
  if (shiny::req(input$level) == "A") {
    c("A1", "A2")
  } else {
    c("B1", "B2")
  }
})

# The group_val is validated to make sure it is always one of the allowed groups,
# returning "bad group" if not. It is also synchronized with the input$group.
group_val <- vrv_fct_scalar(
  levels = allowed_groups(),
  value = shiny::reactive(input$group),
  default = "bad group"
)

Now, any time input$level changes, group_val() will automatically re-validate its own state. When you read group_val(), you are guaranteed to get a value that is consistent with its dependencies. Also, if you set group_val to a bad value (such as group_val("C1")), it will return "bad group" anywhere that it is used.

Installation

You can install the development version of chains from GitHub with:

# install.packages("pak")
pak::pak("shinyworks/chains")

Code of Conduct

Please note that the chains project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

About

Complex Reactive Values for 'shiny'

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •