Find Answers & Community Forums/Geckoboard API

Custom Chart Widget Type Definitions

Paul Joyce
posted this on September 29, 2010 16:45

Our documentation has been moved. You can now find it at: http://docs.geckoboard.com/api/

 

Comments

User photo
Kayvon Beykpour

Is there any way you can enable the value of each slice of the pie-chart to be shown? You could cheat by putting it in the label obviously, but it would be nice if you could hover over the slice to see the value..

November 21, 2010 23:06
User photo
Paul Joyce
Geckoboard

Hi Kayvon - we don't have that ability at the moment but we're currently investigating revamping Geckoboard charts so we'll look at this requirement at the same time.

November 23, 2010 10:58
User photo
James Simmonds

It would be great to document some technical specs/parameters for the widgets.

My specific question is: How many data items can you include in the linechart? I've had it up to 300 and I'll eventually find out the limit with some testing but it would be great to just read this from docs.

cheers, keep up the great work on GB

James

November 30, 2010 10:16
User photo
Paul Joyce
Geckoboard

Hi James,

Agreed, adding further documentation is high on my todo list.  As for your specific question, it's a tricky one to answer because the limit is enforced by the length of the URL we send to Google to render these charts.

That said, it might be worth considering how the data is going to look with that level of granularity.  300 data points on a (max) 440px wide line chart allows only 1.5 pixels per data point, for best results you should look to aim for about 5 pixels per data point, have a look here for a bit more information on line chart granularity.

December 02, 2010 12:17
User photo
Martin Wawrusch

Hi Paul, 

I am writing a wrapper for .Net/ asp.net Mvc and I am wondering what the post parameters are for the chart widgets (I assume format stays the same, is there a type = 1,2,3 ?)

 

Best,

Martin

December 23, 2010 18:57
User photo
Martin Wawrusch

Something else. Please use american spelling in future api revisions. Color instead of Colour. 

December 24, 2010 07:10
User photo
Paul Joyce
Geckoboard

Hi Martin, thanks for writing the .Net wrapper, would love to see it when it's ready.  You're right, there are two parameters in post: format stays the same and type = 5 (pie chart) , or 6 (line chart), or 7 (geck-o-meter).

As for using American spelling, is the any reason apart from personal preference?  We're a UK based company and that's how we spell it here :)

December 24, 2010 13:10
User photo
Martin Wawrusch

Thanks

I'll publish it on github in a couple of days and post a link here.

Regarding the spelling: Most libraries are written using American English for names, so using the British version introduces the chance for tiny yet hard to find bugs. The number one headache for APIs these days is getting people to use it so it makes sense to follow the herd here and remove any and all obstacles. 

 

December 24, 2010 13:25
User photo
Martin Wawrusch

Just an update for everyone:

The format parameter is omitted when set to json, and the values seem to be 1 for xml and 0 for json, and not xml and json.

December 24, 2010 18:17
User photo
Martin Wawrusch

Uploaded the first version to github at https://github.com/mwawrusch/GeckoboardNet

As this is my first attempt to use git for a visual studio project things might be a bit bumpy. 

December 25, 2010 08:28
User photo
John Cunningham

I'm just getting set up but have a couple of questions on the custom graphs:

1) It looks like you can only do one line per graph - any possibility of two lines?  I'd like to show today's visitors by hour vs yesterday's

2) You mentioned the URL you send to Google - do you use the Google chart tool for the charts?  Could you create a widget which exposed that in a raw format?  Or just a widget that could read the URL for an image?

3) Are the connections to the widget data source coming from the browser or your servers?  I'd love to do one of these for internal-only data but it has to hit a local address.

January 27, 2011 00:01
User photo
Paul Joyce
Geckoboard

Hi John:

1)  Unfortunately right now it's restricted to just one line. We're working on a new graphing component to allow greater flexibility but that won't be available for a couple of months.

2) Yes - this version uses the Google Chart API to render the charts. We have a widget that reads images from a URL and refreshes them at regular intervals, you can find it under Misc>>Images when you're choosing a widget and it's available in a variety of sizes. Using this, you could generate whatever Google charts you want and display them on your Geckoboard status board.

3) The connections are coming from our servers which means it won't be able to access data from behind your firewall. Can you publish the data outside of your firewall and protect with and API key that you specify to Geckoboard?

January 27, 2011 16:39
User photo
John Cunningham

Thanks for the quick reply - I'll check out the image widget as a Google chart workaround for some more complex stuff.  Does it pull the image from the original source or do you guys grab it and cache it?  

We have a testbed running using the API key setup - I'd like to be able to pass username as well as password to it so that I can make the authentication happen in apache (even if it's an optional, secondary piece).  Given the way the auth headers work I have to take care of the API authentication at the application level, which leaves more opportunity for a bug.  We will use it this way for now - it's just a comfort level thing.

January 27, 2011 19:34
User photo
Paul Joyce
Geckoboard

Images are pulled from the original source i.e. the html contains a link to the original image. We slap an extra parameter on the end that increments each time the widget is refreshed, this ensures it's not cached in the browser.

Understood about enforcing authentication at the application level - valid concern, we'll look into improving that.

January 28, 2011 09:53
User photo
John Cunningham

This is great - thanks for the help.

I created a piece in the API we're building for Geckoboard to allow me to publish Google Graphs based on custom data.  I ran in to two problems:

 -1) The image widget doesn't include a spot for an API key

 -2) The image widget enforces the need for an image extension - I'm setting this as a png in the headers but don't want to mess with my rewrite rules to actually name it .png

January 28, 2011 11:54
User photo
John Cunningham

