The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
The goal of {scenes} is to make it easy to switch a {shiny} app between alternative UIs. It was designed to abstract the login-wrapper concept implemented in {shinyslack}.
Install the released version of {scenes} from CRAN:
install.packages("scenes")
Or install the development version of scenes from GitHub with:
# install.packages("remotes")
::install_github("r4ds/scenes") remotes
You can see a demonstration of {scenes} here.
Some examples of how you might use {scenes} to switch between different UIs in a Shiny app:
Login Wrapper: Use {scenes} to switch between a login page and the main content of the app. This is the original use case for {scenes}. It ws designed to abstract the login-wrapper concept implemented in {shinyslack}.
App Modes: Use {scenes} to switch between
different modes of the app, such as a view-only mode and an edit mode,
via a query parameter
(yourapp.shinyapps.io?mode=edit
).
User Roles: Use {scenes} to switch between different UIs based on user roles. For example, a non-admin user might see a different UI than an admin user.
The Login Wrapper example might look like this:
library(shiny)
library(scenes)
# Define the different scenes for the app
<- fluidPage(
login_ui textInput("username", "Username"),
passwordInput("password", "Password"),
actionButton("login", "Login")
)
<- fluidPage(
main_ui h1("Welcome"),
textOutput("username")
)
# Use the `set_scene()` function to define the different scenes, and
# `change_scene()` to switch between them.
<- change_scene(
ui set_scene(
main_ui,req_has_cookie(
"validate_login",
validation_fn = my_validation_fn
)
),fall_through = login_ui
)
<- function(input, output, session) {
server observeEvent(input$login, {
use_cookies_package_to_save_cookie_fn(input$username, input$password)
})
$username <- renderText({
output$username
input
})
}
shinyApp(ui = ui, server = server)
See {shinyslack} for a fully implemented example.
Other packages have implemented features in this domain.
Please note that the scenes project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.