【问题标题】:Onclick Hide/Unhide in ShinyOnclick Hide/Unhide in Shiny
【发布时间】:2017-08-10 05:02:45
【问题描述】:

下面是我的 Shiny 应用程序的屏幕截图,我创建了一个简单的 login 页面,仅将数据访问权限授予经过身份验证的用户。但是我有以下问题,

  1. 无法在应用程序启动时隐藏Mainpanel,这意味着 - 在应用程序启动时mainpanel 应为hidden,并且仅在按下Login 按钮后才应为visible
  2. mainpanel 之后是 visible sidebar,其中应该隐藏 UsernamePasswordLogin button

UI.R

library(shiny)
library(shinyjs)

shinyUI(fluidPage(
 useShinyjs(),
 titlePanel(
 fluidRow(  
column(9, h1("VHMS")),
column(1, img(src = '2.png', width = 100))), windowTitle = "my"),

br(),
br(),
br(),
br(),
sidebarLayout(

sidebarPanel(
             textInput("Username", "Username"),
             passwordInput("Password", "Password"),
             actionButton("Login", "Login")),position = "right",


mainPanel(

  fluidRow( column(12,

 (tabsetPanel("views", type = "tabs",
                 tabPanel("TableView", dataTableOutput("df_directions")),
                 tabPanel("MapView", dataTableOutput("df_locations"))
  )


  )
  )
  )         
  ) 
  )
  )
 )

Server.R

library(shiny)
library(shinyjs)
useShinyjs()
shinyServer(function(input, output) {
output$df_directions <-   renderDataTable({
json_data1 }, options = list(scrollX = TRUE))  
})

我能够单独解决我的问题,但我无法将我的 Hide/Show 登录名集成到单个脚本中。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    这是您的代码修改为隐藏主面板,直到用户单击“登录”。它仍然需要验证用户名和密码。

    library(shiny)
    library(shinyjs)
    
    ui <- shinyUI(fluidPage(
      useShinyjs(),
      titlePanel(
        fluidRow(  
          column(9, h1("VHMS")),
          column(1, img(src = '2.png', width = 100))
        ), 
        windowTitle = "my"
      ),
      br(),
      br(),
      br(),
      br(),
      sidebarLayout(
        sidebarPanel( id = "loginID",
                 textInput("Username", "Username"),
                 passwordInput("Password", "Password"),
                 actionButton("Login", "Login")
        ),
        position = "right",
        shinyjs::hidden(
          mainPanel( id = "panelID",
            fluidRow( 
              column(12,
                tabsetPanel("views", type = "tabs",
                           tabPanel("TableView", dataTableOutput("df_directions")),
                           tabPanel("MapView", dataTableOutput("df_locations"))
                )
              )
            )         
          ) 
        )
      )
    ))
    
    server <- shinyServer(function(input, output) {
      output$df_directions <- renderDataTable(
        mtcars, 
        options = list(scrollX = TRUE)
      )  
    
      observeEvent(input$Login, {
        # TODO: verify username and password
        shinyjs::hide("loginID")
        shinyjs::show("panelID")
      })
    })
    
    shinyApp(ui = ui, server = server)
    

    【讨论】:

    • 工作,非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 2016-06-25
    • 1970-01-01
    • 2015-07-28
    • 2023-03-24
    相关资源
    最近更新 更多