Skip to contents

Creates a report slide and populates the content in placeholders and arbitrary locations.

Usage

report_add_slide(
  obnd,
  template = NULL,
  elements = NULL,
  user_location = NULL,
  verbose = TRUE
)

Arguments

obnd

onbrand report object

template

Name of slide template to use (name from templates in yaml mapping file)

elements

Content and type for each placeholder you wish to fill for this slide: This is a list with names set to placeholders for the specified template. Each placeholder is a list and should have a content element and a type element (see Details below).

user_location

List with arbitrary element names (see Details below)

verbose

Boolean variable when set to TRUE (default) messages will be displayed on the terminal; Messages will be included in the returned onbrand object.

Value

onbrand report object with either the content added or isgood set to FALSE with any messages in the msgs field. The isgood value is a Boolean variable indicating the current state of the object.

Details

To add content based on placeholder names consider the mapping information for the slide template title_slide with the two place holders title and subtitle.

rpptx:
 master: Office Theme
 templates:
   title_slide:
     title:
       type:         ctrTitle
       index:        1
       ph_label:     Title 1
       content_type: text
     subtitle:
       type:         subTitle
       index:        1
       ph_label:     Subtitle 2
       content_type: text

This shows how to populate a title slide with text:

obnd = report_add_slide(obnd,
 template = "title_slide",
 elements = list(
    title     = list( content      = "Slide Title",
                      type         = "text"),
    subtitle  = list( content      = "Subtitle",
                      type         = "text")))

To add content based on user defined locations you need to supply a list with the content, type, starting point and stopping point. You can use any template you wish, and you need to populate the user_location input. This consists of lists. The name of these lists can be arbitrary (text_example and fig_example below). Each list has a content and type, this is the same used in elements above. The start and stop each represent x and y coordinates. This is the fraction of the width and height of the slide measured from the upper left. So the start = c(0.5, 0) below means the box holding that content would start at the middle of the slide width and the top of the slide.

 #'obnd = report_add_slide(obnd,
 template = "two_content_header_text",
 user_location = list(
    text_example  = list( content      = "This is text",
                          type         = "text",
                          start        = c(.01,.02),
                          stop         = c(.3,.15)),
    fig_example   = list( content      = ggplot2::ggplot(),
                          type         = "ggplot",
                          start        = c(.5,0),
                          stop         = c(1,.5))
 )
)

See the function add_pptx_ph_content for a list of allowed values for type. Note that if mapping defines the content_type as text, you cannot use a list type. Similarly, if the content_type is defined as list, you cannot use a text type.

Examples

obnd = read_template(
      template = file.path(system.file(package="onbrand"), "templates", "report.pptx"),
      mapping  = file.path(system.file(package="onbrand"), "templates", "report.yaml"))

# Adding content based on placeholder elements
obnd = report_add_slide(obnd,
 template = "content_text",
 elements = list(
    title         = list( content      = "Text Example",
                          type         = "text"),
    sub_title     = list( content      = "Adding a slide with a block of text",
                          type         = "text"),
    content_body  = list( content      = "A block of text",
                          type         = "text")))

# Adding content based on specified locations
obnd = report_add_slide(obnd,
 template = "two_content_header_text",
 user_location = list(
    text_example  = list( content      = "This is text",
                          type         = "text",
                          start        = c(.01,.02),
                          stop         = c(.3,.15))))