trestletech / shinydash Goto Github PK
View Code? Open in Web Editor NEWDashboard implementation for Shiny
Dashboard implementation for Shiny
Use .find() instead of .children() to properly update ancestors.
Auto-detect if a text widget contains a number currently and is being updated to a different number. If so, automatically increment it iteratively a la Dashing.
Support changing the "state" of a widget via the setting of the class
attribute of the widget, which can then by styled using custom CSS in each app.
Decide on the model for updating widgets for which the entire state isn't sent per message. Winston proposes that such updates should happen over a customMessage
, as the traditional reactive model should be reserved for widgets whose entire state can be determined by the most recent message sent, which would likely not be the case for something like a line chart.
However, there would be advantages to encapsulating each update in a formal reactive, including being able to any element in the widget with each update. For instance, if we were to fit a spline to the data rather than use a rolling average like in his example, the entire state (of the spline) would need to be updated each tick. Similarly, if we implement #7, we may want to populate the whole widget with a single message, rather than sending each data point as a separate customMessage
.
Allow widgets to have a "settings" panel which would allow users to set (and persist) some data.
See the UI design on iPhone apps that have an "info" button that flips the app over to be configured.
AC:
Implement a widget that can display the weather.
Use Singleton to incorporate JS libraries only where needed (JustGage only when Gauge is loaded, etc.)
This looks really nice. I am working on a similar package, named dashifyr
to provide a modular infrastructure for dashboards based on Shiny.
http://github.com/ramnathv/dashifyr
We should certainly talk at some point and exchange notes.
PS. Apologies for posting it as an issue here.
Required to provide initial series for data which should be hidden, even if legend is visible, until the first data update, at which point we can display the series.
Highcharts requires a license for commercial usage. We'll want to use something compatible with our OS licenses.
Move the initialization script from the UI-side functions to the Shiny output binding initialization functions like Winston had the Gage output initially.
Should be able to specify min, max, and "units" keyword.
Would be nice if also had colors, etc.
At the moment, the styles defined in ShinyDash (like body) seemed to override any other css provided. I was wondering if it could be done so that includeCSS could override the ShinyDash css?
Create a reactive()
wrapper which can detect changes to a file. Ideally, this could be implemented using an integration like inotify to get real reactivity. This may be difficult to make consistent across R's supported operating systems, however.
We might be better off polling the file for changes to the modified time, size, and/or hash to check for changes then invalidate the relevant fields.
Hi,
I'm trying to use ShinyDash on my shiny server on CentOS. My problem is that sometimes it works fine and i get my app working on my localhost and sometimes it doesn't (looks like every 5 minutes, it stops for 5minutes).
When it doesn't work, it says something like: The connection was refreshed.
Hi,
I'm trying to download ShinyDash on my shiny server on CentOS. My problem is that with shiny server I have to install the package with root privilege so I have to do it through the terminal. When I do that, I get this error:
Error in contrib.url(repos, type) :
trying to use CRAN without setting a mirror
What should I do ?
Thanks.
How can I reverse the colors? When the gauge is low I'd like it to be green instead of red, and vice versa. Thanks in advance for your help with my rookie question! I'm using the built-in gaugeOutput function in R that I've pasted below. Unfortunately I don't know Java, can only code in R - do you know if/how I could modify this function to pass in the "levelColors" argument?
function (outputId, title = "Title", min = 0, max = 1, units = "",
width = "200px", height = "200px", value = min)
{
tagList(singleton(tags$head(initResourcePaths(), tags$script(src = "shinyDash/justgage/justgage.1.0.1.min.js"),
tags$script(src = "shinyDash/justgage/raphael.2.1.0.min.js"),
tags$script(src = "shinyDash/justgage/justgage_binding.js"))),
tags$div(id = outputId, class = "justgage_output", style = paste("width:",
validateCssUnit(width), ";", "height:", validateCssUnit(height),
";")), tags$script(paste("GageOutput('", outputId,
"',\n '", title, "',\n '",
min, "',\n '", max, "',\n '",
units, "',\n '", validateCssUnit(width),
"',\n '", validateCssUnit(height),
"',\n '", value, "')", sep = "")))
}
Using "id" attribute for the sub-elements precludes being able to have several of these on a page
Create a reactive wrapper around some of the Database connectivity in R that would allow the data in the widgets to be pulled in from a database in a reactive-like fashion.
Ideally we could leverage triggers to get real reactivity. We could, of course, fall-back to a reactive wrapper around a polling mechanism using invalidateLater()
.
Persist the layout in Gridster by saving the state to a cookie upon a change. That way the layout of the grid will survive a refresh.
Review the server code to ensure it's well designed and well named.
htmlWidgetOutputBinding:
Think through the UI code and ensure that the functions are well-defined and well-named.
It would be nice if time-series widgets (such as a line chart) weren't empty when the page initially loaded, but rather had the previous n
values available to them immediately.
We may get into some tricky shiny details, however, if we want this data to be accessible for an application which may have "expired." We'd need to keep the application from suspending even if there have been no users recently.
Should be as simple as adjusting the renderer
argument, but all of the points are currently being rendered along the y-axis. May involve debugging Rickshaw.
Installed ShinyDash, also Shiny 0.6.0.99. Trying to run the example in my server with Shiny-server, so I copied ui.R and server.R from ShinyDash Example.
But im getting ERROR: could not find function "init" when pointing to localhost:3838.
If i run ui.R in R im getting the same error, specifically when using function "gridster". As in :
gridster(tile.width = 250, tile.height = 250, ... ...
Do you have any tips?
Create a widget capable of plotting bar graphs.
Will want to consider features including:
Flush out Readme with descriptions of all widgets, make sure all examples in Roxygen are current.
Re-implement the line graph widget in a more Open-Source-friendly library than HighCharts. Features to consider include:
n
points into the graph on load (a la #7)Probably easiest step would be to export that function from Shiny and place a dependency on an updated version of the package.
Current process of explicitly loading XML and httr in ui.R is sloppy and should be handled by ShinyDash internally. For some reason. was working locally, but wasn't working at all on Spark.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.