I have been playing with some of the widgets - is there a way I can send over the URL of the google chart using a text widget and let you guys load it?  The text widgets support API keys and I don't have to alter the system on my side to make png extensions executable by php....

January 28, 2011 13:04
User photo
Paul Joyce
Geckoboard

You read my mind - yes you can include it in a custom text widget as we allow some html and inline styling so you should be able to use this to point to a script that outputs <img src="...">. If you add a parameter at the end that increment or is always different (e.g. epoch time or whatever) the image won't get cached in your browser.

January 28, 2011 13:42
User photo
John Cunningham

Can you give me an example of the syntax to use?  I tried a few variations and eventually gave up - this is the last one I tried.  I always get a blank:

   
  <root>


  <item>
  <img src="http://chart.apis.google.com/chart?chf=bg,s,000000&chxl=1:|2+AM|6+AM|10+AM|2+PM|6+PM|10+PM&chxp=1,2,6,10,14,18,22&chxr=0,10,216|1,0,23&chs=440x400&cht=lxy&chco=F3E586,008000&chds=0,23,0,216,0,23,0,216&chd=t:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23|128,87,36,21,8,14,14,42,88,134,155,178,206,169,174,174,174,154,150,125,151,167,156,119|0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23|76,54,42,17,13,11,18,22&chdl=Yesterday|Today&chdlp=b&chls=4,4,6|4&chxt=y,x&chts=F7F7F7,11.5&chxs=0,F5F6F8,15.5,0,lt,F8F5F5|1,FAEBEB,11.5,0,lt,F8E9E9&chma=40,40,20,40"> </item>
   
  </root>
January 28, 2011 14:10
User photo
Paul Joyce
Geckoboard

Have a look at this file: http://dl.dropbox.com/u/512939/GB/textimg.xml - works fine for me

January 28, 2011 14:17
User photo
John Cunningham

That worked - I actually had that at one point but didn't even test it because it didn't render directly in a browser. Thanks.

January 28, 2011 15:04
User photo
Craig Parker

Hey Guys,

was wondering if you can give me some links/advice on using the custom widget to make graphs from Google Analytics data? I'm not too familiar with XML or JSON so if anyone already has some example script/code that would be awesome.

 

-Craig

February 04, 2011 12:59
User photo
John Cunningham

Happy to - it's actually pretty simple...

First - Design your graph / chart.  Here is a great tool for doing this: http://imagecharteditor.appspot.com/  Some advice:

 - Use transparent backgrounds - it'll make the chart fit in a lot better - specifically this parameter: chf=a,s,000000|bg,s,00000000

 - Use colors that compliment GB - filled line charts with bright white lines at the top look really good.

 - Don't worry about putting random variables on to keep it from cacheing - when the chart changes so does the URL so it's built in

Next - have your place to serve the file from.  We set up a cloud server specifically for gecko and used the http auth to create an API key.  Keep this simple - security is a concern here.

The XML is actually really simple - basically you're taking advantage of the fact that GB allows some HTML: 

 

<root>
<? for ($x = 0; $x < count($text); $x++): ?>
<item>
<?= $text[$x] ?>
</item>
<type>0</type>
<? endfor; ?>
</root>

<root>
<item>

<img src = "YOUR GOOGLE IMAGE URL">

  <type>0</type>

</item>

</root>

 

That's basically it.  You can put in multiple items and have the images rotate - this is default behavior and looks really slick.

 

-John

February 04, 2011 19:03
User photo
John Cunningham

Sorry - I just realized I left PHP code in the XML - primitive comment system won't let me edit...

<root>

  <item>

    <img src="GOOGLE CHART URL">

    <type>0</type>

  </item>

</root>

February 04, 2011 19:05
User photo
jon Yates

John,

I think it would be beneficial if you could write (video) a couple of tutorials on this for non developers - its such a great system and I have worked out some of the YQL stuff but the power comes with getting secure data out and I really dont get the authentication through Auth to get to my google chart data

 

Cheers

 

Jonathan

February 06, 2011 08:54
User photo
Craig Parker

Ah I see I was trying to make a chart with the widgets from Google API data didn't think of trying to embed a chart from google!

 

Thanks for the advice. 

February 06, 2011 15:06
User photo
John Cunningham

Jon,

I'd be happy to put something together, but I have one problem.  Since GB announced their pricing strategy I am not sure we'll stick with them.  The pay-per-screen thing is a bit too much - everyone in my company wants to use this as their screen saver and I have been asked to put dashboards on 5 different TVs as permanent fixtures.  At this rate I'll be paying $150 / month for the basic plan.  I am looking for an alternative (we write all our own widgets so we get nothing from the pre-defined ones - we even rewrote the Google Analytics and Chartbeat widgets) so I am hesitant to spend any time on it.  If they gave out an unlimited plan - say even $50 / month for unlimited screens - it would be a different story.

I went a very easy route, and could easily pack up the software I created and post it up.  I used codeignitor and created a single controller and a couple of views to handle the GB stuff.  Basically any method has to output an array formatted in one of a couple of ways, then call the view associated with that particular method.  In PHP if you want to grab the API key and compare against it just look for the $_SERVER['PHP_AUTH_USER'] variable.  We then hardcoded the key into the controller. If it didn't match I threw a 401 exception and killed the page.  I then used Apache rewrite rules to point everything at the geckoboard controller, therefore making sure nothing else could be executed.

Let me know if that helps.  Cheers.

-John

February 07, 2011 14:53
User photo
Ciara
Geckoboard

Hi John,

