Mar*_*ark 4 r colors click button shiny
我试图想办法让一个actionButton来改变颜色(也可能是其他样式元素.)目标是非常通用的,我将在复杂的shineDashboard应用程序中使用它来进行许多按钮响应.简单地说:如果单击一个按钮,或者一个特定元素(即inputlider)发生了与按钮相关联的更改,该按钮应该会改变颜色.
我通常在Shiny中编码我的按钮,如下所示:
actionButton(inputId= "RunFullModel", label =icon("tree-deciduous", lib = "glyphicon"),
style = "color: white;
background-color: #35e51d;
position: relative;
left: 3%;
height: 35px;
width: 35px;
text-align:center;
text-indent: -2px;
border-radius: 6px;
border-width: 2px")),
Run Code Online (Sandbox Code Playgroud)
我一直在浏览我的屁股,但没有运气的东西有效.我一直在看@Dean Attali的shinyjs来做这件事,但我只能让它改变印刷文本的背景,如下例所示.使用ToggleClass或AddClass的部分似乎不适用于actionButton("x","y").我也尝试使用闪亮包本身的updateActionButton,但这似乎不允许将style ="..."包含在命令中.
library(shiny)
library(shinyjs)
library(shinyBs)
if (interactive()) {
shinyApp(
ui = fluidPage(
useShinyjs(),
inlineCSS(list(.red = "background: red")),
inlineCSS(list(.blue = "style = 'background-color: blue'")),
actionButton("checkbox", "Make it red"),
bsButton("checkbox2", "Make me blue"),
p(id = "element", "Watch what happens to me")
),
server = function(input, output) {
observe({
toggleClass(id = "element", class = "red",
condition = input$checkbox)
})
observe({
toggleCssClass(id = "checkbox2", class = ".blue",
condition = input$checkbox)
})
}
)
}
Run Code Online (Sandbox Code Playgroud)
有关shinyjs的演示模型可以在这里找到:http://deanattali.com/shinyjs/overview#demo ,看起来好像toggleClass在那里为id为"btn"的按钮工作,但没有直接找到的代码示例,而来自shinyjs页面的另一部分的间接示例似乎不起作用.
选项3我试图让style ="background-color:....读取R变量"部分访问一个包含颜色名称的R变量,即mycolor < - "red",但这也不起作用,我对javascript的了解太有限,无法弄清楚如何使这项工作成功.
所以,....如果有人知道如何使用shinyjs进行颜色切换,或者使用上面编码的按钮的其他方法,我会非常感激,并且给予我永恒的感激之情.(此问题已经持续数周了)
标记
ps我也研究了bsButtons,但它们对于我想要的默认类选项来说太有限了.
这应该是"纯"闪亮的:renderUI()用于创建按钮并插入条件以检查按钮是否已被点击.
我决定将一个信息(点击按钮是否被点击)存储在reactiveVariable中,因为你写的是你计划触发颜色变化"如果单击一个按钮,或者一个特定元素(即inputlider)变化链接到一个按钮" .所以你也可以改变global$clicked其他输入.
library(shiny)
shinyApp(
ui = fluidPage(
uiOutput("button")
),
server = function(input, output) {
global <- reactiveValues(clicked = FALSE)
observe({
if(length(input$RunFullModel)){
if(input$RunFullModel) global$clicked <- TRUE
}
})
output$button <- renderUI({
if(!is.null(input$RunFullModel) & global$clicked){
actionButton(inputId= "RunFullModel", label =icon("tree-deciduous", lib = "glyphicon"),
style = "color: white;
background-color: #35e51d;
position: relative;
left: 3%;
height: 35px;
width: 35px;
text-align:center;
text-indent: -2px;
border-radius: 6px;
border-width: 2px")
}else{
actionButton(inputId= "RunFullModel", label =icon("tree-deciduous", lib = "glyphicon"))
}
})
}
)
Run Code Online (Sandbox Code Playgroud)