Как изменить атрибут кнопки без аннулирования - PullRequest
0 голосов
/ 09 ноября 2019

Я хочу изменить цвет кнопки в R / Shiny, не отменяя его. В частности, я хочу, чтобы кнопка была красной, если параметры для выполнения изменились, но выполняются только при нажатии кнопки.

Я выделил параметры в реактиве и реагирую только на изменение кнопки:

# react on button pressed (unfortunately also if color is changed
input$Button
# don't react on parameters changes
paramet <- isolate(input$parameter)

В наблюдателе я проверяю параметры и меняю цвет:

if (!modified) {
      # cat(file = stderr(), "\n\ntsne not modified\n\n\n")
      actionButton(name, "apply changes", width = '80%', 
                   style = "color: #fff; background-color: #00b300; border-color: #2e6da4")
    } else {
      # cat(file = stderr(), "\n\ntsne modified\n\n\n")
      actionButton(name, "apply changes", width = '80%', 
                   style = "color: #fff; background-color: #cc0000; border-color: #2e6da4")
    }

Но как-то это вызывает кнопку.

Единственное, о чем я могу думать, - это создание нового реактива, который меняется только при нажатии кнопки. Т.е. в моем наблюдателе я бы изменил реактивное значение, если значение кнопки будет увеличено, то есть мне придется сохранить старое значение в переменной, специфичной для проекта. Я надеялся, что для этого будет более простой способ.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 12 ноября 2019

, используя блестящие с addClass(ButtonName, cssElement), removeClass(ButtonName, cssElement), [cssElement = 'red' |'green'] и в пользовательском интерфейсе:

shinydashboard::dashboardBody(
      shinyjs::useShinyjs(debug = TRUE),
      inlineCSS(list(.red = "background: red")),
      inlineCSS(list(.green = "background: green")),
...

На самом деле я использовал actionButton, а не updateActionButton, который повторно инициализировал actionButton, вызывая некоторые нежелательные побочные эффекты, а updateActionButton не позволяет изменятьцвет.

...