Я пытаюсь настроить очень простой блок для пользователей, где они не смогут получить доступ к вкладке из tabPanel
, если они не введут пароль. Я использую shinyalerts
для этого, и до сих пор он отлично работает в качестве специальной системы паролей.
Но когда я пытаюсь настроить его так, чтобы он наблюдал событие выбора panel_2
в моем коде, он просто всплывает в начале приложения. Он реагирует, когда я нажимаю panel_2
, но как мне заставить его перестать появляться, как только я открываю приложение, и только когда input$tab == "panel_2"
истинно?
Я вижу, как observe
печатать идентификатор панели в server
, поэтому я знаю, что он существует.
ПРИМЕЧАНИЕ. Я использую версию GitHub-репо освещение
library(shiny)
library(shinyalert)
library(shinydashboardPlus)
#password accept function
password_accept = function(x){
if(x =='1234'){
shinyalert('Welcome Administrator')
} else {
shinyalert("TRY AGAIN",
"Enter Password for Admin Access to this Page"
,type = "input"
,inputType = "password"
,time = 0
#,inputValue = "Enter Password"
,callbackR = password_accept
)
}
}
#example of problem
ui = fluidPage(#useShinyalert(),
navbarPage("Sample",
id = 'tabs',
tabPanel("panel1", useShinydashboardPlus(),
fluidRow(column(9,offset = 1,
h3(htmlOutput("sample app")))
),
column(4,offset = 5,
boxPlus(solidHeader = T, collapsible = F, collapsed = F, closable = F, title = '', status = 'success',
uiOutput('fn'),br(),
uiOutput('ln'),br()
))
),
tabPanel("panel2",useShinyalert(), # add shiny alert to act as pwd signin
column(6,
fluidRow(
))
)))
server = (function(input, output,session) {
#print the tab being accessed
observe({print(input$tabs)})
#admin pop up
observeEvent(input$tabs=='panel2',
{
shinyalert("",
"Enter Password for Admin Access to this Page"
,type = "input"
,inputType = "password"
,time = 0
#,inputValue = "Enter Password"
,callbackR = password_accept
)
}
)
output$fn = renderUI({
textInput(inputId = "first_name", label = "First Name")
})
output$ln = renderUI({
textInput(inputId = "last_name", label = "Last Name")
})
})
shinyApp(ui,server)