jondot / graphene

Graphene is a realtime dashboard & graphing toolkit based on D3 and Backbone.
http://jondot.github.com/graphene
2.87k stars 232 forks source link

drawAsInfinite #5

Open aknapp opened 12 years ago

aknapp commented 12 years ago

Any chance we can get support for graphite's 'drawAsInfinite()' function? Useful for tracking rollouts and whatnot.

jondot commented 12 years ago

I'll check it out!

jondot commented 12 years ago

Looks completely possible. I'll try implementing it over the weekend.

roelven commented 12 years ago

Any news on this? Just found out it doesn't render infinites properly

jondot commented 12 years ago

Hi Roel, Yes, I apologize for being under the radar lately. I hope to work on this, additional fixes, and D3 upgrade all in one, as soon as possible!

roelven commented 12 years ago

That'd be great.

We've found Graphene very useful so far, I'd love to show you our implementation once we've matured it a bit more.

Awaiting your update, cheers!

On Wed, May 23, 2012 at 5:46 PM, Dotan J. Nahum < reply@reply.github.com

wrote:

Hi Roel, Yes, I apologize for being under the radar lately. I hope to work on this, additional fixes, and D3 upgrade all in one, as soon as possible!


Reply to this email directly or view it on GitHub: https://github.com/jondot/graphene/issues/5#issuecomment-5876471

Roel van der Ven Product manager Web

Mail: roel@soundcloud.com Skype: roelvanderven Cell: +49 1577 5302629 http://soundcloud.com/roelven http://twitter.com/roelven Rosenthalerstraße 13, 10119 Berlin, Germany

What is SoundCloud? http://soundcloud.com/tour

We're hiring! http://soundcloud.com/jobs

jondot commented 12 years ago

I'm very excited to hear that, thanks! :)

jondot commented 12 years ago

Hey guys, Here's a first stab at implementing this https://github.com/jondot/graphene/tree/draw_as_infinite

To use it, just pick up graphene.min.js and drop into your current folder structure. Then for a given TimeSeries,

"Topics": {
      source: "http://localhost:4567/",
      TimeSeries: {
         parent: '#g1-3',
         as_infinite: [0]
      }
 }

assuming the as-infinite series is the first one (index 0).

There are a couple inconveniences that I'm aware of (and would appreciate feedback on):

  1. You need to refer to your as-infinite series by index (how bad is this?), because unlike Graphite, we're not parsing the actual request URL.
  2. The processing is on the data-level (and not UI). Once a series is marked as_infinite, we're transforming the data points according to the drawAsInfinite rules. Then the UI draws it as usual, so it looks like a graph with very sharp spikes (instead of a straight line). In order to draw it as a line, we'll need to introduce a new drawing layer for adornments, because a line isn't really a time-series graph.

In anycase, let me know if this works sufficiently well for you, and i'll merge it.

roelven commented 12 years ago

Hey Dotan,

Awesome, thanks for this! I've just implemented your new build, looks good but it seems like it's rendering the initial resource twice, like here:

DrawAsInifinite

Is that a known side-effect?

Cheers

roelven commented 12 years ago

Just noted the update messes with the y scale as well. The curve is looking a lot different in the original graphite graph, maybe that's related to the double line?

jondot commented 12 years ago

Will check when in front of a desktop, thanks On Jun 7, 2012 7:21 PM, "Roel van der Ven" < reply@reply.github.com> wrote:

Just noted the update messes with the y scale as well. The curve is looking a lot different in the original graphite graph, maybe that's related to the double line?


Reply to this email directly or view it on GitHub: https://github.com/jondot/graphene/issues/5#issuecomment-6180439

jondot commented 12 years ago

Hi Roel, Both of the issues don't initially make sense, it doesn't happen before this update right?

just to let you in on the detail this is the only update: https://github.com/jondot/graphene/commit/77d9f79e1fa7eb9878745ddf387c540d02b6bfdf#L1L299

It means that for the series index marked as as_infinite we'll pick the max value (of all the included series) and render that on/off according to the values of the as_infinite series. the max of all series will serve us as 'infinite'.

However I do want to analyze this behavior i'm seeing in the snapshot -- if not much trouble is it possible for you to dump the JSON array to a Gist or such (coming from the ajax request) ?

thanks

Jell commented 11 years ago

I would also be interested in this feature.

On a side note, I made a pull request that should solve the rendering issue encountered here.

jondot commented 11 years ago

thanks @Jell !, I pulled the change in. Now I'm wondering if draw-as-infinite is good enough as implemented here: https://github.com/jondot/graphene/commit/77d9f79e1fa7eb9878745ddf387c540d02b6bfdf#L1L299