Home > Mobile >  Multiple Web application R shiny
Multiple Web application R shiny

Time:03-16

Assuming I have 2 action buttons as a starting page 'Client' & 'Employee' as shown below, and for each option, there is a different web application. enter image description here

when the user clicks the 'Client' button I need the following code to be run:

library(shiny)

ui <- 
navbarPage(
"The Client Web",
tabPanel("Section1 "),
tabPanel(" Section1 2")
)

server <- function(input, output,session){

}

shinyApp(ui = ui, server = server)

and when the user clicks the 'Employee' button I need the following code to be run:

 library(shiny)

 ui <- 
 navbarPage(
 "The Employee Web",
 tabPanel("Component 1"),
 tabPanel("Component 2"),
  tabPanel("Component 3")
  )

  server <- function(input, output,session){

  }

 shinyApp(ui = ui, server = server)

I need both of the web applications in one app depending on the type of the user either 'Client' or 'Employee'. Thank you in advance!

CodePudding user response:

I would do it using Javascript code to hide/show either of the pages.

You have to create your app with de buttons and both navbarpages.

library(shiny)

ui <- fluidPage(
  # Buttons
  actionButton('clientsBtn', 'Clients'),
  actionButton('employeeBtn', 'Employee'),
  
  # Employee pag
  div(
    class = 'employees-page',
    navbarPage(
      "The Employee Web",
      tabPanel("Component 1"),
      tabPanel("Component 2"),
      tabPanel("Component 3")
    )
  ),
  
  # Clients page
  div(
    class = 'clients-page',
    navbarPage(
      "The Client Web",
      tabPanel("Section1 "),
      tabPanel(" Section1 2")
    )
  ),

  # Javascript to control de page logic
includeScript('script.js')
)

server <- function(input, output,session){
  
  
}

shinyApp(ui = ui, server = server)

The script.js object is just a text file with that extension.

// hide by default the clients page
$('.clients-page').hide(); 

$('#clientsBtn').on('click', () => { 
  $('.employees-page').hide(); 
  $('.clients-page').show();
})

$('#employeeBtn').on('click', ()=>{ 
  $('.employees-page').show(); 
  $('.clients-page').hide(); 
})

enter image description here

  • Related