在使用Introjs()时,是否可以在介绍步骤中添加部分UI(例如,renderDataTable的过滤器部分)?

示例: 我想让用户知道,他们可以使用表的Filter部分来过滤结果.因此,作为附加步骤,我想突出显示DataTable的筛选器部分,作为本教程的一个步骤.

library(shiny)
library(DT)
library(rintrojs)

ui <- fluidPage(
    introjsUI(),  # include introjs
    div(id = "intro", h3("Intro")),
    dataTableOutput("my_table")
)


server <- function(input, output, session) {
    output$my_table <- renderDataTable({
        datatable(iris, filter = 'top')
    })
    
    # Trigger introjs on app start
        introjs(session, options = list(steps = list(
            list(element = "#intro", intro = "Intro"),
            list(element = "#my_table", intro = "This is the table. Now zooming in on filters...")
        )))
}

shinyApp(ui, server)

推荐答案

您可以添加任何有效的CSS Select 器,因此您只需找到一种适当的方法来寻址包含筛选器元素的行.此外,由于数据表是动态呈现的,所以您不应该过早调用introjs,否则您try 以此为目标的元素还不存在.一个不错的 Select 是在第一次刷新系统时呼叫introjs,此时数据表已经填充.

将所有内容放在一起,以下代码片断实现了该功能:

# Trigger introjs on app start but not before the system is flushed
session$onFlushed(function() {
  introjs(session, options = list(steps = list(
    list(element = "#intro", intro = "Intro"),
    list(element = "#my_table", intro = "This is the table. Now zooming in on filters..."),
    ### :nth-of-type will select the second row (<tr>), that is where the filters are
    list(element = "tr:nth-of-type(2)", intro = "Here you can apply filters")
  )))
})

R相关问答推荐

R Lubridate:舍入/快照日期时间到一天中最近的任意时间?

如何自定义Shapviz图?

计算具有奇数日期的运行金额

条形图和在Ploly中悬停的问题

从外部文件读取多个值作为字符向量

如何删除最后一个可操作对象

如何删除仅在数据集顶部和底部包含零的行

如何在R中平滑地绘制线图(不拟合)?

TreeNode打印 twig 并为其上色

在多页PDF中以特定布局排列的绘图列表不起作用

在另一个包中设置断点&S R函数

将项粘贴到向量中,并将它们分组为x的倍数,用空格分隔

在R中,如何将误差条放置在堆叠的每个条上?

如何使用ggplot2根据绘图中生成的斜率对小平面进行排序?

如何将图例文本添加到图例符号中

如何将两个用不同的运算符替换*的矩阵相乘

从多行中 Select 最小值

列间序列生成器的功能

臭虫?GradeThis::grade_this_code()在`-code-check`块中失败

只有当我在循环的末尾放置一条print语句时,Foreach才会给出预期的输出