Есть ли способ, с помощью которого я могу отключить/включить щелчок на боковой панели панели мониторинга, чтобы пользователь не мог перейти к другому виду в блестящем?.
Я наткнулся на это решение " отключить/включить боковую панель со стороны сервера ", но все, что он делает, это свернуть/развернуть боковую панель.
Но я ищу какое-то решение, с помощью которого я могу включить/отключить клик на нем, чтобы иметь больше контроля над тем, когда разрешить доступ пользователям к другому виду.
Один из вариантов использования: если я хочу, чтобы пользователь сначала заполнил все входы на первой странице, прежде чем он сможет перейти к другому разделу.
Вы можете сделать это, используя пакет shinyjs
вместе с некоторыми пользовательскими css
. Вот минимальный пример:
library(shinydashboard)
library(shinyjs)
ui <- dashboardPage(
dashboardHeader(title = "Basic dashboard"),
dashboardSidebar(
useShinyjs(),
sidebarMenu(id = "sidebar",
tags$head(tags$style(".inactiveLink {
pointer-events: none;
cursor: default;
}")),
menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
menuItem("Widgets", tabName = "widgets", icon = icon("th"))
)
),
dashboardBody(
tabItems(
# First tab content
tabItem(tabName = "dashboard",
actionButton("Disable", "Disable Widgets"),
actionButton("Enable", "Enable Widgets")
),
# Second tab content
tabItem(tabName = "widgets",
h2("Widgets tab content")
)
)
)
)
server <- function(input, output){
observeEvent(input$Disable, {
addCssClass(selector = "a[data-value='widgets']", class = "inactiveLink")
})
observeEvent(input$Enable, {
removeCssClass(selector = "a[data-value='widgets']", class = "inactiveLink")
})
}
shinyApp(ui, server)
Нажав кнопку "Включить (Включить виджеты)" и "Отключить (отключить виджеты)", вы можете включать и отключать виджеты menuitem.
РЕДАКТИРОВАТЬ:
Чтобы убедиться, что при загрузке приложения menuItems
отключены, вы можете просто добавить функцию addCssClass
на свой сервер, чтобы ваш файл выполнялся при загрузке вашего приложения.
Таким образом, код будет выглядеть примерно так:
library(shinydashboard)
library(shinyjs)
ui <- dashboardPage(
dashboardHeader(title = "Basic dashboard"),
dashboardSidebar(
useShinyjs(),
sidebarMenu(id = "sidebar",
tags$head(tags$style(".inactiveLink {
pointer-events: none;
cursor: default;
}")),
menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
menuItem("Widgets", tabName = "widgets", icon = icon("th"))
)
),
dashboardBody(
tabItems(
# First tab content
tabItem(tabName = "dashboard",
actionButton("Disable", "Disable Widgets"),
actionButton("Enable", "Enable Widgets")
),
# Second tab content
tabItem(tabName = "widgets",
h2("Widgets tab content")
)
)
)
)
server <- function(input, output){
#Disable menuitem when the app loads
addCssClass(selector = "a[data-value='widgets']", class = "inactiveLink")
observeEvent(input$Disable, {
addCssClass(selector = "a[data-value='widgets']", class = "inactiveLink")
})
observeEvent(input$Enable, {
removeCssClass(selector = "a[data-value='widgets']", class = "inactiveLink")
})
}
shinyApp(ui, server)
Надеюсь, поможет!
.inactiveLink
отсутствует, но даже тогда я все еще могу перейти в раздел «Виджеты». Как я могу убедиться, что когда приложения загружаются в первый раз, пользователь не может перейти к другим разделам?