| 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 |
}
|