We are aware there are a some things that need to be dealt with in terms of pricing and we are currently looking into this. We've opened up the discussion on our blog (http://blog.geckoboard.com/geckoboard-pricing-let-us-know) and are currently thinking about what is the best option.

Thank you for getting contact about this.

Ciara

February 07, 2011 15:02
User photo
John Cunningham

Ciara,

I don't really want to sign up another account to post to the blog - I know this isn't the best forum but my 2-cents is pretty short.

Per-device limit makes it very hard to scale this to people that want to see it, or pull it up during a meeting to show it off.  It's just too constricting.  Give me unlimited devices and I'll asses if that fee is worth it for me.

Secondly - you alienate people (like me) that want to dev against the platform.  I have to pay $10 / month for my own dev setup - and you guys want me to give back?  A dev platform can be "hard refresh only" but I need to see how my widgets work against your system.

-John 

February 07, 2011 16:02
User photo
Paul Joyce
Geckoboard

John thanks for your feedback, no need to sign up to the blog, here is just fine.

I totally understand that the per-device limit is not working for you and and many others; the last thing I want to do is alienate people like you who have taken the time to develop against the platform and use the service as part of your daily workflow. Clearly $150/mo for your use case is an order of magnitude higher than it should be.

The simple matter is that I misjudged how typical use cases like yours are and I want to rectify that with the new pricing policy. Whether you decide to stick with us or not (and I sincerely hope that you do) I want to take the opportunity to thank you for checking us out, your top class contributions here and for taking the time to tell us what's wrong with the pricing.

I'll be making an announcement on pricing in the coming days, in the meantime please feel free to drop me a line at paul [at] geckoboard [dot] com.

February 07, 2011 16:14
User photo
Craig Parker

Hey guys, sorry for delay in reply but I didn't have any time to work on the suggestions john gave me!

I have looked through your example John and while it has helped me real a bit about pulling in a Google Graph API (which was very actually useful for my tiny developer-less brain) I still haven't managed to graph data from Google analytics, is there a simply way to pull GA data into the Google Graphs API?

February 11, 2011 13:22
User photo
John Cunningham

Ahhh - You will need to pull the Google Analytics data via their API, then re-build it into the graph that you want and feed it to Google Graphs.  I don't know anything about the Google Analytics API - but I know we pull some custom numbers (I didn't write that piece) for our GB dashboard.  

I'll ask around and see if I can find you a starting point.

February 14, 2011 03:06
User photo
John Cunningham

This came from Keith - he's one of my partners here and the one that wrote our GA widgets - he said he's using this module:

http://code.google.com/p/gapi-google-analytics-php-interface/wiki/G...

February 14, 2011 11:24
User photo
Craig Parker

Thanks for the link John, PHP is a bit more familiar to me so I think I can make a go of this.

February 14, 2011 11:32
User photo
Tommy Svensson

@John:

 

I'd love a post up with the CodeIgniter package. Or if you want to email me at tommy [at] brandos [dot] com that's fine too (as I don't monitor this too frequently). Would really appreciate it.

/Tommy

March 09, 2011 17:55
User photo
John Cunningham

Sorry - I got busy and let this get to the wayside.  I'll post something up tonight.

March 09, 2011 18:41
User photo
John Cunningham

I wanted to get this uploaded before the end of the day - check out the README in the zip.  It's definitely rough (and untested - sorry) but should give you the framework you need.  You definitely have to be able to get CodeIgnitor up and running yourself, but the basics are here for API and Google Graphs.  I'd actually recommend using this more as a guideline than just copy / pasting the code.

Cheers,

-John

March 09, 2011 23:16
User photo
Paul Joyce
Geckoboard

Thanks for this contribution John - really appreciate that you took the time to post it for others to use as a starting point.

March 11, 2011 10:42
User photo
John Cunningham

My pleasure - I hope it's helpful.  Feel free to throw any questions at me.

March 11, 2011 17:24
User photo
Tim Madel

Can you reverse the Geck-o-meter so that high numbers are red and low numbers are green (i.e. phone calls to the a support center)?

March 12, 2011 17:27
User photo
Paul Joyce
Geckoboard

Hi Tim, this is certainly something we'll look to implement. Thanks for the suggestion!

March 21, 2011 11:18
User photo
Ciara
Geckoboard

Hi Tim, we have updated the Geck-O-Meter now to allow you to add an optional <type>reverse</type> in the XML to reverse the colours. And we've updated the docs above. Thanks again for the suggestion. 

March 21, 2011 16:50
User photo
Michael Styne

I was going to request a normal bar graph (which would still be nice) -- but a couple additions to the 'funnel' type might get me the results I'd like.

A flag to hide the percentages would be great, as well as implementing the 'reverse' coloring option above might get me most of the way there.

 

Thanks!

March 21, 2011 17:02
User photo
Ciara
Geckoboard

Hi Michael,

We've updated the funnel chart now. Optional settings:

<type>reverse</type> "reverse" to reverse the colours or "standard" for normal
<percentage>hide</percentage> "hide" to hide the % or "show" to show it

I've updated the docs above as well to show this.

Thanks for the suggestion and hope it helps you out!

March 22, 2011 14:16
User photo
Michael Styne

Ciara,

Excellent! This is perfect. Thanks so much for taking a look into it.

March 22, 2011 15:44
User photo
Ciara
Geckoboard

Glad it's of some help to you! 

March 22, 2011 15:45
User photo
Fabio Mont Alegre

The geck-o-meter indicator doesn't do anything for me, see file attached. Shouldn't it in this case be pointed upwardish?

March 24, 2011 20:07
User photo
Fabio Mont Alegre

Hmm, never mind, I get it now!

March 24, 2011 21:45
User photo
Ciara
Geckoboard

If you need anymore help Fabio, let me know.

March 29, 2011 11:51
User photo
Dave McDougall

Hey it says above "The bullet graph contains a number of different components which are explained in our blog post on bullet graphs" but I can't find any other blog posts about them I want to see more details about the components. I assume there is only 3 colours available to display?

April 11, 2011 07:36
User photo
Ciara
Geckoboard

Hi Dave,

Sorry for the difficulty here. Our blog http://blog.geckoboard.com/ has a lot of lengthy updates. The post about bullet graphs is here http://blog.geckoboard.com/introduction-to-bullet-graphs. Our default bullet graph show the Red, Amber, Green colours that you see above but you can change these colours to anything you want using Custom CSS. 

If you need anything else, just let me know.

April 12, 2011 10:50
User photo
Jarratt

Hi, I am trying to get geck-o-meter to display correctly, the issue i am having is the widget never displays the min figure but always sets it to the item value. The item value will always be lower than the min as we are using the geck-o-meter to rather display an average. I am assuming the widget is detecting that the "item" value is lower than the "min" value and rather using that ?

If that is the case are there any recommendations of widget would be better suited to displaying averages ?

The XML i am using is 

  <?xml version="1.0" encoding="UTF-8"?>
  <root>
  <item>65</item>
  <min>
  <value>14729</value>
  <text>Correct</text>
  </min>
  <max>
  <value>22325</value>
  <text>Asked</text>
  </max>
  </root>
April 14, 2011 11:14
User photo
Jarratt

I also have a future feature request, We use the funnel graph quite a bit and regularly have multiple variations of the same funnel graph. I.E a leader board of the top 10 scores, then broken down into several locations. At the moment i have to create 6 or so funnel graphs for roughly the same thing it would be nice if you could add similar functionality to the graphs like you do for the text widgets that allow you to scroll / select "sub widgets" this would drasitcally help reduce the overall size of some of our dashboards :)

