124 lines
3.4 KiB
R
124 lines
3.4 KiB
R
|
ui_global_controls <- function(id) {
|
||
|
ns <- shiny::NS(id)
|
||
|
|
||
|
tagList(
|
||
|
layout_columns(
|
||
|
class = "align-items-end",
|
||
|
selectizeInput(
|
||
|
ns("theme_style"),
|
||
|
"Theme style",
|
||
|
list(
|
||
|
"Default" = "default",
|
||
|
"All" = "all",
|
||
|
"Semantic Colors" = list(
|
||
|
"Semantic Background" = "semantic-bg",
|
||
|
"Semantic Text" = "semantic-fg"
|
||
|
),
|
||
|
"Theme Colors" = list(
|
||
|
"Colored Background" = "colors-bg",
|
||
|
"Colored Text" = "colors-fg"
|
||
|
),
|
||
|
"Vibrant" = list(
|
||
|
"Gradient Background" = "gradient"
|
||
|
)
|
||
|
)
|
||
|
),
|
||
|
shuffleButton(ns("random_theme"), "Theme"),
|
||
|
shuffleButton(ns("random_stat"), "Stats")
|
||
|
),
|
||
|
layout_columns(
|
||
|
class = "align-items-start",
|
||
|
div(
|
||
|
radioButtons(
|
||
|
ns("showcase_item"),
|
||
|
"Showcase Item",
|
||
|
choices = c("Plot", "Icon"),
|
||
|
inline = TRUE
|
||
|
),
|
||
|
conditionalPanel(
|
||
|
"input.showcase_item == 'Plot'",
|
||
|
ns = ns,
|
||
|
p(
|
||
|
class = "text-muted",
|
||
|
"See",
|
||
|
tags$a(href = "https://rstudio.github.io/bslib/articles/value-boxes/index.html#expandable-sparklines", "Expandable Sparklines"),
|
||
|
"for example plot code."
|
||
|
)
|
||
|
),
|
||
|
conditionalPanel(
|
||
|
"input.showcase_item == 'Icon'",
|
||
|
ns = ns,
|
||
|
shuffleButton(ns("random_icon"), "Icons")
|
||
|
)
|
||
|
),
|
||
|
radioButtons(
|
||
|
ns("showcase_layout"),
|
||
|
"Showcase Layout",
|
||
|
choices = c("Left center", "Top right", "Bottom"),
|
||
|
inline = TRUE
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
}
|
||
|
|
||
|
server_global_controls <- function(input, output, sessions, one, two, three) {
|
||
|
observeEvent(c(input$random_theme, input$theme_style), {
|
||
|
new_values <- switch(
|
||
|
input$theme_style,
|
||
|
all = {
|
||
|
one$theme$shuffle()
|
||
|
two$theme$shuffle()
|
||
|
three$theme$shuffle()
|
||
|
NULL
|
||
|
},
|
||
|
default = {
|
||
|
one$theme$set("Default")
|
||
|
two$theme$set("Default")
|
||
|
three$theme$set("Default")
|
||
|
NULL
|
||
|
},
|
||
|
"semantic-bg" = sample(setdiff(theme_colors, c("light", "dark")), 3),
|
||
|
"semantic-fg" = paste0("text-", sample(setdiff(theme_colors, c("light", "dark")), 3)),
|
||
|
"colors-bg" = sample(named_colors, 3, replace = TRUE),
|
||
|
"colors-fg" = paste0("text-", sample(named_colors, 3, replace = TRUE)),
|
||
|
gradient = sample(gradient_classes, 3)
|
||
|
)
|
||
|
|
||
|
if (is.null(new_values)) return()
|
||
|
|
||
|
one$theme$set(new_values[[1]])
|
||
|
two$theme$set(new_values[[2]])
|
||
|
three$theme$set(new_values[[3]])
|
||
|
}, ignoreInit = TRUE)
|
||
|
|
||
|
observeEvent(input$random_stat, {
|
||
|
one$random_stat()
|
||
|
two$random_stat()
|
||
|
three$random_stat()
|
||
|
})
|
||
|
|
||
|
observeEvent(input$random_icon, {
|
||
|
one$showcase_icon$shuffle()
|
||
|
two$showcase_icon$shuffle()
|
||
|
three$showcase_icon$shuffle()
|
||
|
})
|
||
|
|
||
|
observeEvent(input$showcase_item, {
|
||
|
item <- tolower(input$showcase_item)
|
||
|
one$set_showcase_item(item)
|
||
|
two$set_showcase_item(item)
|
||
|
three$set_showcase_item(item)
|
||
|
}, ignoreInit = TRUE)
|
||
|
|
||
|
observeEvent(input$showcase_layout, {
|
||
|
layout <- tolower(input$showcase_layout)
|
||
|
one$set_showcase_layout(layout)
|
||
|
two$set_showcase_layout(layout)
|
||
|
three$set_showcase_layout(layout)
|
||
|
}, ignoreInit = TRUE)
|
||
|
}
|
||
|
|
||
|
module_global_controls <- function(id, one, two, three) {
|
||
|
callModule(server_global_controls, id, one = one, two = two, three = three)
|
||
|
}
|