shinydashboard
shinydashboard copied to clipboard
Stream box values with updateBoxValue
Adds a updateBoxValue
function to stream box values directly to the infoBox
and valueBox
values without re-rendering the rest of the HTML. Useful for values that change often.
Also adds id
values for the infoBox
and valueBox
items (NULL
by default).
Hi @colearendt -- first thanks for opening this PR, I really like the additional functionality of being able to update the box values without re-rendering the whole box.
I made some changes to the API that you might be interested in merging (or using), which you can see in gadenbuie/shinyDashboard@stream-box.
Notably, I changed the syntax around updateBoxValue()
to update a single box, identified by inputId
. Currently this function takes only value
in addition to session
.
updateBoxValue(session, inputId = "singlebox", value = value())
The motivation for this change would be to make it easier to add functionality to update other properties of the box, such as the color or icon, e.g.
# not yet implemented
updateBoxValue(session, inputId = "singlebox", value = value(), status = "warning")
I kept the ability to update multiple boxes at once in a function called updateBoxValues()
that works exactly as your updateBoxValue()
did. I also used this opportunity to refactor a bit and remove the rlang
dependency.
Finally, I added a small CSS animation on the box value update that adds a small flash to the value update.

Feel free to use, lose, or modify any part of the code I've written. Where I think it may contribute to this PR is:
-
Make room for adding updating of additional properties, such as color or icon.
-
We could possibly simplify the javascript message handler to process updates to individual boxes (not needing to loop over data) and instead handle looping in R in
updateBoxValues()
. -
A more consistent API that matches the formals of other shinyDashboard functions.
Any news on this PR? I think it would be a great feature vastly improving user experience and performance.
I'd also like to follow bump this. This function shows up in one of the shiny demos (the twitter conference demo) but it's not a part of any of the code bases making it a little confusing when trying to sort out update value boxes.