#r #shiny #dashboard #shinydashboard
#r #блестящий #Информационная панель #shinydashboard
Вопрос:
Я создаю приложение Shiny, и последние два дня меня блокируют на следующем шаге: я поместил кнопку «Отправить» в форму ввода, и, по-видимому, проблем нет, но каждый раз, когда я запускаю приложение, я не могу нажать на нее, потому что в самом начале оно показывает мне сигнал «посторонним вход воспрещен», запрещающий мне ничего больше не делать.
Вот код, который я использую:
# Packages ----
if(require("pacman")=="FALSE"){
install.packages("pacman")
}
library(pacman)
pacman::p_load(dplyr, tidyr, shiny, shinydashboard)
# Global scope ----
dish <- c("Salad", "Spaghetti Carbonara", "Scrambled eggs")
allergens <- c("sesame", "lactose", "eggs")
keywords <- c("veggie", "pasta", "none")
dishes <- data.frame(dish, allergens, keywords)
# Function to label mandatory fields ----
labelMandatory <- function(label) {
tagList(
label,
span("*", class = "mandatory_star")
)
}
appCSS <- ".mandatory_star { color: red; }" #to make the asterisk red
MandatoryFields_dishes <- c(names(dishes[,-3]))
fields_dishes <- c(names(dishes))
ui <- dashboardPage(
dashboardHeader(title = "sample"),
dashboardSidebar(
sidebarMenu(
menuItem("Dishes", tabName = "dishes")
)
),
dashboardBody(
# Dishes
tabItems(
tabItem(tabName = "dishes",
tabsetPanel(
tabPanel("Typeform",
fluidPage(
shinyjs::useShinyjs(),
shinyjs::inlineCSS(appCSS),
titlePanel("Dish introduction"),
div(
id="form",
textInput("dish", labelMandatory("Dishes"), ""),
textInput("allergens", label = "Allergens",""),
textInput("keyword", label = "Keyword", ""),
actionButton("submit", "Submit", class="btn-primary")
)
))
))
))
)
server <- function(input, output) {
observe({
mandatoryFilled_dishes <-
vapply(MandatoryFields_dishes,
function(x) {
!is.null(input[[x]]) amp;amp; input[[x]] != ""
},
logical(1))
mandatoryFilled_dishes <- all(mandatoryFilled_dishes)
shinyjs::toggleState(id = "submit", condition = mandatoryFilled_dishes)
})
}
shinyApp(ui, server)
Думаю, я чего-то не хватает на сервере. Если кто-нибудь сможет мне помочь, я буду очень благодарен, заранее большое спасибо.
Комментарии:
1. мне кажется, что все в порядке, у вас есть 2 обязательных поля, в
MandatoryFields_dishes
которых естьdish
иallergens
, тогда они должны быть активными, чтобы нажать кнопку, все работает так, как должно. Я не понимаю вашего вопроса2. Проблема, с которой я сталкиваюсь, заключается в том, что после запуска приложения, когда я наношу указатель на кнопку, становится сигналом о запрете проникновения, даже если обязательные поля заполнены.