Comments (13)
Some input ideas:
- taking a "snapshot" of an existing graph
- pasting a json representation of the graph params
- using the to-be-designed graph constructor UI
from descartes.
Totally want this now so I can "bookmark" graphs for later use.
from descartes.
I love the idea of pasting a json representation to get a mock/test of a graph out. 👍'ing this simply for testing and disposable purposes. I'm new to this project so i cant totally wrap my head around the details, but im not quite certain how you'd take this mock and make it a real graph? plz2explain
from descartes.
@tehviking pointed me to https://github.com/jnicklas/carrierwave which should be useful for image conversion and file management with Sequel and S3. Still need to figure out how we'd convert the D3 SVG asset into an actual image first.
from descartes.
github/ops#23
from descartes.
After (ahem) 5 months of meditation, I think that instead of taking an honest-to-goodness image snapshot and storing that in S3, we should instead be capturing the data returned by Graphite and storing that in postgres. One of the things that bothers me about capturing an image is that the data immediately stops being interactive. By storing the data we can manipulate it and transform the chart as we see fit at some later date.
from descartes.
Perhaps i'm a bad net-citizen but I tend to upload the png's directly into gist.
It works for me, and I am able to make the original 'gist' context about the graphs i'm sharing.
(ignore this if it doesn't help)
from descartes.
Sorry guise, I've done a really bad job explaining what this feature entails. I should have focused the description on the practical goals rather than the implementation. It doesn't help that I'm applying the "gist" name to something that really has nothing to do with GitHub gists; rather, it is intended to be a meta snapshot of data in time.
The goal of this feature is to preserve information around a specifc metric or state of metrics for a defined period. Although it is analogous to simply taking a screenshot of a graph, we really want something that remains interactive while at the same time avoiding the loss of granularity that otherwise comes with the aging/rollups of Graphite metrics. Originally I envisioned that we would simply grab the png, upload it to S3, store some metadata about it, and then recall that image at various times in our workflow.
Rather, we should be storing the data itself as returned by Graphite (presumably the json output) and using that to recreate and interact with live graphs. Any data that needs to be shared "publicly" (as alluded to in the original description) can be accomplished by screenshotting the client-side image, uploading to S3, and then handing that url out.
Hope this makes a little more sense.
from descartes.
Oh totally makes sense :) Sorry about that.
from descartes.
No need to apologize. Clearly I've done a 💩 job of explaining the feature.
from descartes.
Per the work done in #86 we can now "snapshot" a graph metadata (and source data) into the Gists model for later retrieval. There isn't anything in the UI to take advantage of this... yet.
from descartes.
from descartes.
Today I've been thinking about the association between Gists and Graphs and how "loose" they should be. When we take a gist snapshot, we gather all of the configuration and datapoints that represent the current state of the graph being viewed and store that. We want to be able to look at gists as snapshots over time of the original graph. However I also think gists should behave like forks of the original graph, with the ability to create a new Graph from the gist at a later date.
When we Graph#destroy we also cascade delete the associated Gists. I wonder if this is the correct behavior, and if not, how to rework the model in such a way that we have a "loose" association wherein we can benefit from foreign keys when the parent Graph exists, but not be so tightly coupled that deleting a Graph breaks any child Gists.
Thoughts?
/cc @b @jnewland because they've expressed an interest in this feature in past conversations.
from descartes.
Related Issues (20)
- Change order of graphs in Dashboard HOT 1
- Graphs don't display properly in Firefox HOT 2
- Please support no authentication HOT 3
- render target url prepending "." HOT 1
- Undefined method 'update' for MetricCacheInfo:Class (NoMethodError) HOT 4
- Chrome broken for embedded images HOT 2
- Rakefile not loading .env? HOT 1
- Extra dot
- Import graph in directories HOT 5
- `parse_time_string': cannot parse '' (ArgumentError) HOT 8
- Cannot import dashboards/graphs from Graphite HOT 4
- Foreman will fall after a while without apparent reason. HOT 1
- dashboard descartes HOT 3
- Old Ruby 1.9.1 Descartes connects with Graphite, new 1.9.3 Descartes does not
- GitHub auth - NameError at /auth/github HOT 11
- support mysql HOT 5
- Heroku button
- Vagrant deployment
- Unable to get graphs using Firefox when graphite does not require authentication
- Chartroulette doesn't honor overrides
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from descartes.