Reputation: 8464
I have the shiny app below with 3 different tabs, a sidebar and a right sidebar. I would like every time that I move to another tab the content of the two sidebars to change and display different widgets. In the commeted -out lines you can see the different widgets that I want to display.
library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(shiny)
shinyApp(
ui = tags$body(class="skin-blue sidebar-mini control-sidebar-open",dashboardPage(
options = list(sidebarExpandOnHover = TRUE),
header = dashboardHeader(title = "Investment Advisor Monitoring - Insider Trading",titleWidth = 450),
sidebar = dashboardSidebar(minified = F, collapsed = F,
h4("Investment Selected"),
textInput("StockTicker", "Enter Stock Symbol", value = "NFLX")
#textInput("StockTicker2", "Enter Stock Symbol 2", value = "NFLX")
#textInput("StockTicker3", "Enter Stock Symbol 3", value = "NFLX")
),
body = dashboardBody(
h3('Results'),
tabsetPanel(
tabPanel("Insider Training"),
tabPanel("Switching"),
tabPanel("Tax Loss Harvesting")
)
),
controlbar = dashboardControlbar(width = 300,
h4("Insider Trading Parameters"),
selectInput("InsiderTradingModel", "Insider Trading Model",
c("Dynamic" = "Dynamic",
"AI based" = "AIbased"))
#selectInput("InsiderTradingModel2", "Insider Trading Model 2",
# c("Dynamic" = "Dynamic",
# "AI based" = "AIbased"))
#selectInput("InsiderTradingModel3", "Insider Trading Model 3",
# c("Dynamic" = "Dynamic",
# "AI based" = "AIbased"))
),
title = "DashboardPage"
)),
server = function(input, output) {
}
)
Upvotes: 1
Views: 1590
Reputation: 33600
It does not make sense to use conditionalPanel
s nested in renderUI
(as shown by @YBS). You should use one or the other.
I'd suggest only using conditionalPanel
as it hides elements instead of re-rendering them, which is faster:
library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
shinyApp(
ui = tags$body(
class = "skin-blue sidebar-mini control-sidebar-open",
dashboardPage(
options = list(sidebarExpandOnHover = TRUE),
header = dashboardHeader(title = "Investment Advisor Monitoring - Insider Trading", titleWidth = 450),
sidebar = dashboardSidebar(
minified = F,
collapsed = F,
h4("Investment Selected"),
conditionalPanel(
condition = 'input.tabs=="InsiderTraining"',
textInput("StockTicker", "Enter Stock Symbol", value = "NFLX"),
sliderInput(
'periods',
'Periods',
min = 1,
max = 120,
value = 60
),
selectInput("mtvar", "Choose a variable", choices = colnames(mtcars))
),
conditionalPanel(
condition = 'input.tabs=="Switching"',
textInput("StockTicker2", "Enter Stock Symbol", value = "APPL"),
selectInput("cvar", "Choose a variable", choices = colnames(cars))
)
),
body = dashboardBody(
h3('Results'),
tabsetPanel(
id = "tabs",
tabPanel("InsiderTraining"),
tabPanel("Switching"),
tabPanel("Tax Loss Harvesting")
)
),
controlbar = dashboardControlbar(
width = 300,
h4("Insider Trading Parameters"),
conditionalPanel(
condition = 'input.tabs=="InsiderTraining"',
selectInput(
"InsiderTradingModel",
"Insider Trading Model",
c("Dynamic" = "Dynamic",
"AI based" = "AIbased")
),
selectInput("ivar", "Choose a variable", choices = colnames(iris))
),
conditionalPanel(
condition = 'input.tabs=="Switching"',
selectInput(
"InsiderTradingModel2",
"Insider Trading Model 2",
c("Dynamic" = "Dynamic",
"BI based" = "BIbased")
),
sliderInput(
'periodss',
'Periods',
min = 1,
max = 100,
value = 30
),
selectInput("pvar", "Choose a variable", choices = colnames(pressure))
)
),
title = "DashboardPage"
)
),
server = function(input, output, session) {}
)
Upvotes: 1
Reputation: 21359
Perhaps you are looking for something like this
library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
shinyApp(
ui = tags$body(class="skin-blue sidebar-mini control-sidebar-open",dashboardPage(
options = list(sidebarExpandOnHover = TRUE),
header = dashboardHeader(title = "Investment Advisor Monitoring - Insider Trading",titleWidth = 450),
sidebar = dashboardSidebar(minified = F, collapsed = F,
h4("Investment Selected"),
uiOutput("mytab11"), uiOutput("mytab12")
#textInput("StockTicker3", "Enter Stock Symbol 3", value = "AMZN")
),
body = dashboardBody(
h3('Results'),
tabsetPanel(id = "tabs",
tabPanel("InsiderTraining"),
tabPanel("Switching"),
tabPanel("Tax Loss Harvesting")
)
),
controlbar = dashboardControlbar(width = 300,
h4("Insider Trading Parameters"),
uiOutput("mytab21"), uiOutput("mytab22")
#selectInput("InsiderTradingModel3", "Insider Trading Model 3",
# c("Dynamic" = "Dynamic",
# "AI based" = "AIbased"))
),
title = "DashboardPage"
)),
server = function(input, output) {
output$mytab11 <- renderUI({
tagList(
conditionalPanel(condition = 'input.tabs=="InsiderTraining"',
textInput("StockTicker", "Enter Stock Symbol", value = "NFLX"),
sliderInput('periods','Periods',min=1,max=120,value=60),
selectInput("mtvar", "Choose a variable", choices = colnames(mtcars))
))
})
output$mytab12 <- renderUI({
tagList(
conditionalPanel(condition = 'input.tabs=="Switching"',
textInput("StockTicker2", "Enter Stock Symbol", value = "APPL"),
selectInput("cvar", "Choose a variable", choices = colnames(cars))
))
})
output$mytab21 <- renderUI({
tagList(
conditionalPanel(condition = 'input.tabs=="InsiderTraining"',
selectInput("InsiderTradingModel", "Insider Trading Model",
c("Dynamic" = "Dynamic",
"AI based" = "AIbased")),
#textInput("StockTicker", "Enter Stock Symbol", value = "NFLX"),
selectInput("ivar", "Choose a variable", choices = colnames(iris))
))
})
output$mytab22 <- renderUI({
tagList(
conditionalPanel(condition = 'input.tabs=="Switching"',
selectInput("InsiderTradingModel2", "Insider Trading Model 2",
c("Dynamic" = "Dynamic",
"BI based" = "BIbased")),
sliderInput('periodss','Periods',min=1,max=100,value=30),
selectInput("pvar", "Choose a variable", choices = colnames(pressure))
))
})
}
)
Upvotes: 1