Timeline.js

A lightweight javascript library to plot simple graphs.

View the Project on GitHub Phyks/timeline.js

Timeline.js

Timeline.js is a lightweight JS library to plot graphs using SVG. As it uses SVG, you can add event listeners on the plotted graph very easily.

I coded it because I couldn't find any basic JS library to do this, without any external dependencies and extra features. Timeline.js is only 13k once minified, and can be reduced under 10k thanks to obfuscation. Better results may be obtained with a little refactor, but that's enough for me.

Examples

Usage

(See examples for more info. For live examples, see http://phyks.github.io/timeline.js/)

First, you must include the timeline.js or timeline.min.js script.

Then, you need to init the SVG drawing, thanks to SVG.init({'id': 'holder', 'height': '100%', 'width': '100%', 'grid': 'both', 'x_axis': true, 'rounded': false, 'x_callback': false});. The arguments are all optional and are:

Then, you can add as many graphs as you want, thanks to SVG.addGraph(NAME, COLOR); where COLOR must be a valid CSS color. And you can add points thanks to SVG.addPoints(GRAPH_NAME, POINTS);. Points is an array of point objects, which are of the type {'x': ABSCISSA, 'y': ORDINATE, 'label': LABEL}. LABEL is the text to display in the infobox when the mouse is over the point. You can use '%x' and '%y' in labels and they will be automatically replaced by the coordinates. You can also use <sup> and <sub> HTML tags. You can add another (optional) element click which must be a ffunction to bind to onclick event on this point.

Note : You don't have to sort the points inside a same list of points in a SVG.addGraph call. They will be sorted for you. But, if you call SVG.addPoints multiple times, you must sort the points yourself between each call. The script won't do it for you and it will result in weird graphs if you don't do it.

Finally, you can draw the SVG thanks to SVG.draw();.

Other functions

License

* --------------------------------------------------------------------------------
* "THE NO-ALCOHOL BEER-WARE LICENSE" (Revision 42):
* Phyks (webmaster@phyks.me) wrote this file. As long as you retain this notice you
* can do whatever you want with this stuff (and you can also do whatever you want
* with this stuff without retaining it, but that's not cool...). If we meet some 
* day, and you think this stuff is worth it, you can buy me a <del>beer</del> soda 
* in return.
*                                                                       Phyks
* ---------------------------------------------------------------------------------

Known bugs / TODO

Feel free to contribute !

The last three points are easy to implement by refactoring the way the raw points are stored and using a single array for all the graphs.