April 14, 2011 11:14
User photo
Ciara
Geckoboard

Hi Jarratt,

The funnel request is something that would be a big update so I'm not sure how possible it would be. It is certainly something that will be considered for the future but at the moment we have a stack of integrations and updates in the pipeline that we are working. Thanks for the feedback, it is great to know what users want.

I'm really sorry you are having this difficulty with the geck-o-meter. I'm not entirely sure what you are after but if you want your item value to be less than the minimum value, the geck-o-meter would not be able to display this as the needle (item value) needs to be between the minimum and maximum.

What exactly are you trying to display with the geck-o-meter? I'd love to be able to help you out with this I'm just a little unsure at the moment about what exactly you need.

April 14, 2011 11:45
User photo
Jarratt

Hi Ciara, 

Basically i have a  requirement to show a percentage i.e 69% with the two figures user to achieve that percentage

EG:  Total Questions = 22325 Total correct = 14729 gives us a 65% figure, We thought using a Geck-o-meter would allow us to display these three figures but the geck-o-meter uses the 65 as the lowest number instead of the supplied 14729. 

So were trying to work out which other widget would suite our needs, I did look at the number widget but that automatically creates the percentage and hides the higher number which is not what we were trying to achieve.  Any thoughts ?

Thank you for the original response, 

Regards 

Jarratt

 

April 19, 2011 12:17
User photo
Ciara
Geckoboard

Hi Jarret, 
With the widgets we currently offer we would recommend using the RAG Numbers and inputting them to show you Total Correct and Total Incorrect and the % of each of these. I think from our widgets, this would be the best for you. Here is a copy of the XML that would create this widget for you:

  <?xml version="1.0" encoding="UTF-8"?>
  <root>
  <item>
  <value>7596</value>
  <text>34% Incorrect</text>
  </item>
  <item>
  <value></value>
  <text>Amber</text>
  </item>
  <item>
  <value>14729</value>
  <text>66% Correct</text>
  </item>
  </root>

However, you could always develop a widget yourself, this way you can show exactly what you want and how you want it to look. Again, I would be happy to help you out with that but I think a clearer image of how exactly you would like the data to be displayed would be great in developing the look of it.

Let me know how you get on and how I can help you out.

Ciara

 

April 20, 2011 11:13
User photo
Bennett Rogers

Hello,

I am trying to use custom Highcharts in my Geckoboard dashboard, and for the most part things work well.  I'm looking into Highcharts ability to load data dynamically, and so have added an "events" parameter in the chart options object that's returned to Geckoboard.  Unfortunately, Geckoboard seems to be parsing the "events" object oddly, and thus mangling the Highcharts configuration object.

Is there a known way to get Geckoboard to respect/use Highcharts' event capabilities?

Thanks!

Bennett

May 24, 2011 20:18
User photo
Chris Moyer

Is there a JSON api for using bullets?

June 02, 2011 18:39
User photo
Paul Joyce
Geckoboard

@Chris - JSON example added above. Let me know if you need anything more.

June 03, 2011 09:44
User photo
Blaine

Is it possible to add a theme to a highcharts custom widget?

Such as at http://www.highcharts.com/demo/column-stacked/gray

 

The white background of the graph really ruins the whole appearance of the geckoboard.  I'm able to make the graph work, but I don't see how to integrate the style.

June 17, 2011 15:21
User photo
Ciara
Geckoboard

Hi,

You can make the highcharts background disappear so it is the same as whatever your Geckoboard is. You need to include part of the following to make the background the right colour:

chart: {
renderTo: 'container',
defaultSeriesType: 'line',
plotBackgroundColor: none,
backgroundColor: none,
borderColor: none,
lineColor: 'rgba(35,37,38,100)',
plotBorderColor: none,
plotBorderWidth: null,
plotShadow: false
}

This is an example, but the important sections are:

plotBackgroundColour: none, backgroundColour: none, borderColour: none, plotBorderColour: none

These will ensure the background disappears and the scheme underneath will be shown.

If you have any difficulties with this or need anymore help just let me know.

Ciara

June 17, 2011 15:36
User photo
Blaine

Ciara, thanks for that info.  It doesn't seem to work though, but I changed the none to '#333333' and it worked pretty well.

 

Is it going to be possible to do any other sizes such as a 4x4 or 2x6?  We use some large charts.....

June 17, 2011 16:10
User photo
Ciara
Geckoboard

Hi,

I'm glad you got something working for you and I am sorry for the difficulty.

We are currently working on widget sizes etc at the moment so thank you for the feedback, we will definitely take that into account.

Ciara

June 17, 2011 16:28
User photo
Aleem Mawani

I'm trying to get highcharts working on Geckoboard and am running into some problems. Basically, I can't get a simple line chart to appear even though it seems to work with Highcharts directly. On my geckoboard it shows up as a blank widget. My config is below, but in general what tools do you use to debug highcharts on geckoboard and what debug process do you use?

 

{
"chart": {
"renderTo": "container"
},
"xAxis": {
"type": "datetime"
},
"series": [{
"name": "ydlTransactionsByDate"
},
{
"data": [[1300172400000, "2"], [1300258800000, "2"], [1300345200000, "7"], [1300431600000, "3"], [1300604400000, "2"], [1300690800000, "10"], [1300777200000, "3"], [1300863600000, "1"], [1300950000000, "3"], [1301036400000, "2"], [1301122800000, "1"], [1301209200000, "8"], [1301295600000, "7"], [1301382000000, "1"], [1301468400000, "1"], [1301641200000, "7"], [1302418800000, "1"], [1302505200000, "4"], [1302591600000, "1"], [1302678000000, "3"], [1302850800000, "5"], [1302937200000, "4"], [1303023600000, "4"], [1303196400000, "4"], [1301727600000, "4"], [1303282800000, "3"], [1303369200000, "4"], [1303455600000, "3"], [1303542000000, "3"], [1303628400000, "1"], [1303714800000, "7"], [1303801200000, "3"], [1303887600000, "3"], [1303974000000, "3"], [1304060400000, "5"], [1301814000000, "3"], [1304146800000, "2"], [1301900400000, "2"], [1301986800000, "1"], [1302073200000, "3"], [1302159600000, "3"], [1302246000000, "7"], [1302332400000, "1"], [1304233200000, "1"], [1305010800000, "5"], [1305097200000, "7"], [1305183600000, "6"], [1305270000000, "9"], [1305356400000, "5"], [1305442800000, "1"], [1305529200000, "10"], [1305615600000, "5"], [1305702000000, "9"], [1305788400000, "1"], [1304319600000, "6"], [1305874800000, "5"], [1306047600000, "4"], [1306134000000, "7"], [1306220400000, "12"], [1306306800000, "7"], [1306393200000, "5"], [1306479600000, "9"], [1306566000000, "6"], [1306652400000, "3"], [1304406000000, "3"], [1306738800000, "14"], [1306825200000, "10"], [1304492400000, "8"], [1304578800000, "4"], [1304665200000, "5"], [1304838000000, "3"], [1306911600000, "5"], [1307689200000, "5"], [1307862000000, "4"], [1307948400000, "6"], [1308034800000, "3"], [1308121200000, "1"], [1308207600000, "2"], [1308294000000, "2"], [1308380400000, "4"], [1306998000000, "4"], [1307084400000, "8"], [1307170800000, "2"], [1307257200000, "1"], [1307343600000, "9"], [1307430000000, "13"], [1307516400000, "5"], [1307602800000, "9"]]
}]
}
June 20, 2011 05:24
User photo
Velimir

There is not  JSON example for the Funnel Chart.  Here is one :)

 

