mwModule: Add a manipulateWidget to a shiny application

Description Usage Arguments Value Examples

View source: R/module_ui.R

Description

These two functions can be used to include a manipulateWidget object in a shiny application. mwModuleUI must be used in the UI to generate the required HTML elements and add javascript and css dependencies. mwModule must be called once in the server function of the application.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
mwModule(id, controller, fillPage = FALSE, ...)

mwModuleUI(
  id,
  border = TRUE,
  okBtn = FALSE,
  saveBtn = TRUE,
  exportBtn = TRUE,
  updateBtn = FALSE,
  allowCompare = TRUE,
  margin = 0,
  width = "100%",
  height = 400,
  header = NULL,
  footer = NULL
)

Arguments

id

A unique string that identifies the module

controller

Object of class MWController returned by manipulateWidget when parameter .runApp is FALSE.

fillPage

: logical. Render in a fillPage or not ? Defaut to FALSE

...

named arguments containing reactive values. They can be used to send data from the main shiny application to the module.

border

Should a border be added to the module ?

okBtn

Should the UI contain the OK button ?

saveBtn

Should the UI contain the save button ? For saving output as html

exportBtn

Should an export button be added to the controls ? For saving output as png

updateBtn

Should the updateBtn be added to the UI ?

allowCompare

If TRUE (the default), then the user can use the UI to add or remove charts and choose which variables to compare

margin

Margin to apply around the module UI. Should be one two or four valid css units.

width

Width of the module UI.

height

Height of the module UI.

header

Tag or list of tags to display as a common header above all tabPanels.

footer

Tag or list of tags to display as a common footer below all tabPanels

Value

mwModuleUI returns the required HTML elements for the module. mwModule is only used for its side effects.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
if (interactive() & require("dygraphs")) {
  require("shiny")
  ui <- fillPage(
  fillRow(
    flex = c(NA, 1),
    div(
      textInput("title", label = "Title", value = "glop"),
      selectInput("series", "series", choices = c("series1", "series2", "series3"))
    ),
    mwModuleUI("ui", height = "100%")
  ))

  server <- function(input, output, session) {
    mydata <- data.frame(
      year = 2000+1:100,
      series1 = rnorm(100),
      series2 = rnorm(100),
      series3 = rnorm(100)
    )

    c <- manipulateWidget(
      {
        dygraph(mydata[range[1]:range[2] - 2000, c("year", series)], main = title)
      },
      range = mwSlider(2001, 2100, c(2001, 2050)),
      series = mwSharedValue(),
      title = mwSharedValue(), .runApp = FALSE,
      .compare = "range"
    )
    #
    mwModule("ui", c, title = reactive(input$title), series = reactive(input$series))
  }

  shinyApp(ui, server)


}

manipulateWidget documentation built on Oct. 5, 2021, 9:10 a.m.