2017-08-10 214 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