Open colearendt opened 5 years ago
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.
Adds a
updateBoxValue
function to stream box values directly to theinfoBox
andvalueBox
values without re-rendering the rest of the HTML. Useful for values that change often.Also adds
id
values for theinfoBox
andvalueBox
items (NULL
by default).