在 R shiny 中关闭特定的 modalDialog
Close a specific modalDialog in R shiny
我的应用程序中有一个场景与下面虚拟应用程序中的情况相匹配。
我真正的应用程序所做的是在来自 dropdownButton
的 dropdownmenu
中显示 checkboxes
用于数据框中可用的每一列,供用户从模型中选择 运行 .
我要构建的是 modalDialog
,即 hover
上的 triggered
,它显示了用户悬停在该列中的数据图。
目前,我已经完成了所有这些工作,但还剩下一个问题:
如果用户使用 histogram
关闭 modal
,下拉按钮的 dialog window
也会消失。如何只使 plot
dialog
变为 close
,同时保持所有 checkboxes
打开?
这是一个有问题的虚拟应用程序:
library(shiny)
library(shinyjs)
shinyApp(
ui = fluidPage(
useShinyjs(),
dropdownButton(label = "CLICK",
h5("This is the dropdownbutton window" ),
checkboxInput("Checker", "Hover for modal dialog"),
icon = icon("tasks"),
inputId = "MYDDMbut",
circle = T,
status = "info",
tooltip = tooltipOptions(title = "Click to open window"), width = "400px")
),
server = function(input, output, session) {
output$distPlot <- renderPlot({
hist(mtcars$disp)
})
onevent('mouseover','Checker',{
delay(1000,
showModal(div(id="ModalDiv", modalDialog(
inputId = "distPlot",
title = HTML('<span style="color:#339fff; font-size: 20px; font-weight:bold; font-family:sans-serif ">Current data column<span>
<button type = "button" class="close" data-dismiss="modal" ">
<span style="color:#339fff; ">x <span>
</button> '),
br(),
plotOutput("distPlot"),
br(),
easyClose = TRUE,
footer = NULL ))))
print("2")}, T)
}
)
我删除了模态框上的关闭十字,并在页脚上添加了一个确定按钮,并在上面放了一个 observeEvent
。
library(shiny)
library(shinyjs)
library(shinyWidgets)
shinyApp(
ui = fluidPage(
useShinyjs(),
dropdownButton(label = "CLICK",
h5("This is the dropdownbutton window" ),
checkboxInput("Checker", "Hover for modal dialog"),
icon = icon("tasks"),
inputId = "MYDDMbut",
circle = T,
status = "info",
tooltip = tooltipOptions(title = "Click to open window"), width = "400px")
),
server = function(input, output, session) {
output$distPlot <- renderPlot({
hist(mtcars$disp)
})
onevent('mouseover','Checker',{
showModal(div(id="ModalDiv", modalDialog(
inputId = "distPlot",
title = HTML('<span style="color:#339fff; font-size: 20px; font-weight:bold; font-family:sans-serif ">Current data column<span>'),
br(),
plotOutput("distPlot"),
footer = tagList(actionButton("close", "OK")) )))
print("2")}, T)
observeEvent(input$close, {
removeModal()
toggleDropdownButton(inputId = "MYDDMbut")
})
}
)
我的应用程序中有一个场景与下面虚拟应用程序中的情况相匹配。
我真正的应用程序所做的是在来自 dropdownButton
的 dropdownmenu
中显示 checkboxes
用于数据框中可用的每一列,供用户从模型中选择 运行 .
我要构建的是 modalDialog
,即 hover
上的 triggered
,它显示了用户悬停在该列中的数据图。
目前,我已经完成了所有这些工作,但还剩下一个问题:
如果用户使用 histogram
关闭 modal
,下拉按钮的 dialog window
也会消失。如何只使 plot
dialog
变为 close
,同时保持所有 checkboxes
打开?
这是一个有问题的虚拟应用程序:
library(shiny)
library(shinyjs)
shinyApp(
ui = fluidPage(
useShinyjs(),
dropdownButton(label = "CLICK",
h5("This is the dropdownbutton window" ),
checkboxInput("Checker", "Hover for modal dialog"),
icon = icon("tasks"),
inputId = "MYDDMbut",
circle = T,
status = "info",
tooltip = tooltipOptions(title = "Click to open window"), width = "400px")
),
server = function(input, output, session) {
output$distPlot <- renderPlot({
hist(mtcars$disp)
})
onevent('mouseover','Checker',{
delay(1000,
showModal(div(id="ModalDiv", modalDialog(
inputId = "distPlot",
title = HTML('<span style="color:#339fff; font-size: 20px; font-weight:bold; font-family:sans-serif ">Current data column<span>
<button type = "button" class="close" data-dismiss="modal" ">
<span style="color:#339fff; ">x <span>
</button> '),
br(),
plotOutput("distPlot"),
br(),
easyClose = TRUE,
footer = NULL ))))
print("2")}, T)
}
)
我删除了模态框上的关闭十字,并在页脚上添加了一个确定按钮,并在上面放了一个 observeEvent
。
library(shiny)
library(shinyjs)
library(shinyWidgets)
shinyApp(
ui = fluidPage(
useShinyjs(),
dropdownButton(label = "CLICK",
h5("This is the dropdownbutton window" ),
checkboxInput("Checker", "Hover for modal dialog"),
icon = icon("tasks"),
inputId = "MYDDMbut",
circle = T,
status = "info",
tooltip = tooltipOptions(title = "Click to open window"), width = "400px")
),
server = function(input, output, session) {
output$distPlot <- renderPlot({
hist(mtcars$disp)
})
onevent('mouseover','Checker',{
showModal(div(id="ModalDiv", modalDialog(
inputId = "distPlot",
title = HTML('<span style="color:#339fff; font-size: 20px; font-weight:bold; font-family:sans-serif ">Current data column<span>'),
br(),
plotOutput("distPlot"),
footer = tagList(actionButton("close", "OK")) )))
print("2")}, T)
observeEvent(input$close, {
removeModal()
toggleDropdownButton(inputId = "MYDDMbut")
})
}
)