2017-08-10 162 views
1

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

  1. 无法隐藏应用程序的开始Mainpanel,含义 - 在mainpanel应该hidden上的应用程序的开始,应该是visibleLogin按钮按下之后。
  2. mainpanelvisiblesidebar其中UsernamePasswordLogin button应该被隐藏。

    enter image description here

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登录集成到一个单一的脚本。

回答

2

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

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) 
+0

工作,非常感谢 – Tareva