Можно ли в flexdashboard щелкнуть valueBox, чтобы обновить текстовое поле, например actionButton?

Я пытаюсь использовать valueBox в flexdashboard, чтобы отобразить фигуру заголовка. Однако я также хочу, чтобы valueBox действовал как actionButton, в том смысле, что нажатие valueBox должно запускать действие в другом месте панели управления.

При проверке документации flexdashboard я вижу следующий соответствующий бит для valueBox:

Поле связанного значения

valueBox(42, icon = "fa-pencil", href="#details")

при этом нажатие valueBox переместит пользователя на другую страницу с привязкой «#details». Однако ничто не указывает на то, что нажатие valueBox может использоваться для других действий.

Ниже приведен минимальный соответствующий код flexdashboard.

---
title: "valueBox Links"
output: 
  flexdashboard::flex_dashboard:
runtime: shiny
---

```{r setup, include=FALSE}
library(flexdashboard)

    ```

Tab 1 - Test
======================================================================

Column 
-------------------------------------

#### Three valueBoxes

### valueBox 1
```{r}
valueBox(1)
    ```

### valueBox 2
```{r}
valueBox(2)
    ```

### valueBox 3
```{r}
valueBox(3)
    ```

Column
-------------------------------------

### Text output
This is where I want some text to show up dynamically, depending on if the user has clicked valueBox 1, 2, or 3.  

Любая помощь будет оценена :)


person Naj S    schedule 27.06.2019    source источник
comment
Этот вопрос может быть полезным: stackoverflow.com/questions/34413137 /   -  person Joris C.    schedule 27.06.2019
comment
Это хороший пример, но, к сожалению, он работает с shinyDashboard. Невозможно воспроизвести его на flexDashboard.   -  person Naj S    schedule 28.06.2019
comment
А как насчет того, чтобы кнопки действий выглядели как поля значений?   -  person SeGa    schedule 03.07.2019
comment
Мне нравится, что цвет фона и значок valueBoxes могут изменяться в зависимости от входного значения. Есть ли способ воспроизвести это с помощью actionButtons?   -  person Naj S    schedule 03.07.2019
comment
Поскольку это не полный ответ, я сделал небольшую суть, чтобы показать, как изменить actionButtons в блестящем приложении. Пример Gist   -  person SeGa    schedule 04.07.2019


Ответы (1)


Я пробовал разные параметры для valueBox, но безуспешно. В конце концов, мне удалось решить эту проблему, поместив actionButtons в заголовки valueBoxes, а затем используя пользовательские стили, чтобы сделать их прозрачными и расширить их так, чтобы они покрывали весь valueBox. Похоже, что щелчок по каждому valueBox отображает другой текст в разделе «Вывод текста»:

введите описание изображения здесь

Я добавил цвет и значки, чтобы подчеркнуть, что valueBoxes можно стилизовать как обычно. Он использует только библиотеку flexdashboard и полностью реагирует. Вот код:

---
title: "valueBox Links"
output: 
  flexdashboard::flex_dashboard:
runtime: shiny
---

```{r setup, include=FALSE}
library(flexdashboard)
```

Tab 1 - Test
======================================================================

Column 
-------------------------------------

#### Three valueBoxes

### valueBox 1
```{r}
valueBox(1, caption = paste("I'm clickable!", actionButton("button1", " ", style = "background-color:rgba(39, 128, 227, 0.0); border-color:rgba(39, 128, 227, 0.0); position: absolute; overflow: hidden; left: 0px; top: 0px; right: 0px; bottom: 0px; width:100%")), icon = "fa-thumbs-up", color = "success")
```

### valueBox 2
```{r}
valueBox(2, caption = paste("I'm clickable too!", actionButton("button2", " ", style = "background-color:rgba(39, 128, 227, 0.0); border-color:rgba(39, 128, 227, 0.0); position: absolute; overflow: hidden; left: 0px; top: 0px; right: 0px; bottom: 0px; width:100%")), icon = "fa-tag", color = "warning")
```

### valueBox 3
```{r}
valueBox(3, caption = paste("ME TOO!", actionButton("button3", " ", style = "background-color:rgba(0, 0, 0, 0.0); border-color:rgba(0, 0, 0, 0.0); position: absolute; overflow: hidden; left: 0px; top: 0px; right: 0px; bottom: 0px; width:100%")), icon = "fa-random", color = "danger")
```

Column
-------------------------------------

### Text output
```{r}
textOutput("textout")

rv <- reactiveValues(data = NULL)

observeEvent(input$button1, {
rv$data <- "There are two types of people in the world: 1) Those who can extrapolate from incomplete data."
})

observeEvent(input$button2, {
rv$data <- "If you live to be one hundred, you’ve got it made. Very few people die past that age."
})

observeEvent(input$button3, {
rv$data <- "A statistician’s wife had twins. He was delighted. He rang the minister who was also delighted. “Bring them to church on Sunday and we’ll baptize them,” said the minister. “No,” replied the statistician. “Baptize one. We’ll keep the other as a control."
})  

output$textout <- renderText({
  rv$data
})
```
person gersht    schedule 07.07.2019