Skip to content
Snippets Groups Projects
Verified Commit 8d39ad0f authored by jens.preussner's avatar jens.preussner :ghost:
Browse files

Moved sidebar template; Fixed bug in vis_object

parent 1c4695be
Branches
No related tags found
No related merge requests found
Pipeline #109677 passed
......@@ -80,7 +80,7 @@ setMethod("assemble", "i2dashboard", function(dashboard, pages = names(dashboard
#' @return A markdown string with the final page.
.render_page <- function(title, components, layout = c("default", "storyboard", "focal_left", "2x2_grid"), menu = NULL, sidebar = NULL) {
if(!is.null(sidebar)) {
sidebar <- knitr::knit_expand(file = system.file("templates", "sidebar_template.Rmd", package = "i2dash"),
sidebar <- knitr::knit_expand(file = system.file("templates", "local_sidebar", package = "i2dash"),
delim = c("<%", "%>"),
content = sidebar, datawidth = 250)
}
......
#' General method to add an dashboard as components of a page of an i2dashboard.
#' General method to add an object as component to a page of an i2dashboard.
#'
#' @param report The \linkS4class{i2dash::i2dashboard}.
#' @param dashboard The R visualization dashboard to be addedd.
#' @param package The name of the R package that defines the class(dashboard).
#' @param page The name of the page to add the dashboard to.
#' @param dashboard The \linkS4class{i2dash::i2dashboard}.
#' @param object The R visualization object to be addedd.
#' @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 title An optional component title.
add_vis_dashboard <- function(report, dashboard, package, page = "default", title = NULL, ...){
add_vis_object <- function(dashboard, object, package, page = "default", title = NULL, ...){
sanitised_page <- i2dash:::.create_page_name(page)
if (!(sanitised_page %in% names(report@pages))) {
warning(sprintf("i2dashboard dashboard does not contain a page named '%s'", sanitised_page))
return(report)
if (!(sanitised_page %in% names(dashboard@pages))) {
warning(sprintf("i2dashboard does not contain a page named '%s'", sanitised_page))
return(dashboard)
}
if(length(report@pages[[sanitised_page]]$components) + 1 > report@pages[[sanitised_page]]$max_components) {
if(length(dashboard@pages[[sanitised_page]]$components) + 1 > dashboard@pages[[sanitised_page]]$max_components) {
warning(sprintf("Not enough space left on page '%s'", sanitised_page))
return(report)
return(dashboard)
}
# Create random component for RDS filename
component_id <- paste0("obj_", stringi::stri_rand_strings(1, 6))
# Save plot as RDS
saveRDS(dashboard, file = file.path(report@datadir, paste0(component_id, ".rds")))
saveRDS(object, file = file.path(dashboard@datadir, paste0(component_id, ".rds")))
# Expand template
timestamp <- Sys.time()
expanded_component <- knitr::knit_expand(file = system.file("templates", "vis_dashboard.Rmd", package = "i2dash"),
expanded_component <- knitr::knit_expand(file = system.file("templates", "vis_object.Rmd", package = "i2dash"),
delim = c("<%", "%>"),
title = title,
package = package,
class = class(dashboard),
class = class(object),
component_id = component_id,
timestamp = timestamp)
# Add component to page
report@pages[[sanitised_page]]$components <- append(report@pages[[sanitised_page]]$components, expanded_component)
return(report)
dashboard@pages[[sanitised_page]]$components <- append(dashboard@pages[[sanitised_page]]$components, expanded_component)
return(dashboard)
}
#
......@@ -44,59 +44,59 @@ add_vis_dashboard <- function(report, dashboard, package, page = "default", titl
setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "highchart"),
definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_dashboard(dashboard, component, "highcharter", page, title, ...) })
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_dashboard(dashboard, component, "plotly", page, title, ...) })
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_dashboard(dashboard, component, "leaflet", page, title, ...) })
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_dashboard(dashboard, component, "dygraphs", page, title, ...) })
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_dashboard(dashboard, component, "rbokeh", page, title, ...) })
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_dashboard(dashboard, component, "visNetwork", page, title, ...) })
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_dashboard(dashboard, component, "d3heatmap", page, title, ...) })
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, ...) {
add_vis_dashboard(dashboard, component, "metricsgraphics", page, title, ...) })
add_vis_object(dashboard, component, "metricsgraphics", page, title, ...) })
setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "gg"),
definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_dashboard(dashboard, component, "ggplot2", page, title, ...) })
add_vis_object(dashboard, component, "ggplot2", page, title, ...) })
setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "datatables"),
definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_dashboard(dashboard, component, "DT", page, title, ...) })
add_vis_object(dashboard, component, "DT", page, title, ...) })
setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "grViz"),
definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_dashboard(dashboard, component, "diagrammeR", page, title, ...) })
add_vis_object(dashboard, component, "diagrammeR", page, title, ...) })
setMethod("add_component",
signature = signature(dashboard = "i2dashboard", component = "gt_tbl"),
definition = function(dashboard, component, page = "default", title = NULL, ...) {
add_vis_dashboard(dashboard, component, "gt", page, title, ...) })
add_vis_object(dashboard, component, "gt", page, title, ...) })
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/vis_objects.R
\name{add_vis_object}
\alias{add_vis_object}
\title{General method to add an object as component to a page of an i2dashboard.}
\usage{
add_vis_object(dashboard, object, package, page = "default",
title = NULL, ...)
}
\arguments{
\item{dashboard}{The \linkS4class{i2dash::i2dashboard}.}
\item{object}{The R visualization object to be addedd.}
\item{package}{The name of the R package that defines the class(object).}
\item{page}{The name of the page to add the object to.}
\item{title}{An optional component title.}
}
\description{
General method to add an object as component to a page of an i2dashboard.
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment