gpt4 book ai didi

r - 导航列表面板 : Make tabs sequentially active in shiny app

转载 作者:行者123 更新时间:2023-12-04 02:15:07 25 4
gpt4 key购买 nike

我正在尝试编写一个 Shiny 的应用程序,其中的选项卡按顺序处于事件状态。例如,
用户只有在完成第一个选项卡上的任务后才能移动到第二个选项卡。在这种情况下,第一个选项卡将添加一个绿色复选标记(例如),第二个选项卡将变为事件状态。 (对于下一个选项卡也是如此。)

例如,以下是 ui.R 和 server.R 文件:

shinyUI(fluidPage(  
titlePanel("New Project"),
navlistPanel(selected="Data Upload",
tabPanel("Data Upload",
textInput("aInSummary", label = h5("Please type a"),
value = "Enter value...")
),
tabPanel("Data Check",
textInput("bInDataCheck", label = h5("Please type b"),
value = "Enter value...")
),
tabPanel("Dry Run",
textInput("cInDryRun", label = h5("Please type c"),
value = "Enter value...")
),
tabPanel("Output"),
"-----",
tabPanel("Help-FAQ")
)
))


shinyServer(function(input, output,server) {
})

我知道我应该在“navlistPanel”和“tabPanel”中添加“id”,但我不确定应该在 server.R 文件中包含的逻辑,因为我看不到用户将如何修改这样的 id。

我已经搜索了 Shiny 的 google 组、这里的线程,并阅读了条件面板……但这并不是我真正想要的。
非常感谢任何帮助/教程或阅读建议!

最佳答案

这是一个例子。页面加载时,除了第一个导航链接之外的所有链接都被禁用。我在每个部分都添加了“完成”按钮。当您按下“完成”按钮时,下一个导航链接将启用。

 ui <- fluidPage(  
tags$head(tags$script("
window.onload = function() {
$('#mynavlist a:contains(\"Data Check\")').parent().addClass('disabled');
$('#mynavlist a:contains(\"Dry Run\")').parent().addClass('disabled');
$('#mynavlist a:contains(\"Output\")').parent().addClass('disabled');
};

Shiny.addCustomMessageHandler('activeNavs', function(nav_label) {
$('#mynavlist a:contains(\"' + nav_label + '\")').parent().removeClass('disabled');
});
")),
titlePanel("New Project"),
navlistPanel(selected="Data Upload", id='mynavlist',
tabPanel("Data Upload",
textInput("aInSummary", label = h5("Please type a"),
value = "Enter value..."),
br(),
actionButton('data_upload_done', 'Done')
),
tabPanel("Data Check",
textInput("bInDataCheck", label = h5("Please type b"),
value = "Enter value..."),
br(),
actionButton('data_check_done', 'Done')
),
tabPanel("Dry Run",
textInput("cInDryRun", label = h5("Please type c"),
value = "Enter value..."),
br(),
actionButton('dry_run_done', 'Done')
),
tabPanel("Output"),
"-----",
tabPanel("Help-FAQ")
)
)


server <- function(input, output,session) {

observe({
if (input$data_upload_done > 0) {
session$sendCustomMessage('activeNavs', 'Data Check')
}
})

observe({
if (input$data_check_done > 0) {
session$sendCustomMessage('activeNavs', 'Dry Run')
}
})

observe({
if (input$dry_run_done > 0) {
session$sendCustomMessage('activeNavs', 'Output')
}
})
}

runApp(list(ui=ui, server=server))

关于r - 导航列表面板 : Make tabs sequentially active in shiny app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25455154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com