Skip to content

Genentech/battery

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

190 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Battery R package Logo

R6Class based component architecture framework for Shiny apps

The components design is based on AngularJS that can emit event from root it it's children and broadcast events from child to parents. It give better structure of non trivial shiny apps, that need to have lots of different parts.

Installation

git clone https://github.com/Genentech/battery.git
R CMD INSTALL battery

Basic usage

Button <- battery::component(
  classname = "Button",
  label = NULL,
  constructor = function(label = NULL) {
    self$label = label
  },
  render = function() {
    shiny::tags$button(self$label)
  }
)

App <- battery::component(
  classname = "App",
  public = list(
    constructor = function() {
      btn <- Button$new(label = "Click me", parent = self, component.name = "button")
      self$output[[ self$ns("root") ]] <- shiny::renderUI({
        shiny::tags$div(
          shiny::tags$p("click the button"),
          btn$render()
        )
      })
    },
    render = function() {
      tags$div(
        titlePanel('Shiny App using Battery R package'),
        mainPanel(shiny::uiOutput(self$ns("root")))
      )
    }
  )
)

Documentation

For full documentation see Battery Components Vignette.

You can also read tutorial about the framework features at DEV.to:
Architecture for Non-Trivial R Shiny Applications

Contributors

License

Copyright (c) 2019-2021 Genentech, Inc.
Released under MIT license

About

Architecture framework for Shiny Apps

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages