【发布时间】:2021-07-07 06:48:11
【问题描述】:
我正在寻找一种方法(包),它使我能够从一个表中“删除”一行在另一个表中的一行。我设想的服务器端功能是我可以创建一些更新目标表的逻辑。不幸的是,我没有成功地用我能找到的可用闪亮包的包进行原型设计。
下面代码中 MVP 概念的想法是将顶部表中的一个调用者分配(使用 drag 'n drop on)到第二个表中的一行。
我得出的结论如下:
library(shiny)
library(shinyjqui)
library(tidyverse)
ui <- fluidPage(
h1("UI functionality: Drop-on table"),
h3("Callers - (source)"),
tableOutput("callers"),
h3("Calls to be made - (destination)"),
tableOutput("calls_to_be_made"),
hr()
)
server <- function(input, output, session) {
callers <- tibble(
Caller = c("Jerry", "Donald")
)
calls_to_be_made <- tibble(
Name = c("John", "Fred", "Bill", "Freddy"),
PhoneNumber = c("0123 456 785", "0123 456 6453", "9876 532 432","235 63 430"),
Caller = c("Jerry",NA,NA,NA )
)
jqui_sortable(
ui = "#callers table",
options = list(items = "tbody tr", connectWith = "#calls_to_be_made table")
)
jqui_sortable(
ui = "#calls_to_be_made table",
options = list(items = "tbody tr")
)
output$callers <- renderTable(callers, rownames = T)
output$calls_to_be_made <- renderTable(calls_to_be_made, rownames = T)
}
shinyApp(ui, server)
我已经尝试了使用 shinyjqui 函数 jqui_draggable() 和 jqui_droppable() 的解决方案,但这些尝试没有成功,我觉得它们实际上与上面的代码草图相差甚远。
我正在寻找实现此功能的创意和建议。希望阅读这个问题的你们中的一些人会提出一些建议,以在闪亮中完成此功能。
【问题讨论】:
-
没有服务器端功能可以做到这一点。这将仅是客户端,例如使用 JavaScript 或 jQuery。我从来没有使用过闪亮的,所以我在猜测,但我怀疑它会根据需要添加标题和脚本详细信息,以便在服务器端脚本中进行拖放、排序或设置。您将需要查看生成的 HTML 以检查输出的编码。
-
@Twisty:你说得对,UI 交互将是客户端的,但它必须与 Shiny 的服务器端逻辑密切相关。
-
@Jochen 目前尚不清楚您是需要拖放还是仅可排序。你想来回移动项目还是只移动一种方式?这就是真正的区别。构建页面时,shiny 是否会抛出任何错误?
-
@Twisty:上面的代码可以很好地从第一个表(调用者)添加一行到第二个表(要进行的调用);闪亮的一面没有错误。它将它放在两者之间。我正在寻找特定行的“下降”。因此,将呼叫分配给特定的呼叫者。我想捕获呼叫者 Jerry 被指派给 Bill 打电话。
标签: r jquery-ui shiny shinyjs shinyjqui