我有一个闪亮的仪表板应用程序,包含3个选项卡和一个通知菜单。我试图跟踪仪表板上的用户活动,并希望在仪表板上记录他们的每个点击。Shinyjs:闪亮仪表板上的点击选项
的标签集面板server.R的代码如下:
output$tabs1=renderUI(
tabsetPanel(type="tab",
tabPanel(id="OverallTab","Overall Activity"),
tabPanel(id="Tab1","Tab 1 details"),
tabPanel(id="Tab2","Tab 2 details"))
我的通知代码部分如下:
output$notiMenu <- renderMenu({
all_nots <- apply(u_notd, 1, function(row) {
notificationItem(text = row[["notification"]], icon("users"))
})
dropdownMenu(type = "notifications", .list = all_nots)
})
我试图用shinyjs写一个数据框,如果用户点击任一标签或通知菜单如下:
tab1_clicled=""
tab2_clicked=""
noti_clicked=""
shinyjs::onclick("notiMenu",print("Notification clicked"),noti_clicked="YES")
shinyjs::onclick("Tab1",print("Tab1 clicked"),tab1_clicled="YES")
shinyjs::onclick("Tab2", print("Tab2 clicked"),tab2_clicled="YES")
df=as.data.frame(tab1_clicked,tab2_clicked,noti_clicked)
我面临2个问题
1)使用shinyjs参考(here),单击选项似乎不能用于选项卡面板,我发现只提及在点击时使用tabset面板而不使用每个标签面板?
2)我无法修改onclick函数中tab1_clicked的值。它会抛出一个错误:观察者未处理的错误:未使用的参数(tab1_clicled =“YES”)
感谢任何帮助。
感谢@daattali,它修复了跟踪用户点击通知时的问题,但仍然让我无法追踪用户是否点击了某个标签。我知道你提到要做到这一点的一种方法是编写一行像输入$ Tabs1的行,但我不知道该如何处理该条件的RHS。徒劳无功我尝试如果(输入$ tabs1 == TRUE),然后tab1_clicked =“YES”。但显然这是行不通的。任何建议?感谢帮助。 – mongofresher
我不认为我理解你在做什么,或者你不明白我的答案是什么?如果您希望在选中选项卡时发生某些情况,则不需要使用'onclick',只需监听由tabset输入触发的反应事件。如果你有一个navbarPage,例如ID为“navbar”的navbarPage,并且你有两个带有“tab1”和“tab2”标签的标签,那么你可以使用一个'observe({print(input $ navbar)})'来打印打开tab1时出现“tab1”,打开tab2时出现“tab2”。试验一下。 –
这正是我所需要的。再次感谢。 @daattali你是一个很好的帮助 – mongofresher