Skip to content
Snippets Groups Projects
Commit 890c8657 authored by arsenij.ustjanzew's avatar arsenij.ustjanzew
Browse files

Implemented general Method for htmlwidgets. removed Methods for single widgets.

parent e73ce010
No related branches found
No related tags found
1 merge request!18Generic htm lwidget
Pipeline #129868 canceled
...@@ -21,7 +21,8 @@ Imports: ...@@ -21,7 +21,8 @@ Imports:
rmarkdown, rmarkdown,
stringr, stringr,
glue, glue,
ymlthis ymlthis,
switchr
Suggests: Suggests:
highcharter, highcharter,
plotly, plotly,
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#' @param package The name of the R package that defines the class(object). #' @param package The name of the R package that defines the class(object).
#' @param page The name of the page to add the object to. #' @param page The name of the page to add the object to.
#' @param title An optional component title. #' @param title An optional component title.
add_vis_object <- function(dashboard, object, package, page = "default", title = NULL, ...){ add_vis_object <- function(dashboard, object, package = NULL, page = "default", title = NULL, ...){
sanitised_page <- i2dash:::.create_page_name(page) sanitised_page <- i2dash:::.create_page_name(page)
if (!(sanitised_page %in% names(dashboard@pages))) { if (!(sanitised_page %in% names(dashboard@pages))) {
warning(sprintf("i2dashboard does not contain a page named '%s'", sanitised_page)) warning(sprintf("i2dashboard does not contain a page named '%s'", sanitised_page))
...@@ -17,6 +17,8 @@ add_vis_object <- function(dashboard, object, package, page = "default", title = ...@@ -17,6 +17,8 @@ add_vis_object <- function(dashboard, object, package, page = "default", title =
return(dashboard) return(dashboard)
} }
if(is.null(package)) package <- "unknown package name"
# Create random component for RDS filename # Create random component for RDS filename
component_id <- paste0("obj_", stringi::stri_rand_strings(1, 6)) component_id <- paste0("obj_", stringi::stri_rand_strings(1, 6))
...@@ -29,7 +31,7 @@ add_vis_object <- function(dashboard, object, package, page = "default", title = ...@@ -29,7 +31,7 @@ add_vis_object <- function(dashboard, object, package, page = "default", title =
delim = c("<%", "%>"), delim = c("<%", "%>"),
title = title, title = title,
package = package, package = package,
class = class(object), class = is(object),
component_id = component_id, component_id = component_id,
timestamp = timestamp) timestamp = timestamp)
...@@ -42,61 +44,32 @@ add_vis_object <- function(dashboard, object, package, page = "default", title = ...@@ -42,61 +44,32 @@ add_vis_object <- function(dashboard, object, package, page = "default", title =
# Methods to add common visualization objects # Methods to add common visualization objects
# #
setMethod("add_component", setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "highchart"), signature = signature(dashboard = "i2dashboard", component = "gg"),
definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_object(dashboard, component, "highcharter", page, title, ...) })
setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "plotly"),
definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_object(dashboard, component, "plotly", page, title, ...) })
setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "leaflet"),
definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_object(dashboard, component, "leaflet", page, title, ...) })
setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "dygraphs"),
definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_object(dashboard, component, "dygraphs", page, title, ...) })
setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "rbokeh"),
definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_object(dashboard, component, "rbokeh", page, title, ...) })
setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "visNetwork"),
definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_object(dashboard, component, "visNetwork", page, title, ...) })
setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "d3heatmap"),
definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_object(dashboard, component, "d3heatmap", page, title, ...) })
setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "metricsgraphics"),
definition = function(dashboard, component, page = "default", title = NULL, ...) { definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_object(dashboard, component, "metricsgraphics", page, title, ...) }) add_vis_object(dashboard, component, "ggplot2", page, title, ...) })
setMethod("add_component", setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "gg"), signature = signature(dashboard = "i2dashboard", component = "gt_tbl"),
definition = function(dashboard, component, page = "default", title = NULL, ...) { definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_object(dashboard, component, "ggplot2", page, title, ...) }) add_vis_object(dashboard, component,"gt", page, title, ...) })
setMethod("add_component", setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "datatables"), signature = signature(dashboard = "i2dashboard", component = "knitr_kable"),
definition = function(dashboard, component, page = "default", title = NULL, ...) { definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_object(dashboard, component, "DT", page, title, ...) }) add_vis_object(dashboard, component, "kableExtra", page, title, ...) })
setMethod("add_component", setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "grViz"), signature = signature(dashboard = "i2dashboard", component = "Heatmap"),
definition = function(dashboard, component, page = "default", title = NULL, ...) { definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_object(dashboard, component, "DiagrammeR", page, title, ...) }) add_vis_object(dashboard, component, "ComplexHeatmap", page, title, ...) })
setMethod("add_component", setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "gt_tbl"), signature = signature(dashboard = "i2dashboard", component = "ANY"),
definition = function(dashboard, component, page = "default", title = NULL, ...) { definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_object(dashboard, component, "gt", page, title, ...) }) if(!inherits(component, "htmlwidget")) {
warning("The object has to inherit from the class 'htmlwidget'.")
return(dashboard)
}
package <- packageSlot(component)
add_vis_object(dashboard, component, package, page, title, ...)
})
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
```{r} ```{r}
if (!requireNamespace("<% package %>", quietly = TRUE)) { if (!requireNamespace("<% package %>", quietly = TRUE)) {
stop('The package <% package %> is needed to embed objects of class <% class %>.', call. = FALSE) stop('The package "<% package %>" is needed to embed objects of class "<% class %>".', call. = FALSE)
} }
vis_<% component_id %> <- readRDS(file.path(datadir, '<% component_id %>.rds')) vis_<% component_id %> <- readRDS(file.path(datadir, '<% component_id %>.rds'))
......
...@@ -4,7 +4,14 @@ ...@@ -4,7 +4,14 @@
\alias{add_vis_object} \alias{add_vis_object}
\title{General method to add an object as component to a page of an i2dashboard.} \title{General method to add an object as component to a page of an i2dashboard.}
\usage{ \usage{
add_vis_object(dashboard, object, package, page = "default", title = NULL, ...) add_vis_object(
dashboard,
object,
package = NULL,
page = "default",
title = NULL,
...
)
} }
\arguments{ \arguments{
\item{dashboard}{The \linkS4class{i2dash::i2dashboard}.} \item{dashboard}{The \linkS4class{i2dash::i2dashboard}.}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment