shiny render func
This commit is contained in:
parent
19d25ee1fd
commit
88956c582b
46
R/facets.R
46
R/facets.R
|
@ -206,6 +206,52 @@ ax_facet_wrap <- function(ax,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Shiny -------------------------------------------------------------------
|
||||||
|
|
||||||
|
#' @export
|
||||||
|
apexfacetOutput <- function(outputId) {
|
||||||
|
htmltools::tagList(
|
||||||
|
shiny::uiOutput(outputId = outputId),
|
||||||
|
htmlwidgets::getDependency("apexcharter", "apexcharter")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
#' @export
|
||||||
|
#'
|
||||||
|
#' @importFrom shiny exprToFunction createRenderFunction createWebDependency
|
||||||
|
#' @importFrom htmltools renderTags resolveDependencies
|
||||||
|
renderApexfacet <- function(expr, env = parent.frame(), quoted = FALSE) {
|
||||||
|
func <- exprToFunction(expr, env, quoted)
|
||||||
|
createRenderFunction(
|
||||||
|
func = func,
|
||||||
|
transform = function(result, shinysession, name, ...) {
|
||||||
|
if (is.null(result) || length(result) == 0)
|
||||||
|
return(NULL)
|
||||||
|
if (!inherits(result, "apex_facet")) {
|
||||||
|
stop(
|
||||||
|
"renderApexfacet: 'expr' must return an apexcharter facets.",
|
||||||
|
call. = FALSE
|
||||||
|
)
|
||||||
|
}
|
||||||
|
facets_charts <- build_facets(result)
|
||||||
|
TAG <- build_grid(
|
||||||
|
content = facets_charts,
|
||||||
|
nrow = result$x$facet$nrow,
|
||||||
|
ncol = result$x$facet$ncol
|
||||||
|
)
|
||||||
|
rendered <- renderTags(TAG)
|
||||||
|
deps <- lapply(
|
||||||
|
X = resolveDependencies(rendered$dependencies),
|
||||||
|
FUN = createWebDependency
|
||||||
|
)
|
||||||
|
list(
|
||||||
|
html = rendered$html,
|
||||||
|
deps = deps
|
||||||
|
)
|
||||||
|
}, apexfacetOutput, list()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
|
||||||
|
library(shiny)
|
||||||
|
library(htmltools)
|
||||||
|
library(apexcharter)
|
||||||
|
|
||||||
|
data("unhcr_ts")
|
||||||
|
refugees <- unhcr_ts %>%
|
||||||
|
subset(population_type == "Refugees (incl. refugee-like situations)") %>%
|
||||||
|
transform(date = as.Date(paste0(year, "-01-01")))
|
||||||
|
|
||||||
|
|
||||||
|
ui <- fluidPage(
|
||||||
|
|
||||||
|
tags$h2("Apexcharts Facets Example"),
|
||||||
|
|
||||||
|
apexfacetOutput("myfacet")
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
server <- function(input, output, session) {
|
||||||
|
|
||||||
|
output$myfacet <- renderApexfacet({
|
||||||
|
apex(refugees, aes(date, n), type = "line") %>%
|
||||||
|
ax_yaxis(tickAmount = 5) %>%
|
||||||
|
ax_facet_wrap(vars(continent_origin))
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
shinyApp(ui, server)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue