From e70f0d8b943511cf6480342690c6a7cd15641e1d Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 10 May 2024 20:41:35 +0530 Subject: [PATCH 01/12] adding skeleton and table. --- vignettes/teal-reporter-blocks-overview.Rmd | 72 +++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 vignettes/teal-reporter-blocks-overview.Rmd diff --git a/vignettes/teal-reporter-blocks-overview.Rmd b/vignettes/teal-reporter-blocks-overview.Rmd new file mode 100644 index 00000000..99c71eaf --- /dev/null +++ b/vignettes/teal-reporter-blocks-overview.Rmd @@ -0,0 +1,72 @@ +--- +title: "Comprehensive Overview of Content Blocks in `teal.reporter`" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{Comprehensive Overview of Content Blocks in teal.reporter} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +## Overview of Content Blocks +This document provides a comprehensive overview of all content blocks available in the teal.reporter package. + +## Table: Content Blocks in `teal.reporter` + +| **Block Type** | **Description** | **Usage Example** | + |----------------|----------------|-------------------| + | **`TextBlock`** | Adds text-based content to the report. | ```r\ntext_block <- TextBlock$new(title = "Introduction", content = "This is the introduction to our report.")\n``` | + | **`PictureBlock`** | Contains graphical content like plots or diagrams. | ```r\npicture_block <- PictureBlock$new(title = "Histogram", file_path = "path/to/histogram.png")\n``` | + | **`RcodeBlock`** | Embeds R code directly into the report. | ```r\nrcode_block <- RcodeBlock$new(title = "MPG vs HP Plot", r_code = "plot(mtcars$mpg, mtcars$hp, main = 'MPG vs HP')")\n``` | + | **`NewpageBlock`** | Marks a new page in the report for organization purposes. | ```r\nnew_page <- NewpageBlock$new()\n``` | + | **`TableBlock`** | Holds and displays tabular data. | ```r\ntable_block <- TableBlock$new(title = "MTCars Data", data = head(mtcars))\n``` | + | **`ReportCard`** | Combines various content blocks into a single card. | ```r\nreport_card <- ReportCard$new()\nreport_card$append_blocks(list(text_block, picture_block, rcode_block, table_block))\n``` | + + +## Interaction of Global and Local Echo Options +###Global echo Option +-- Controls whether R code is included globally in the report. +-- Set using options(): + +```{r} +options(teal.reporter.echo = TRUE) +``` +Default: FALSE +###Local echo Option in append_rcode and append_src +-- Controls inclusion of R code at a local level. +append_rcode +```{r} +library(teal.reporter) +report_card <- ReportCard$new() +report_card$append_rcode("plot(mtcars$mpg, mtcars$hp)", echo = TRUE) +``` + +## Full Example Report +Here's a full example of a report combining all these content blocks: + +```{r} + +# Set global echo option +options(teal.reporter.echo = TRUE) + +# Create individual content blocks +# text_block <- teal.reporter:::TextBlock$new() +# picture_block <- teal.reporter:::PictureBlock$new() +# rcode_block <- teal.reporter:::RcodeBlock$new(r_code = "plot(mtcars$mpg, mtcars$hp, main = 'MPG vs HP')") +# new_page <- teal.reporter:::NewpageBlock$new() +# table_block <- teal.reporter:::TableBlock$new(data = head(mtcars)) +# +# # Create a report card and add blocks +# report_card <- ReportCard$new() +# report_card$append_blocks(list(text_block, picture_block, rcode_block, new_page, table_block)) +# +# # Append specific R code with local echo setting +# report_card$append_rcode(title = "Summary of MPG", r_code = "summary(mtcars$mpg)", echo = TRUE) +# +# # Preview the report card +# report_card$preview() +# +# # Add the report card to a report and preview +# report <- Reporter$new() +# report$add_card(report_card) +# report$preview() +``` From 7d66098ae1e20b0ae29b6460a2984db97f783fda Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 15:14:18 +0000 Subject: [PATCH 02/12] [skip style] [skip vbump] Restyle files --- vignettes/teal-reporter-blocks-overview.Rmd | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/vignettes/teal-reporter-blocks-overview.Rmd b/vignettes/teal-reporter-blocks-overview.Rmd index 99c71eaf..f0f78df7 100644 --- a/vignettes/teal-reporter-blocks-overview.Rmd +++ b/vignettes/teal-reporter-blocks-overview.Rmd @@ -44,7 +44,6 @@ report_card$append_rcode("plot(mtcars$mpg, mtcars$hp)", echo = TRUE) Here's a full example of a report combining all these content blocks: ```{r} - # Set global echo option options(teal.reporter.echo = TRUE) @@ -54,17 +53,17 @@ options(teal.reporter.echo = TRUE) # rcode_block <- teal.reporter:::RcodeBlock$new(r_code = "plot(mtcars$mpg, mtcars$hp, main = 'MPG vs HP')") # new_page <- teal.reporter:::NewpageBlock$new() # table_block <- teal.reporter:::TableBlock$new(data = head(mtcars)) -# +# # # Create a report card and add blocks # report_card <- ReportCard$new() # report_card$append_blocks(list(text_block, picture_block, rcode_block, new_page, table_block)) -# +# # # Append specific R code with local echo setting # report_card$append_rcode(title = "Summary of MPG", r_code = "summary(mtcars$mpg)", echo = TRUE) -# +# # # Preview the report card # report_card$preview() -# +# # # Add the report card to a report and preview # report <- Reporter$new() # report$add_card(report_card) From c44478c7802a6adae13c9af47fe311495209b87b Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 14 May 2024 15:38:19 +0530 Subject: [PATCH 03/12] updating vignettes and adding image --- vignettes/images/blocks.png | Bin 0 -> 57875 bytes vignettes/teal-reporter-blocks-overview.Rmd | 85 +++++++++----------- 2 files changed, 40 insertions(+), 45 deletions(-) create mode 100644 vignettes/images/blocks.png diff --git a/vignettes/images/blocks.png b/vignettes/images/blocks.png new file mode 100644 index 0000000000000000000000000000000000000000..b48baf91cb8367ecae188a4c1f03ba10466a2ac2 GIT binary patch literal 57875 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ΜloZ7OWJthc5H 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 ngKZ?fhLelaOJ+zgorZ --- ## Overview of Content Blocks -This document provides a comprehensive overview of all content blocks available in the teal.reporter package. +This document serves as a comprehensive guide to the various types of content blocks available in the `teal.reporter`. +These blocks allow users to structure and customize reports. ## Table: Content Blocks in `teal.reporter` +The following table outlines the different blocks that can be included in a `ReportCard`, +along with descriptions and usage examples: | **Block Type** | **Description** | **Usage Example** | |----------------|----------------|-------------------| - | **`TextBlock`** | Adds text-based content to the report. | ```r\ntext_block <- TextBlock$new(title = "Introduction", content = "This is the introduction to our report.")\n``` | - | **`PictureBlock`** | Contains graphical content like plots or diagrams. | ```r\npicture_block <- PictureBlock$new(title = "Histogram", file_path = "path/to/histogram.png")\n``` | - | **`RcodeBlock`** | Embeds R code directly into the report. | ```r\nrcode_block <- RcodeBlock$new(title = "MPG vs HP Plot", r_code = "plot(mtcars$mpg, mtcars$hp, main = 'MPG vs HP')")\n``` | - | **`NewpageBlock`** | Marks a new page in the report for organization purposes. | ```r\nnew_page <- NewpageBlock$new()\n``` | - | **`TableBlock`** | Holds and displays tabular data. | ```r\ntable_block <- TableBlock$new(title = "MTCars Data", data = head(mtcars))\n``` | - | **`ReportCard`** | Combines various content blocks into a single card. | ```r\nreport_card <- ReportCard$new()\nreport_card$append_blocks(list(text_block, picture_block, rcode_block, table_block))\n``` | + | **`ReportCard`** | Combines various content blocks into a single card. | `report_card <- ReportCard$new()` | + | **`TextBlock`** | Adds text-based content to the report. | `report_card$append_text()` | + | **`PictureBlock`** | Contains graphical content like plots or diagrams. | `report_card$append_plot()` | + | **`RcodeBlock`** | Embeds R code directly into the report. | `report_card$append_rcode(, echo = FALSE)` | + | **`NewpageBlock`** | Marks a new page in the report for organization purposes. | `report_card$append_content()` | + | **`TableBlock`** | Holds and displays tabular data. | `report_card$append_table()` | + + These blocks form the building blocks of a `ReportCard`, each serving a specific function that contributes to the overall layout and content of the report. The `ReportCard` object utilizes `append_*` methods to integrate various blocks such as `TextBlock`, `PictureBlock`, `RcodeBlock`, and `TableBlock`. +The following diagram illustrates the inheritance relationship between the different blocks: +```{r echo=FALSE, out.width='60%'} +knitr::include_graphics("./images/blocks.png") +``` -## Interaction of Global and Local Echo Options -###Global echo Option --- Controls whether R code is included globally in the report. --- Set using options(): +## Global `knitr` Options +To ensure consistency and control over the rendering of markdown elements within reports, teal.reporter adheres to the following default global knitr options: -```{r} -options(teal.reporter.echo = TRUE) -``` -Default: FALSE -###Local echo Option in append_rcode and append_src --- Controls inclusion of R code at a local level. -append_rcode +To access the default values for the `global_knitr` defaults include: +* echo: displays the code along with its output (`echo = TRUE`). +* tidy: formats the `R` code for readability using the `formatR` package if installed (`tidy = TRUE`), otherwise set to `FALSE`. +* width cutoff: sets the maximum number of characters per line in the code output (`tidy.opts = list(width.cutoff = 60)`). + +You can access and modify these settings as follows: ```{r} library(teal.reporter) -report_card <- ReportCard$new() -report_card$append_rcode("plot(mtcars$mpg, mtcars$hp)", echo = TRUE) +getOption('teal.reporter.global_knitr') ``` -## Full Example Report -Here's a full example of a report combining all these content blocks: +## Example Report Using Multiple Content Blocks +Below is a complete example demonstrating how to create a report combining various content blocks: ```{r} -# Set global echo option -options(teal.reporter.echo = TRUE) +library(ggplot2) + +report_card <- ReportCard$new() + +report_card$append_text("Header 2 text", "header2") +report_card$append_text("A paragraph of default text") +report_card$append_plot( + ggplot(airquality, aes(x = Ozone, y = Solar.R)) + geom_line(na.rm = T) +) +report_card$append_table(airquality) +report_card$append_rcode("airquality_new <- airquality", echo = FALSE) +report_card$append_metadata(key = "lm", value = lm(Ozone ~ Solar.R, airquality)) +report_card$get_content() -# Create individual content blocks -# text_block <- teal.reporter:::TextBlock$new() -# picture_block <- teal.reporter:::PictureBlock$new() -# rcode_block <- teal.reporter:::RcodeBlock$new(r_code = "plot(mtcars$mpg, mtcars$hp, main = 'MPG vs HP')") -# new_page <- teal.reporter:::NewpageBlock$new() -# table_block <- teal.reporter:::TableBlock$new(data = head(mtcars)) -# -# # Create a report card and add blocks -# report_card <- ReportCard$new() -# report_card$append_blocks(list(text_block, picture_block, rcode_block, new_page, table_block)) -# -# # Append specific R code with local echo setting -# report_card$append_rcode(title = "Summary of MPG", r_code = "summary(mtcars$mpg)", echo = TRUE) -# -# # Preview the report card -# report_card$preview() -# -# # Add the report card to a report and preview -# report <- Reporter$new() -# report$add_card(report_card) -# report$preview() ``` From 82715e12286c903b213686e44b23d19fbe161141 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 14 May 2024 10:17:08 +0000 Subject: [PATCH 04/12] [skip style] [skip vbump] Restyle files --- vignettes/teal-reporter-blocks-overview.Rmd | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/vignettes/teal-reporter-blocks-overview.Rmd b/vignettes/teal-reporter-blocks-overview.Rmd index 697171c8..3015aa91 100644 --- a/vignettes/teal-reporter-blocks-overview.Rmd +++ b/vignettes/teal-reporter-blocks-overview.Rmd @@ -42,14 +42,13 @@ To access the default values for the `global_knitr` defaults include: You can access and modify these settings as follows: ```{r} library(teal.reporter) -getOption('teal.reporter.global_knitr') +getOption("teal.reporter.global_knitr") ``` ## Example Report Using Multiple Content Blocks Below is a complete example demonstrating how to create a report combining various content blocks: ```{r} - library(ggplot2) report_card <- ReportCard$new() @@ -57,11 +56,11 @@ report_card <- ReportCard$new() report_card$append_text("Header 2 text", "header2") report_card$append_text("A paragraph of default text") report_card$append_plot( - ggplot(airquality, aes(x = Ozone, y = Solar.R)) + geom_line(na.rm = T) + ggplot(airquality, aes(x = Ozone, y = Solar.R)) + + geom_line(na.rm = T) ) report_card$append_table(airquality) report_card$append_rcode("airquality_new <- airquality", echo = FALSE) report_card$append_metadata(key = "lm", value = lm(Ozone ~ Solar.R, airquality)) report_card$get_content() - ``` From 910a24b9a3ba30c07b1dcdde012e8468708ae259 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 14 May 2024 15:49:00 +0530 Subject: [PATCH 05/12] fixing lintr, styler and run document() --- R/LoadReporterModule.R | 1 - R/SimpleReporter.R | 6 ++---- vignettes/teal-reporter-blocks-overview.Rmd | 2 +- vignettes/teal-reporter.Rmd | 2 +- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/R/LoadReporterModule.R b/R/LoadReporterModule.R index 2e8a1ff7..7043275d 100644 --- a/R/LoadReporterModule.R +++ b/R/LoadReporterModule.R @@ -132,7 +132,6 @@ load_json_report <- function(reporter, zip_path, filename) { ) } ) - } else { shiny::showNotification("Failed to load the Reporter file.", type = "error") } diff --git a/R/SimpleReporter.R b/R/SimpleReporter.R index c912da38..561b4a8d 100644 --- a/R/SimpleReporter.R +++ b/R/SimpleReporter.R @@ -37,8 +37,7 @@ NULL #' @rdname simple_reporter #' @export simple_reporter_ui <- function( - id -) { + id) { ns <- shiny::NS(id) shiny::tagList( shiny::singleton( @@ -73,8 +72,7 @@ simple_reporter_srv <- function( author = "NEST", title = "Report", date = as.character(Sys.Date()), output = "html_document", toc = FALSE - ) -) { + )) { shiny::moduleServer( id, function(input, output, session) { diff --git a/vignettes/teal-reporter-blocks-overview.Rmd b/vignettes/teal-reporter-blocks-overview.Rmd index 3015aa91..5bb03408 100644 --- a/vignettes/teal-reporter-blocks-overview.Rmd +++ b/vignettes/teal-reporter-blocks-overview.Rmd @@ -57,7 +57,7 @@ report_card$append_text("Header 2 text", "header2") report_card$append_text("A paragraph of default text") report_card$append_plot( ggplot(airquality, aes(x = Ozone, y = Solar.R)) + - geom_line(na.rm = T) + geom_line(na.rm = TRUE) ) report_card$append_table(airquality) report_card$append_rcode("airquality_new <- airquality", echo = FALSE) diff --git a/vignettes/teal-reporter.Rmd b/vignettes/teal-reporter.Rmd index 16901953..043c68e2 100644 --- a/vignettes/teal-reporter.Rmd +++ b/vignettes/teal-reporter.Rmd @@ -9,7 +9,7 @@ vignette: > ## Introduction While engaging with data analysis within a `shiny` app, -users often encounter insights that they wish to capture and share, be it through presentations, `markdown` articles, or other formats. +users often encounter insights that they wish to capture and share, be it through's presentations, `markdown` articles, or other formats. The `teal.reporter` package simplifies the process for both developers and end-users of `shiny` applications. It allows for easy generation and dissemination of findings. This eliminates the need for manual copy-pasting or writing in markdown. From b4bbb0ad30503f834e3b651df563d5cc9baf1c46 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 14 May 2024 16:01:45 +0530 Subject: [PATCH 06/12] fixing spelling issue. --- vignettes/teal-reporter-blocks-overview.Rmd | 2 +- vignettes/teal-reporter.Rmd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/vignettes/teal-reporter-blocks-overview.Rmd b/vignettes/teal-reporter-blocks-overview.Rmd index 5bb03408..731fcdb5 100644 --- a/vignettes/teal-reporter-blocks-overview.Rmd +++ b/vignettes/teal-reporter-blocks-overview.Rmd @@ -32,7 +32,7 @@ knitr::include_graphics("./images/blocks.png") ``` ## Global `knitr` Options -To ensure consistency and control over the rendering of markdown elements within reports, teal.reporter adheres to the following default global knitr options: +To ensure consistency and control over the rendering of markdown elements within reports, teal.reporter adheres to the following default global `knitr` options: To access the default values for the `global_knitr` defaults include: * echo: displays the code along with its output (`echo = TRUE`). diff --git a/vignettes/teal-reporter.Rmd b/vignettes/teal-reporter.Rmd index 043c68e2..16901953 100644 --- a/vignettes/teal-reporter.Rmd +++ b/vignettes/teal-reporter.Rmd @@ -9,7 +9,7 @@ vignette: > ## Introduction While engaging with data analysis within a `shiny` app, -users often encounter insights that they wish to capture and share, be it through's presentations, `markdown` articles, or other formats. +users often encounter insights that they wish to capture and share, be it through presentations, `markdown` articles, or other formats. The `teal.reporter` package simplifies the process for both developers and end-users of `shiny` applications. It allows for easy generation and dissemination of findings. This eliminates the need for manual copy-pasting or writing in markdown. From 60fd1b1033fc247fef5d4d6809cb7693aaf13000 Mon Sep 17 00:00:00 2001 From: Kartikeya Kirar Date: Wed, 15 May 2024 14:55:01 +0530 Subject: [PATCH 07/12] @gogonzo suggestions. --- R/SimpleReporter.R | 3 +-- vignettes/teal-reporter-blocks-overview.Rmd | 6 ++++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/R/SimpleReporter.R b/R/SimpleReporter.R index 561b4a8d..3aef137c 100644 --- a/R/SimpleReporter.R +++ b/R/SimpleReporter.R @@ -36,8 +36,7 @@ NULL #' @rdname simple_reporter #' @export -simple_reporter_ui <- function( - id) { +simple_reporter_ui <- function(id) { ns <- shiny::NS(id) shiny::tagList( shiny::singleton( diff --git a/vignettes/teal-reporter-blocks-overview.Rmd b/vignettes/teal-reporter-blocks-overview.Rmd index 731fcdb5..d0d65f5a 100644 --- a/vignettes/teal-reporter-blocks-overview.Rmd +++ b/vignettes/teal-reporter-blocks-overview.Rmd @@ -18,11 +18,13 @@ along with descriptions and usage examples: | **Block Type** | **Description** | **Usage Example** | |----------------|----------------|-------------------| | **`ReportCard`** | Combines various content blocks into a single card. | `report_card <- ReportCard$new()` | + | **`ContentBlock`** | Base class for content blocks, can include any type of content. | `report_card$append_content()` | | **`TextBlock`** | Adds text-based content to the report. | `report_card$append_text()` | - | **`PictureBlock`** | Contains graphical content like plots or diagrams. | `report_card$append_plot()` | | **`RcodeBlock`** | Embeds R code directly into the report. | `report_card$append_rcode(, echo = FALSE)` | - | **`NewpageBlock`** | Marks a new page in the report for organization purposes. | `report_card$append_content()` | + | **`NewpageBlock`** | Marks a new page in the report for organization purposes. | `report_card$append_content()` | + | **`FileBlock`** | Manages file-based content, ensuring proper file handling. | `report_card$append_content()` | | **`TableBlock`** | Holds and displays tabular data. | `report_card$append_table(
)` | + | **`PictureBlock`** | Contains graphical content from classes like `ggplot`, `grob`, `trellis`, and `Heatmap`. | `report_card$append_plot()` | These blocks form the building blocks of a `ReportCard`, each serving a specific function that contributes to the overall layout and content of the report. The `ReportCard` object utilizes `append_*` methods to integrate various blocks such as `TextBlock`, `PictureBlock`, `RcodeBlock`, and `TableBlock`. From c96100772b36be2ebb938f4dd1fd7e2e898221b1 Mon Sep 17 00:00:00 2001 From: Kartikeya Kirar Date: Wed, 15 May 2024 17:02:15 +0530 Subject: [PATCH 08/12] @pawelru suggestions --- vignettes/_setup.Rmd | 10 ++++ vignettes/images/blocks.png | Bin 57875 -> 0 bytes vignettes/teal-reporter-blocks-overview.Rmd | 56 +++++++++++++++++++- 3 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 vignettes/_setup.Rmd delete mode 100644 vignettes/images/blocks.png diff --git a/vignettes/_setup.Rmd b/vignettes/_setup.Rmd new file mode 100644 index 00000000..745980fa --- /dev/null +++ b/vignettes/_setup.Rmd @@ -0,0 +1,10 @@ + +```{css, echo=FALSE} +pre.mermaid { + background: transparent; +} +``` + +```{r, echo=FALSE} +shiny::tags$script(type = "module", "import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/+esm'") +``` diff --git a/vignettes/images/blocks.png b/vignettes/images/blocks.png deleted file mode 100644 index b48baf91cb8367ecae188a4c1f03ba10466a2ac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57875 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ΜloZ7OWJthc5H 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 ngKZ?fhLelaOJ+zgorZ Date: Wed, 15 May 2024 11:34:22 +0000 Subject: [PATCH 09/12] [skip style] [skip vbump] Restyle files --- vignettes/teal-reporter-blocks-overview.Rmd | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/vignettes/teal-reporter-blocks-overview.Rmd b/vignettes/teal-reporter-blocks-overview.Rmd index c68277f0..ae5c0a2b 100644 --- a/vignettes/teal-reporter-blocks-overview.Rmd +++ b/vignettes/teal-reporter-blocks-overview.Rmd @@ -45,7 +45,7 @@ classDiagram +append_rcode() +append_metadata() } - + ReportCard <.. FileBlock: utilizes ReportCard <.. ContentBlock: utilizes ReportCard <.. TextBlock: utilizes @@ -53,15 +53,15 @@ classDiagram ReportCard <.. RcodeBlock: utilizes ReportCard <.. PictureBlock: utilizes ReportCard <.. TableBlock: utilizes - + ContentBlock <|-- TextBlock ContentBlock <|-- NewpageBlock ContentBlock <|-- RcodeBlock ContentBlock <|-- FileBlock FileBlock <|-- PictureBlock FileBlock <|-- TableBlock - - + + namespace Blocks { class ContentBlock class FileBlock @@ -71,7 +71,7 @@ classDiagram class PictureBlock class TableBlock } - + style ContentBlock fill:lightpurple style FileBlock fill: lightgreen style TextBlock fill: pink From 4fabae8fe0a88eb377158bd58862ad504a5734ec Mon Sep 17 00:00:00 2001 From: Kartikeya Kirar Date: Wed, 15 May 2024 17:05:13 +0530 Subject: [PATCH 10/12] fixing styling. --- vignettes/teal-reporter-blocks-overview.Rmd | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/vignettes/teal-reporter-blocks-overview.Rmd b/vignettes/teal-reporter-blocks-overview.Rmd index c68277f0..ae5c0a2b 100644 --- a/vignettes/teal-reporter-blocks-overview.Rmd +++ b/vignettes/teal-reporter-blocks-overview.Rmd @@ -45,7 +45,7 @@ classDiagram +append_rcode() +append_metadata() } - + ReportCard <.. FileBlock: utilizes ReportCard <.. ContentBlock: utilizes ReportCard <.. TextBlock: utilizes @@ -53,15 +53,15 @@ classDiagram ReportCard <.. RcodeBlock: utilizes ReportCard <.. PictureBlock: utilizes ReportCard <.. TableBlock: utilizes - + ContentBlock <|-- TextBlock ContentBlock <|-- NewpageBlock ContentBlock <|-- RcodeBlock ContentBlock <|-- FileBlock FileBlock <|-- PictureBlock FileBlock <|-- TableBlock - - + + namespace Blocks { class ContentBlock class FileBlock @@ -71,7 +71,7 @@ classDiagram class PictureBlock class TableBlock } - + style ContentBlock fill:lightpurple style FileBlock fill: lightgreen style TextBlock fill: pink From d70eefe8976abb78d0ef76a14ba3637e8dd5efcf Mon Sep 17 00:00:00 2001 From: Kartikeya Kirar Date: Tue, 21 May 2024 18:25:20 +0530 Subject: [PATCH 11/12] renaming the title --- vignettes/teal-reporter-blocks-overview.Rmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vignettes/teal-reporter-blocks-overview.Rmd b/vignettes/teal-reporter-blocks-overview.Rmd index ae5c0a2b..16722187 100644 --- a/vignettes/teal-reporter-blocks-overview.Rmd +++ b/vignettes/teal-reporter-blocks-overview.Rmd @@ -1,8 +1,8 @@ --- -title: "Comprehensive Overview of Content Blocks in `teal.reporter`" +title: "teal.reporter blocks overview" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{Comprehensive Overview of Content Blocks in teal.reporter} + %\VignetteIndexEntry{teal.reporter blocks overview} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- From 26b13decbaf14d78939355353a8ae49e816866ca Mon Sep 17 00:00:00 2001 From: Kartikeya Kirar Date: Wed, 22 May 2024 14:13:58 +0530 Subject: [PATCH 12/12] adding `teal_reporter-blocks-overview` in ReportCard --- R/ReportCard.R | 3 +++ man/ReportCard.Rd | 3 +++ 2 files changed, 6 insertions(+) diff --git a/R/ReportCard.R b/R/ReportCard.R index b8f08a21..8e2417fd 100644 --- a/R/ReportCard.R +++ b/R/ReportCard.R @@ -6,6 +6,9 @@ #' This `R6` class that supports creating a report card containing text, plot, table and #' metadata blocks that can be appended and rendered to form a report output from a `shiny` app. #' +#' For more information about the various blocks, refer to the vignette: +#' `vignette("teal-reporter-blocks-overview", "teal.reporter")`. +#' #' @export #' ReportCard <- R6::R6Class( # nolint: object_name_linter. diff --git a/man/ReportCard.Rd b/man/ReportCard.Rd index cb179953..6e58e565 100644 --- a/man/ReportCard.Rd +++ b/man/ReportCard.Rd @@ -9,6 +9,9 @@ This \code{R6} class that supports creating a report card containing text, plot, table and metadata blocks that can be appended and rendered to form a report output from a \code{shiny} app. + +For more information about the various blocks, refer to the vignette: +\code{vignette("teal-reporter-blocks-overview", "teal.reporter")}. } \examples{