{"item": [ {"value": 87809 ,"label": '"Step1"},
         {"value": 70022 ,"label": '"Step2"},
{"value": 63232 ,"label": '"Step3"},
{"value": 53232 ,"label": '"Step4"},
{"value": 32123 ,"label": '"Step5"},
{"value": 23232 ,"label": '"Step6"},
{"value": 12232 ,"label": '"Step7"},
{"value": 2323 ,"label": '"Step8"}
]}

June 24, 2011 00:35
User photo
Paul Joyce
Geckoboard

@Aleem - apologies for the lack of debugging routes, that something we're actively looking to improve. Right now, you can get that chart to work by using the following:

{
"chart": {
"renderTo": "container",
"defaultSeriesType": "line"
},
"xAxis": {
"type": "datetime"
},
"series": [{
"name": "ydlTransactionsByDate",
"data": [[1300172400000, "2"], [1300258800000, "2"], [1300345200000, "7"], [1300431600000, "3"], [1300604400000, "2"], [1300690800000, "10"], [1300777200000, "3"], [1300863600000, "1"], [1300950000000, "3"], [1301036400000, "2"], [1301122800000, "1"], [1301209200000, "8"], [1301295600000, "7"], [1301382000000, "1"], [1301468400000, "1"], [1301641200000, "7"], [1302418800000, "1"], [1302505200000, "4"], [1302591600000, "1"], [1302678000000, "3"], [1302850800000, "5"], [1302937200000, "4"], [1303023600000, "4"], [1303196400000, "4"], [1301727600000, "4"], [1303282800000, "3"], [1303369200000, "4"], [1303455600000, "3"], [1303542000000, "3"], [1303628400000, "1"], [1303714800000, "7"], [1303801200000, "3"], [1303887600000, "3"], [1303974000000, "3"], [1304060400000, "5"], [1301814000000, "3"], [1304146800000, "2"], [1301900400000, "2"], [1301986800000, "1"], [1302073200000, "3"], [1302159600000, "3"], [1302246000000, "7"], [1302332400000, "1"], [1304233200000, "1"], [1305010800000, "5"], [1305097200000, "7"], [1305183600000, "6"], [1305270000000, "9"], [1305356400000, "5"], [1305442800000, "1"], [1305529200000, "10"], [1305615600000, "5"], [1305702000000, "9"], [1305788400000, "1"], [1304319600000, "6"], [1305874800000, "5"], [1306047600000, "4"], [1306134000000, "7"], [1306220400000, "12"], [1306306800000, "7"], [1306393200000, "5"], [1306479600000, "9"], [1306566000000, "6"], [1306652400000, "3"], [1304406000000, "3"], [1306738800000, "14"], [1306825200000, "10"], [1304492400000, "8"], [1304578800000, "4"], [1304665200000, "5"], [1304838000000, "3"], [1306911600000, "5"], [1307689200000, "5"], [1307862000000, "4"], [1307948400000, "6"], [1308034800000, "3"], [1308121200000, "1"], [1308207600000, "2"], [1308294000000, "2"], [1308380400000, "4"], [1306998000000, "4"], [1307084400000, "8"], [1307170800000, "2"], [1307257200000, "1"], [1307343600000, "9"], [1307430000000, "13"], [1307516400000, "5"], [1307602800000, "9"]]
}]
}

Here I've added "defaultSeriesType", I've also modified the series as Highchart was interpreting that as 2 series, once called ydlTransactionsByDate with no data and another with no name but all the data.

June 24, 2011 16:50
User photo
Paul Joyce
Geckoboard

@Velimir - Thanks!

June 24, 2011 16:50
User photo
Blaine

When I'm working on the charts I will debug it by running it outside of Geckoboard, just in HTML.  Then once I have everything the way I want it, I copy the middle portion and put it into a new file for integration with Geckoboard.  It isn't clean or pretty, but it works pretty well.  This way you can quickly do the change, refresh, test, type workflow and use tools such as firebug to better debug where there are problems initially.

June 24, 2011 17:12
User photo
Paul Joyce
Geckoboard

@Blaine - thanks for sharing.

Another alternative is to use jsfiddle to do it all in the browser, feel free to use this one as a starting point.

June 24, 2011 18:02
User photo
Arttu Tervo

Hi Paul,

It seems that the Highcharts widget is broken on Geckoboard. My Firebug says, that a closing curly bracket character is missing in the javascript that loads the widget.

A snippet from the returned request body:

var chart100690 = null;\n    $(document).ready(function() {\n        chart100690 = new Highcharts.Chart({\"legen\":{\"enabled\":false},\"title\":{\"text\":\"Title\"},\"series\":[{\"name\":\"Series name\",\"data\":[100.0,100.0,0.0,0.0,0.0,0.0,0.0,100.0,80.0,100.0,0.0,0.0,75.0,100.0,100.0,0.0,100.0,0.0,0.0,100.0,80.0,100.0,100.0,100.0,0.0,100.0,83.3,0.0,66.7,0.0],\"type\":\"line\"}],\"yAxis\":{\"max\":1,\"min\":0},\"xAxis\":{\"categories\":[\"22 Jun\",\"23 Jun\",\"24 Jun\",\"25 Jun\",\"26 Jun\",\"27 Jun\",\"28 Jun\",\"29 Jun\",\"30 Jun\",\"01 Jul\",\"02 Jul\",\"03 Jul\",\"04 Jul\",\"05 Jul\",\"06 Jul\",\"07 Jul\",\"08 Jul\",\"09 Jul\",\"10 Jul\",\"11 Jul\",\"12 Jul\",\"13 Jul\",\"14 Jul\",\"15 Jul\",\"16 Jul\",\"17 Jul\",\"18 Jul\",\"19 Jul\",\"20 Jul\",\"21 Jul\"],\"labels\":{\"y\":30,\"rotation\":90}},\"chart\":{ height: 398, width: 440, renderTo: 'w-highchart-100690');\n    });\n

The last option "chart" isn't closed and that causes widget to not load correctly.

July 21, 2011 09:29
User photo
Paul Joyce
Geckoboard

Hi Arrtu, I've had a look and cleaned up the code so that it will render fine on Geckoboard. The output should look exactly as follows:

{ "chart" : { "height" : 398,
      "renderTo" : "container",
      "width" : 440
    },
  "legend" : { "enabled" : false },
  "series" : [ { "data" : [ 100.0,
            100.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            100.0,
            80.0,
            100.0,
            0.0,
            0.0,
            75.0,
            100.0,
            100.0,
            0.0,
            100.0,
            0.0,
            0.0,
            100.0,
            80.0,
            100.0,
            100.0,
            100.0,
            0.0,
            100.0,
            83.299999999999997,
            0.0,
            66.700000000000003,
            0.0
          ],
        "name" : "Series name",
        "type" : "line"
      } ],
  "title" : { "text" : "Title" },
  "xAxis" : { "categories" : [ "22 Jun",
          "23 Jun",
          "24 Jun",
          "25 Jun",
          "26 Jun",
          "27 Jun",
          "28 Jun",
          "29 Jun",
          "30 Jun",
          "01 Jul",
          "02 Jul",
          "03 Jul",
          "04 Jul",
          "05 Jul",
          "06 Jul",
          "07 Jul",
          "08 Jul",
          "09 Jul",
          "10 Jul",
          "11 Jul",
          "12 Jul",
          "13 Jul",
          "14 Jul",
          "15 Jul",
          "16 Jul",
          "17 Jul",
          "18 Jul",
          "19 Jul",
          "20 Jul",
          "21 Jul"
        ],
      "labels" : { "rotation" : 90,
          "y" : 30
        }
    },
  "yAxis" : { "max" : 1,
      "min" : 0
    }
}

Let me know if you need anything more.

July 25, 2011 05:38
User photo
Joe

Paul, sorry to chime in with a similar issue, but..... pasted below is the code I'm trying, which works fine in jsFiddle, but when I plug it into Geckoboard, it won't display - oddly enough, it displays only one single point in time, with y-axis values equivalent to the *average* of the values for each series below.  Any thoughts?  I'm slowly (but surely) going insane trying to debug it.

 

Thanks!

 

{
    	chart: {
        	renderTo: 'container',
        	defaultSeriesType: 'line',
        	marginRight: 0,
        	marginBottom: 20,
        	plotBackgroundColor: 'none',
        	backgroundColor: 'none',
        	plotShadow: false
    	},
    	title: {
        	text: null
    	},
    	legend: {
        	enabled: true
    	},
    	xAxis: {
        	type: 'datetime',
        	gridLineColor: '#282828',
        	gridLineWidth: 1,
        	tickColor: '#444',
        	lineWidth: 0,
        	tickPixelInterval: 70
    	},
    	yAxis: {
        	title: {
            	text: null
        	},
        	gridLineColor: '#282828',
        	gridLineWidth: 1,
        	lineWidth: 0,
        	tickWidth: 1,
       	 	tickColor: '#444',
        	tickPixelInterval: 20,
        	startOnTick: false,
        	endOnTick: false
    	},
    	colors: ['#44FF44', '#FF5500'],
    	credits: {
        	enabled: false
    	},
    	plotOptions: {
        	line: {
        	    marker: {
        	        enabled: false
        	    }
        	}
    	},
    	series: [{
        	name: 'ABC',
        	data: [0.46,0.58,0.61,0.40,0.56,0.55,0.49,0.46,0.44,0.56,0.72,0.53],
        	pointStart: Date.UTC(2011, 4, 1),
        	pointInterval: 24 * 3600 * 3000},{
        	name: 'DEF',
			data: [0.54,0.28,0.78,0.28,0.39,0.16,0.22,0.38,0.35,0.48,0.07,0.74],
        	pointStart: Date.UTC(2011, 4, 1),
        	pointInterval: 24 * 3600 * 3000}]
}

 

July 26, 2011 04:36
User photo
Paul Joyce
Geckoboard

Hi Joe - this is what I get when I copy and paste the code:

Screen_shot_2011-07-25_at_20.42.31.png

Is this not what you're expecting or are you not getting the same result? For reference, here's the URL I'm using: http://dl.dropbox.com/u/512939/GB/hc20110725.txt

July 26, 2011 04:44
User photo
Joe

Nope, that looks correct..... argh.  Perhaps some sort of transmission issue on my end.  I'll keep digging.  Thanks for the quick reply!

 

Joe

July 26, 2011 04:47
User photo
Paul Joyce
Geckoboard

No problem Joe - if you're still having difficulty feel free to email me (paul [at] geckoboard [dot] com the URL you're using and I'd be happy to look into it further.

July 26, 2011 04:52
User photo
Paritosh

If I were to use a line chart..is there any way I can include two lines to compare in the same widget? For example If I wanted to compare 2010 and 2011 data?

August 05, 2011 00:33
User photo
Ciara
Geckoboard

Hi,

Using Highcharts you can very easily do this. Information about Highcharts is at the top of this page but if you have a look at their chart demo gallery you can see they have lots of options including a line chart with multiple lines. If you need anymore help just let me know.

Ciara

August 08, 2011 10:24
User photo
Blaine

Is there any plans/timeline to be able to make these widgets larger?  For example on a HDTV screen I would like to be able to have 1 complex chart fill the entire screen for some period of time and then rotate to another dashboard.  Is this possible?

August 08, 2011 13:55
User photo
Ciara
Geckoboard

Hi Blaine,

This isn't possible at the moment however it is definitely on our plan for the future, we would like to make the widgets more flexible and this would be a big part of it. 

Ciara

August 08, 2011 14:55
User photo
Ciara
Geckoboard

Hi Blaine,

This isn't possible at the moment however it is definitely on our plan for the future, we would like to make the widgets more flexible and this would be a big part of it. 

Ciara

August 08, 2011 14:55
User photo
Allen

Hello all,

It has been a pleasure working with geckoboard custom charts, but I must ask:

Is there a way to increase the font size through JSON (or XML for that matter)?

For example, I would like to make the units of a line chart larger and easier to see.

August 09, 2011 13:51
User photo
Blaine

I'm sorry to complain again, but I'm having more problems with Geck-O-Meter here.  I tried setting this up as per the instructions above, and it somewhat works, I get the arrow on the curved meter.  However the actual number and the min max numbers do not show up, and there is no coloring.

 

Any ideas?

August 10, 2011 15:45
User photo
Gage Short

I'm having difficulty rendering a Highchart on my Geckoboard, here's the feed:

{"chart":{"renderTo":"container","defaultSeriesType":"column"},"title":{"text":"Stacked column chart"},"xAxis":["aarpasi","ngawr","moweb"],"yAxis":{"min":0,"title":{"text":"Issue Priorities"},"stackLabels":{"enabled":true,"style":{"fontWeight":"bold","color":"gray"}}},"legend":{"align":"right","x":-100,"verticalAlign":"top","y":20,"floating":true,"backgroundColor":"white","borderColor":"#CCC","borderWidth":1,"shadow":false},"tooltip":{},"plotOptions":{"column":{"stacking":"normal","dataLabels":{"enabled":true,"color":"white"}}},"series":[{"name":"Trivial","data":[19,0,0]},{"name":"Minor","data":[11,0,1]},{"name":"Major","data":[17,46,40]},{"name":"Critical","data":[13,1,5]},{"name":"Blocker","data":[1,0,2]}]}
 
I'm wondering if there is a format issue or if this chart can be rendered in this small of a space?
Thanks,
-Gage
October 01, 2011 16:49
User photo
Chris

Trying to get HighCharts to work - this works fine in JSFiddle but will not work as a widget in Gecko Boards:

        chart: {

            renderTo: 'container',

            defaultSeriesType: 'line'

        },

        title: {

            text: 'Engineering P1 Defects',

            x: -20 //center

        },

        xAxis: {

            title: { text: 'Sprint' },

            categories: ['29', '30', '31', '32', '33', '34',

            '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48']

        },

        yAxis: {

            title: {

                text: 'Defects'

            },

            plotLines: [{

                value: 0,

                width: 1,

                color: '#808080'

            }]

        },

        tooltip: {

            formatter: function () {

                return '<b>' + this.series.name + '</b><br/>' +

               this.x + ': ' + this.y;

            }

        },

        series: [{

            name: 'Defects',

            data: [4, 6, 3, 2, 1, 2, 3, 3, 0, 1, 4, 1, 0, 5, 2, 7, 1, 0, 1, 1]

        }]

December 06, 2011 22:03
User photo
Chris

Here's an easier repro to illustrate the problem I'm having.  I created two HighCharts widgets.  One points at the file you reference above here:  http://dl.dropbox.com/u/512939/GB/hc20110725.txt

The other points at the exact same file located in my own public Dropbox folder here: http://dl.dropbox.com/u/8819296/Dashboard/test.txt

Yours renders fine, mine doesn't render (no errors either).

December 07, 2011 00:32
User photo
Derek Scollon

I'm puzzled about something in the geck-o-meter. Is it unable to cope with negative numbers? Using a minimum of -365, a maximum of 177 and a value of -188, I expected the needle to be about a third of the way up but it's right at the bottom on the left of the meter.

 

If geck-o-meter doesn't support negative numbers, is this something which could be added?

December 10, 2011 13:21
User photo
Derek Scollon

See above. This may be a bug in geck-o-meter. If the minimum is negative and the maximum is positive, then any positive value puts the needle in the correct place but a negative value or 0 always puts the needle to the extreme left.

December 10, 2011 13:32
User photo
Ciara
Geckoboard

Hi Derek,

Thanks for bringing this to our attention, it's definitely a little bug and we're working on fixing it. I'll let you know when it is resolved and will display the right thing. Apologies for the difficulty.

Ciara

December 12, 2011 11:12
User photo
Ciara
Geckoboard

@Derek - The Geck-O-Meter can now display negative numbers correctly. Hope this helps you out.

Ciara

February 13, 2012 16:44
User photo
Aleem Mawani

It seems like you can no longer color pie charts anymore, it just uses the default yellow colors, here is the json I'm passing:

 

  {"type":"reverse","percentage":"show","item":[{"value":7,"label":"1.55","colour":"400000AA"},{"value":4,"label":"1.58","colour":"800000AA"},{"value":3,"label":"1.59","colour":"bf0000AA"},{"value":13,"label":"1.59.1","colour":"ff0000AA"},{"value":9,"label":"1.60","colour":"00e00AA"},{"value":87,"label":"1.62","colour":"001c00AA"},{"value":34,"label":"1.70","colour":"002b00AA"},{"value":11,"label":"1.71","colour":"003900AA"},{"value":488,"label":"1.72","colour":"004700AA"},{"value":514,"label":"1.73","colour":"005500AA"},{"value":303,"label":"1.74","colour":"006300AA"},{"value":2645,"label":"1.75","colour":"007100AA"},{"value":1,"label":"100000","colour":"008000AA"},{"value":10,"label":"2.0","colour":"008e00AA"},{"value":306,"label":"2.01","colour":"009c00AA"},{"value":44,"label":"2.02","colour":"00aa00AA"},{"value":625,"label":"2.03","colour":"00b800AA"},{"value":168,"label":"2.04","colour":"00c600AA"},{"value":87,"label":"2.05","colour":"00d500AA"},{"value":15,"label":"2.06","colour":"00e300AA"},{"value":45,"label":"2.07","colour":"00f100AA"},{"value":4565,"label":"2.08","colour":"00ff00AA"}]}
February 16, 2012 22:43
User photo
Ciara
Geckoboard

Hi Aleem,

One of the entries in your script has an invalid Hex value:

{"value":9,"label":"1.60","colour":"00e00AA"},

If you remove or correct this you colours should appear correctly.

Let me know if you have any further difficulties.

Ciara

February 17, 2012 12:36
User photo
rosshere

Would anyone be so kind as to provide a php based example here. I'm having a hard time generating an array structure that works.

March 20, 2012 23:52
Topic is closed for comments