| 1 |
#' Run example app |
|
| 2 |
#' |
|
| 3 |
#' @return A shiny app object |
|
| 4 |
#' @export |
|
| 5 |
#' @import shiny |
|
| 6 |
run_app <- function() {
|
|
| 7 |
# serve js tools for Monkey test (in case proxy blocks external scripts) |
|
| 8 | ! |
addResourcePath("gremlins", "inst/shinyValidator-js")
|
| 9 |
# DON'T CHANGE (INTERNAL TO SHINYVALIDATOR) |
|
| 10 | ! |
if (!exists(".enable_reactlog")) .enable_reactlog <- FALSE
|
| 11 | ! |
if (!exists(".profile_code")) .profile_code <- FALSE
|
| 12 | ||
| 13 | ! |
if (.enable_reactlog || .profile_code) {
|
| 14 | ! |
tmp <- body(app_server) |
| 15 | ! |
start <- length(tmp) + 1 # start just before the closing } |
| 16 | ! |
body(app_server)[[start]] <- substitute( |
| 17 | ! |
onSessionEnded(function() {
|
| 18 | ! |
stopApp(reactlog()) |
| 19 |
}) |
|
| 20 |
) |
|
| 21 |
} |
|
| 22 | ||
| 23 | ! |
runApp(shinyApp(app_ui, app_server), test.mode = TRUE) |
| 24 |
} |
|
| 25 | ||
| 26 |
globalVariables(c("app_ui", "app_server"))
|
| 1 |
#' The application server-side |
|
| 2 |
#' |
|
| 3 |
#' @param input,output,session Internal parameters for {shiny}. DO NOT REMOVE.
|
|
| 4 |
#' @import shiny |
|
| 5 |
#' @import echarts4r |
|
| 6 |
#' @noRd |
|
| 7 |
app_server <- function(input, output, session) {
|
|
| 8 |
# Your application server logic |
|
| 9 | 1x |
output$echarts_plot <- renderEcharts4r({
|
| 10 | ! |
Sys.sleep(3) |
| 11 | ! |
make_echart(input$var) |
| 12 |
}) |
|
| 13 | ||
| 14 | 1x |
output$ggplot_plot <- renderPlot({
|
| 15 | ! |
make_ggplot(input$col) |
| 16 |
}) |
|
| 17 |
} |
| 1 |
# "const customClicker = gremlins.species.clicker({
|
|
| 2 |
# // which mouse event types will be triggered |
|
| 3 |
# clickTypes: ['click'], |
|
| 4 |
# // Click only if element has id obs |
|
| 5 |
# canClick: (element) => element.id === 'obs', |
|
| 6 |
# // by default, the clicker gremlin shows its action by a red circle |
|
| 7 |
# // overriding showAction() with an empty function makes the gremlin action invisible |
|
| 8 |
# showAction: (x, y) => {},
|
|
| 9 |
# }); |
|
| 10 |
# |
|
| 11 |
# gremlins.createHorde({
|
|
| 12 |
# randomizer: new gremlins.Chance(1234), // repeatable |
|
| 13 |
# species: [customClicker], |
|
| 14 |
# mogwais: [gremlins.mogwais.alert(),gremlins.mogwais.gizmo()], |
|
| 15 |
# strategies: [ |
|
| 16 |
# gremlins.strategies.distribution({
|
|
| 17 |
# distribution: [1], // custom |
|
| 18 |
# delay: 10 // default |
|
| 19 |
# }) |
|
| 20 |
# ] |
|
| 21 |
# }).unleash().then(() => {
|
|
| 22 |
# console.log('Gremlins test success')
|
|
| 23 |
# });" |
|
| 24 | ||
| 25 |
echarts_df <- state.x77 %>% |
|
| 26 |
as.data.frame() %>% |
|
| 27 |
tibble::rownames_to_column("State")
|
|
| 28 | ||
| 29 |
make_echart <- function(var) {
|
|
| 30 |
# add the same id as plot output outside shiny |
|
| 31 |
# to avoid random snapshot id issue |
|
| 32 | ! |
id <- if (!shiny::isRunning()) "echarts_plot" else NULL |
| 33 | ! |
State <- NULL; |
| 34 | ! |
echarts_df %>% |
| 35 | ! |
e_charts(x = State, elementId = id) %>% # initialize and set x |
| 36 | ! |
e_line_(serie = var) # add a line |
| 37 |
} |
|
| 38 | ||
| 39 |
#' @import ggplot2 |
|
| 40 |
make_ggplot <- function(var = "cyl") { # default to mpg
|
|
| 41 | 1x |
ggplot(datasets::mtcars, aes_(x = as.name(var))) + geom_histogram(binwidth = 5) |
| 42 |
} |
| 1 |
#' Access files in the current app |
|
| 2 |
#' |
|
| 3 |
#' NOTE: If you manually change your package name in the DESCRIPTION, |
|
| 4 |
#' don't forget to change it here too, and in the config file. |
|
| 5 |
#' For a safer name change mechanism, use the `golem::set_golem_name()` function. |
|
| 6 |
#' |
|
| 7 |
#' @param ... character vectors, specifying subdirectory and file(s) |
|
| 8 |
#' within your package. The default, none, returns the root of the app. |
|
| 9 |
#' |
|
| 10 |
#' @noRd |
|
| 11 |
app_sys <- function(...) {
|
|
| 12 | ! |
system.file(..., package = "shinyValidatorTest2") |
| 13 |
} |
|
| 14 | ||
| 15 | ||
| 16 |
#' Read App Config |
|
| 17 |
#' |
|
| 18 |
#' @param value Value to retrieve from the config file. |
|
| 19 |
#' @param config GOLEM_CONFIG_ACTIVE value. If unset, R_CONFIG_ACTIVE. |
|
| 20 |
#' If unset, "default". |
|
| 21 |
#' @param use_parent Logical, scan the parent directory for config file. |
|
| 22 |
#' |
|
| 23 |
#' @noRd |
|
| 24 |
get_golem_config <- function( |
|
| 25 |
value, |
|
| 26 |
config = Sys.getenv( |
|
| 27 |
"GOLEM_CONFIG_ACTIVE", |
|
| 28 |
Sys.getenv( |
|
| 29 |
"R_CONFIG_ACTIVE", |
|
| 30 |
"default" |
|
| 31 |
) |
|
| 32 |
), |
|
| 33 |
use_parent = TRUE |
|
| 34 |
) {
|
|
| 35 | ! |
config::get( |
| 36 | ! |
value = value, |
| 37 | ! |
config = config, |
| 38 |
# Modify this if your config file is somewhere else: |
|
| 39 | ! |
file = app_sys("golem-config.yml"),
|
| 40 | ! |
use_parent = use_parent |
| 41 |
) |
|
| 42 |
} |
| 1 |
#' The application User-Interface |
|
| 2 |
#' |
|
| 3 |
#' @param request Internal parameter for `{shiny}`.
|
|
| 4 |
#' DO NOT REMOVE. |
|
| 5 |
#' @import shiny |
|
| 6 |
#' @noRd |
|
| 7 |
app_ui <- function(request) {
|
|
| 8 | ! |
tagList( |
| 9 |
# Leave this function for adding external resources |
|
| 10 | ! |
golem_add_external_resources(), |
| 11 |
# Your application UI logic |
|
| 12 | ! |
fluidPage( |
| 13 | ! |
selectInput( |
| 14 | ! |
"var", |
| 15 | ! |
"Select var", |
| 16 | ! |
choices = colnames(echarts_df)[-1], |
| 17 | ! |
selected = "Population" |
| 18 |
), |
|
| 19 | ! |
echarts4rOutput("echarts_plot"),
|
| 20 | ! |
selectInput( |
| 21 | ! |
"col", |
| 22 | ! |
"Select a column", |
| 23 | ! |
choices = colnames(datasets::mtcars), |
| 24 | ! |
selected = "mpg" |
| 25 |
), |
|
| 26 | ! |
plotOutput("ggplot_plot")
|
| 27 |
) |
|
| 28 |
) |
|
| 29 |
} |
|
| 30 | ||
| 31 |
#' Add external Resources to the Application |
|
| 32 |
#' |
|
| 33 |
#' This function is internally used to add external |
|
| 34 |
#' resources inside the Shiny application. |
|
| 35 |
#' |
|
| 36 |
#' @import shiny |
|
| 37 |
#' @importFrom golem add_resource_path activate_js favicon bundle_resources |
|
| 38 |
#' @noRd |
|
| 39 |
golem_add_external_resources <- function() {
|
|
| 40 | ||
| 41 | ! |
add_resource_path( |
| 42 | ! |
"www", app_sys("app/www")
|
| 43 |
) |
|
| 44 | ||
| 45 | ! |
tags$head( |
| 46 | ! |
favicon(), |
| 47 | ! |
bundle_resources( |
| 48 | ! |
path = app_sys("app/www"),
|
| 49 | ! |
app_title = "shinyValidatorTest2" |
| 50 |
) |
|
| 51 |
# Add here other external resources |
|
| 52 |
# for example, you can add shinyalert::useShinyalert() |
|
| 53 |
) |
|
| 54 |
} |