<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Overfloater &#187; version</title>
	<atom:link href="http://blog.thejit.org/category/version/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thejit.org</link>
	<description>Data Visualization, JavaScript and Computer Science related stuff</description>
	<lastBuildDate>Sun, 18 Jul 2010 13:38:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The JavaScript InfoVis Toolkit 2.0 is out!</title>
		<link>http://blog.thejit.org/2010/06/28/the-javascript-infovis-toolkit-2-0-is-out/</link>
		<comments>http://blog.thejit.org/2010/06/28/the-javascript-infovis-toolkit-2-0-is-out/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 12:01:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[2.0]]></category>
		<category><![CDATA[JavaScript information visualization toolkit (JIT)]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://blog.thejit.org/?p=1492</guid>
		<description><![CDATA[After more than a year of hard work I&#8217;m proud to announce the release of the JavaScript InfoVis Toolkit 2.0!
What&#8217;s the JavaScript InfoVis Toolkit?
The JavaScript InfoVis Toolkit provides web standard based tools to create interactive data visualizations for the Web.
What&#8217;s new in this version?
This version introduces radical new features, an API redesign and new visualizations. [...]]]></description>
			<content:encoded><![CDATA[<p>After more than a year of hard work I&#8217;m proud to announce the release of the <a target="_blank" href="http://thejit.org">JavaScript InfoVis Toolkit 2.0</a>!</p>
<h4>What&#8217;s the JavaScript InfoVis Toolkit?</h4>
<p>The <a target="_blank" href="http://thejit.org">JavaScript InfoVis Toolkit</a> provides web standard based tools to create interactive data visualizations for the Web.</p>
<h4>What&#8217;s new in this version?</h4>
<p>This version introduces radical new features, an API redesign and new visualizations. If you don&#8217;t want to read the whole article and just want to play with the examples you can go to <a href="http://thejit.org/demos/" target="_blank">the demos page</a>.</p>
<h4>New Visualizations</h4>
<p>With this version of the Toolkit the number of available visualizations has doubled. Some of the new visualizations are the AreaChart, BarChart and PieChart, which were described in more detail in <a href="http://blog.thejit.org/2010/04/24/new-javascript-infovis-toolkit-visualizations/">this article</a>. I&#8217;ve also added Sunburst and Force-Directed visualizations. I wrote about these visualizations before <a href="http://blog.thejit.org/2009/10/05/sunburst-visualization/">here</a> and <a href="http://blog.thejit.org/2009/09/30/force-directed-layouts/">here</a>. I also want to thank <a href="http://quux.com.ar" target="_blank">Pablo Flouret</a>, who contributed most of the code for the Icicle visualization, also a new addition to the toolkit.</p>
<p>You can play now with these visualizations at the <a href="http://thejit.org/demos/">demos page</a>!</p>
<h4>Features common to all visualizations</h4>
<p>I&#8217;ve also enhanced all visualizations with new configuration options that enable new features. These features are:</p>
<ul>
<li><em>Panning</em> and <em>zooming</em> across all visualizations.</li>
<li>A new <em>event system</em> that enables you to attach events to DOM elements or to native canvas nodes and also add support for <em>touch events</em>, <em>drag and drop</em>, etc.</li>
<li><em>Complex animations</em> have the ability to animate <b>any style property</b> of a node, edge or label. There is also support for animating canvas specific properties like shadowBlur, shadowColor, fillStyle, etc.</li>
</ul>
<h4>A new TreeMap visualization</h4>
<p>The underlying rendering functions in the TreeMap visualization have changed. While in prior versions of the Toolkit the TreeMap was DOM-based, this new version renders the TreeMap entirely in Canvas. This enables you to add custom nodes of any shape or nature you like (can be images, circles, polygons) and also to take advantage of the new animation engine of the toolkit to add smooth transitions for the drill-down. These new things can be tested at the TreeMap section in the <a target="_bank" href="http://thejit.org/demos/">demos page</a>.</p>
<h4>API Redesign</h4>
<p>The old API was too low level. Before creating any visualization you had to manually create a Canvas widget and pass it as parameter to the visualization class. Also, many other parameters like width and height of the canvas were required. For Background canvases the API had a couple of flaws, and it wasn&#8217;t clear how to use it either. Many of these things have been solved with the new API design. The Canvas class became an inner class implicitly created when making a new visualization. Width and height of the canvas are set to the container&#8217;s <em>offsetWidth</em> and <em>offsetHeight</em> if they&#8217;re not provided, and background canvases are easier to attach to the visualization.<br />
Most of all, there is now a single global object in the library: <b>$jit</b>. This declares the namespace for the library and makes sure you won&#8217;t have conflicts with <em>any other JavaScript library</em>.</p>
<h4>A new Website</h4>
<p>Last but not least, I worked on a <a href="http://thejit.org/">website redesign</a>, taking advantage of the new HTML5/CSS3 features supported by major browsers. There&#8217;s also a detailed <a href="http://thejit.org/docs/">documentation page</a> to get you started.</p>
<h4>It&#8217;s alpha</h4>
<p>Finally I&#8217;d like to say that this is an <em>alpha</em> version. There are lots of known bugs and <b>I&#8217;m counting on you</b> to <a href="http://github.com/philogb/jit">report bugs, send fixes, and collaborate in any aspect of the toolkit</a>.</p>
<h4>Thanks</h4>
<p>To <a href="http://quux.com.ar">Pablo Flouret</a> for contributing code to the toolkit, and to my wife, <a href="http://sourberries.tumblr.com/">Luz Caballero</a> for making me happy.</p>
<p>Now go get the <a href="http://thejit.org/">Toolkit</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thejit.org/2010/06/28/the-javascript-infovis-toolkit-2-0-is-out/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Version 1.1.3</title>
		<link>http://blog.thejit.org/2009/08/24/version-113/</link>
		<comments>http://blog.thejit.org/2009/08/24/version-113/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 17:44:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[1.1]]></category>
		<category><![CDATA[JavaScript information visualization toolkit (JIT)]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[1.1.3]]></category>
		<category><![CDATA[JIT]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://blog.thejit.org/?p=1065</guid>
		<description><![CDATA[I just tagged the JavaScript InfoVis Toolkit with version 1.1.3. It&#8217;s been some time since the last release, and I wanted to use this post to make a summary of the changes and to describe some of the new features that have been added to the library.
I&#8217;ll start with the new features:
SpaceTree: SwitchAlignment
I added some [...]]]></description>
			<content:encoded><![CDATA[<p>I just <a href="http://github.com/philogb/jit">tagged</a> the <a href="http://thejit.org">JavaScript InfoVis Toolkit</a> with version 1.1.3. It&#8217;s been some time since the last release, and I wanted to use this post to make a summary of the changes and to describe some of the new features that have been added to the library.</p>
<p>I&#8217;ll start with the new features:</p>
<h4 id="spacetree-switchalignment">SpaceTree: SwitchAlignment</h4>
<p>I added some new global configuration properties to the SpaceTree: <em>align</em> and <em>indent</em>.</p>
<p><em>Align</em> sets the alignment of the tree to <em>center</em>, <em>left</em> and <em>right</em>:</p>
<p><img src="/wp-content/spacetree-center.png" style="border: 1px solid cyan; margin: 7px auto; padding: 1px;" /><br />
<img src="/wp-content/spacetree-left.png" style="border: 1px solid cyan; margin: 7px auto; padding: 1px;" /><br />
<img src="/wp-content/spacetree-right.png" style="border: 1px solid cyan; margin: 7px auto; padding: 1px;" /></p>
<p>The <em>indent</em> parameter sets an offset between a parent and its children when the alignment is <em>left</em> or <em>right</em>. You can also use the <a href="http://thejit.org/docs/files/Spacetree-js.html#ST.switchAlignment">switchAlignment</a> method for changing the alignment of the tree with an animation.</p>
<h4 id="spacetree-multiple-nodes">SpaceTree: Multiple nodes in path</h4>
<p>I added two new methods to the SpaceTree: <a href="http://thejit.org/docs/files/Spacetree-js.html#ST.addNodeInPath">addNodeInPath</a> and <a href="http://thejit.org/docs/files/Spacetree-js.html#ST.clearNodesInPath">clearNodesInPath</a>.<br />
These two methods allow you to add a node to the &#8220;selected-nodes&#8221; path. When a node belongs to the &#8220;selected-nodes&#8221; path it remains always visible (as in always expanded).</p>
<p>I made this small video to show the feature:</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/wGwyQVFYeV4&#038;hl=en&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/wGwyQVFYeV4&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<h4 id="spacetree-multitree">SpaceTree: MultiTree</h4>
<p>I added a SpaceTree configuration property called <em>multitree</em>.<br />
If <em>multitree=true</em>, the visualization will search for the <em>$orn</em> data property in each node and display the subtrees according to their orientation.</p>
<p>In this example I set <em>multitree=true</em> and set <em>$orn=&#8217;left&#8217;</em> for some nodes and <em>$orn=&#8217;right&#8217;</em> for others. This way I create a partition of the tree:</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/6BxJDfJ3w2o&#038;hl=en&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/6BxJDfJ3w2o&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p>I also use the <a href="http://thejit.org/docs/files/Spacetree-js.html#ST.setRoot">setRoot</a> method to set the clicked node as root for the visualization. This way the clicked node is centered and a centrifugal view from that node is drawn.</p>
<h4>Bug Fixes</h4>
<p>I&#8217;ve been fixing a couple of bugs also, most of them have to do with Treemaps:</p>
<ul>
<li><a href="http://github.com/philogb/jit/issues/closed#issue/8">Refreshing treemaps keeps old tooltips over</a> <em>(Thanks <a href="http://github.com/arielkempf">Ariel Kempf</a>)</em></li>
<li><a href="http://github.com/philogb/jit/issues/closed#issue/6">Treemap: change box filling order from towards top right, to towards bottom right</a> <em>(Thanks <a href="http://github.com/timbunce">Tim Bunce</a>)</em></li>
<li><a href="http://github.com/philogb/jit/issues/closed#issue/5">Treemap: patch to fix gaps between boxes</a> <em>(Thanks <a href="http://github.com/timbunce">Tim Bunce</a>)</em></li>
<li><a href="http://github.com/philogb/jit/issues/closed#issue/4">Treemap: avoid creating boxes too small to see</a> <em>(Thanks <a href="http://github.com/timbunce">Tim Bunce</a>)</em></li>
<li><a href="http://github.com/philogb/jit/issues/closed#issue/3">Add a boolean to the fx.clearLabels method for clearing all labels regardless of any condition.</a></li>
</ul>
<p>I also want to thank <a href="http://weltermann17.wordpress.com/">Guido Schmidt</a> for his interest in the library and work on the GWT JIT component.</p>
<p>There&#8217;s also been some JIT development for <a href="http://grails.org/plugin/jit">Grails</a> done by <a href="http://www.odelia-technologies.com/">Bertrand Goetzmann</a>.</p>
<p>Anyway, things are looking good! <img src='http://blog.thejit.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thejit.org/2009/08/24/version-113/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The JavaScript InfoVis Toolkit 1.1 is Out!</title>
		<link>http://blog.thejit.org/2009/06/02/the-javascript-infovis-toolkit-11-is-out/</link>
		<comments>http://blog.thejit.org/2009/06/02/the-javascript-infovis-toolkit-11-is-out/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 22:53:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[1.1]]></category>
		<category><![CDATA[JavaScript information visualization toolkit (JIT)]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[information visualization]]></category>
		<category><![CDATA[JIT]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://blog.thejit.org/?p=891</guid>
		<description><![CDATA[After several months of hard work I can finally announce version 1.1 of the JavaScript InfoVis Toolkit.
What&#8217;s the JavaScript InfoVis Toolkit?
The JavaScript InfoVis Toolkit provides tools for creating Interactive Data Visualizations for the Web.
What&#8217;s new in this version?

A new project page where you can access all things related to this library: documentation, demos, tutorials, this [...]]]></description>
			<content:encoded><![CDATA[<p>After several months of hard work I can finally announce version 1.1 of the <a href="http://thejit.org">JavaScript InfoVis Toolkit</a>.</p>
<h4>What&#8217;s the JavaScript InfoVis Toolkit?</h4>
<p>The <a href="http://thejit.org">JavaScript InfoVis Toolkit</a> provides tools for creating Interactive Data Visualizations for the Web.</p>
<h4>What&#8217;s new in this version?</h4>
<ul>
<li>A new <a href="http://thejit.org">project page</a> where you can access all things related to this library: <a href="http://thejit.org/docs/files/Core-js.html">documentation</a>, <a href="http://thejit.org">demos</a>, tutorials, <a href="http://blog.thejit.org">this blog</a>, etc.</li>
<li>A complete <a href="http://thejit.org/docs/files/Core-js.html">API documentation</a> generated with Natural Docs, with some Narrative Documentation and Syntax Highlighted Code Examples.</li>
<li>A <a href="http://thejit.org/demos">Demos</a> page where you can find some interactive library examples and you can browse through the examples code.</li>
<li>The <a href="http://thejit.org">JavaScript InfoVis Toolkit</a> is now hosted at <a href="http://github.com/philogb/jit/tree/master">GitHub</a>, so you can fork it and do whatever you like with it. You can also report bugs with the new <a href="http://github.com/philogb/jit/issues">issue tracker.</a></li>
</ul>
<p><b>Code-Related</b></p>
<ul>
<li>The library has been split into <a href="http://github.com/philogb/jit/tree/85ffb5383a3d1adf675e62d139011f96a1793999/Source"><b>modules</b></a> for code reuse.</li>
<li>All visualizations are packaged in the same file. You can create multiple instances of any visualization. Moreover, you can <b>combine</b> and <b>compose</b> visualizations. If you want to know more take a look at the <em>Advanced</em> <a href="http://thejit.org/demos">Demos</a>.</li>
<li>
This Toolkit is <b>library agnostic</b>. This means that you can combine this toolkit with your favorite DOM/Events/Ajax framework such as Prototype, MooTools, ExtJS, YUI, JQuery, etc.
</li>
<li>
You can <b>extend</b> this library in many ways by adding or overriding class methods. The JavaScript InfoVis Toolkit has a robust (and private) class system, heavily inspired by MooTools&#8217;, that allows you to implement new methods in the same class without having to define any new Class extension. By creating mutable classes you can add new custom Node and Edge rendering functions pretty easily.
</li>
<li>
<b>Custom</b> visualizations are created by adding or changing Node/Edge colors, shapes, rendering functions, etc. You can also implement many controller methods that are triggered at different stages of the animation, like <em>onBefore/AfterPlotLine</em>, <em>onBefore/AfterCompute</em>, <em>onBefore/AfterPlotNode</em>, <em>request</em>, etc.<br />
You can also add new Animation transitions like <em>Elastic</em> or <em>Back</em> with <em>easeIn/Out</em> transitions.<br />
If you want to know more about these features please take a look at the <a href="http://thejit.org/demos">Demos</a> code.
</li>
</ul>
<p>As you can see, this new version has been built with four concepts/goals in mind: Modularity, Customization, Composition and Extensibility. I already explained some of these things in the <a href="http://blog.thejit.org/2009/05/21/more-about-the-javascript-infovis-toolkit-11/">previous post</a>.</p>
<p>Hope you enjoy it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thejit.org/2009/06/02/the-javascript-infovis-toolkit-11-is-out/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>A new Canvas Element</title>
		<link>http://blog.thejit.org/2009/01/12/a-new-canvas-element/</link>
		<comments>http://blog.thejit.org/2009/01/12/a-new-canvas-element/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 22:45:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript information visualization toolkit (JIT)]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[javascript canvas version]]></category>

		<guid isPermaLink="false">http://blog.thejit.org/?p=274</guid>
		<description><![CDATA[A couple of days ago I released version 1.0.8a of the JavaScript InfoVis Toolkit, that introduces some API changes and nice features.
This version focus mainly on two things:

A more stable and usable Canvas class.
Finishing last features included in the Spacetree, Treemap and RGraph InfoVis papers.

I&#8217;m quite happy with this version of the library, since it [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of days ago I released version <a href="http://thejit.org">1.0.8a</a> of the JavaScript InfoVis Toolkit, that introduces some API changes and nice features.<br />
This version focus mainly on two things:</p>
<ul>
<li>A more stable and usable Canvas class.</li>
<li>Finishing last features included in the Spacetree, Treemap and RGraph InfoVis papers.</li>
</ul>
<p>I&#8217;m quite happy with this version of the library, since it implements all lasting features in my <a href="http://blog.thejit.org/2008/05/20/further-work-on-jit-10a/">TODO list</a>.<br />
This doesn&#8217;t mean much for the library, since I&#8217;m still having lots of ideas for next releases, but at least I finished something I put up to and that makes me happy <img src='http://blog.thejit.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
<h4 id="canvas">Canvas</h4>
<p>I implemented a new <a href="http://blog.thejit.org/wp-content/jit-1.0a/doc/core/files/Canvas-js.html">Canvas</a> class, focusing on performance and usability. </p>
<p>The Canvas class is more like a Canvas Widget, since it creates a cross-browser canvas tag and a label div container, wrapped in a main div element.<br />
This way, labels are relative to the canvas element and not absolute positioned, like they were on previous versions. I&#8217;d like to thank the people in <a href="http://groups.google.com/group/javascript-information-visualization-toolkit/browse_thread/thread/e2ccfc56b51e3610">this thread</a> for providing nice ideas for implementing the Canvas class.</p>
<p>This canvas class makes also the Spacetree visualization cross browser, working perfectly well in IE6+.</p>
<p>Prior to version 1.0.8a, you had to put a canvas tag and a div label container in your html to create a new visualization. From version 1.0.8a this is no longer needed: you just have to include a visualization div container, like this:</p>
<pre name="code" class="html:nogutter:nocontrols">
&lt;div id="infovis"&gt;&lt;/div&gt;
</pre>
<p>A simple canvas instantiation could be something like this:</p>
<pre name="code" class="js:nogutter:nocontrols">
      //Create a new canvas instance.
      var canvas = new Canvas('mycanvas', {
         //Where to inject canvas. Any HTML container will do.
         'injectInto':'infovis',
         //Set width and height, default's to 200.
         'width': 900,
         'height': 500,
        //Set canvas styles.
        'styles': {
            'fillStyle': '#ccb',
            'strokeStyle': '#ccb'
        }
      });
</pre>
<p>The first parameter in the canvas constructor is the id of the canvas widget.<br />
This id will be the main wrapper div id, and it will serve as prefix for the ids of the other DOM elements created.<br />
The second parameter is a canvas configuration object. Some of the object&#8217;s properties are:</p>
<ul>
<li><b>injectInto</b>: The id of the div where you want to inject the canvas widget</li>
<li><b>width, height</b>: Width and height of the canvas widget. Default&#8217;s to 200</li>
<li><b>styles</b>: an object containing specific canvas styles. If you want to know more about canvas styles you can read <a href="https://developer.mozilla.org/en/Canvas_tutorial/Applying_styles_and_colors">this</a> article.
</ul>
<p>The html generated by this call will be appended in the div container (#infovis) previously defined:</p>
<pre name="code" class="html:nogutter:nocontrols">
&lt;div id="infovis"&gt;
  &lt;div id="mycanvas" style="position:relative;"&gt;
    &lt;canvas id="mycanvas-canvas" width=900 height=500
    style="position:absolute; top:0; left:0; width:900px; height:500px;" /&gt;
    &lt;div id="mycanvas-label"
    style="overflow:visible; position:absolute; top:0; left:0; width:900px; height:0px"&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Notice how the Canvas id is used as the id of the main div container and also as prefix for the actual canvas element and the div label container element.<br />
If we were using the Spacetree in IE, we could use an extra backgroundColor parameter as IE hack, since excanvas <a href="http://groups.google.com/group/google-excanvas/browse_thread/thread/3844be27fc3f525f">does not support clipping paths</a>, which are used by the Spacetree visualization:</p>
<pre name="code" class="js:nogutter">
      //Create a new canvas instance.
      var canvas = new Canvas('mycanvas', {
         //Where to inject canvas. Any HTML container will do.
         'injectInto':'infovis',
         //Set width and height, default's to 200.
         'width': 900,
         'height': 500,
         //Set a background color in case the browser
         //does not support clearing a specific area.
        'backgroundColor': '#222',
        //Set canvas styles.
        'styles': {
            'fillStyle': '#ccb',
            'strokeStyle': '#ccb'
        }
      });
</pre>
<p>We can define also a background Canvas.<br />
Take for example the RGraph example, in which <a href="http://blog.thejit.org/wp-content/jit-1.0a/examples/rgraph.html">we plot concentric circles as background for the visualization</a>.<br />
Prior to version 1.0.8a, the background was rendered at each frame, since at each frame of an animation the canvas is fully cleared to plot the graph&#8217;s next position. This wasn&#8217;t very good for performance.</p>
<p>Defining a background canvas was the sanest choice. That way the background is rendered only once:</p>
<pre name="code" class="js:nogutter">
  //Create a new canvas instance.
  var canvas = new Canvas('mycanvas', {
    //Where to inject the canvas. Any div container will do.
    'injectInto':'infovis',
    //width and height for canvas. Default's to 200.
    'width': 900,
    'height':500,
    //Canvas styles
    'styles': {
        'fillStyle': '#ccddee',
        'strokeStyle': '#772277'
    },
    //Add a background canvas for plotting
    //concentric circles.
    'backgroundCanvas': {
        //Add Canvas styles for the bck canvas.
      'styles': {
            'fillStyle': '#444',
            'strokeStyle': '#444'
        },
        //Add the initialization and plotting functions.
        'impl': {
            'init': $empty,
            'plot': function(canvas, ctx) {
                var times = 6, d = Config.levelDistance;
                var pi2 = Math.PI*2;
                for(var i=1; i<=times; i++) {
                    ctx.beginPath();
                    ctx.arc(0, 0, i * d, 0, pi2, true);
                    ctx.stroke();
                    ctx.closePath();
                }
            }
        }
    }
 });
</pre>
<p>The background canvas created will have <em>mycanvas-bkcanvas</em> as id.<br />
For more information about the canvas class you can check its <a href="http://blog.thejit.org/wp-content/jit-1.0a/doc/core/files/Canvas-js.html">object reference</a>, the examples provided with the <a href="http://blog.thejit.org/wp-content/jit.zip" target="_blank">library</a> and the updated quick tutorials which you can find in the <a href="http://thejit.org/#documentation">documentation</a>.</p>
<h4>Treemap</h4>
<p>I implemented the <em>Strip</em> layout for the Treemap, in addition to the <em>Squarified</em> and <em>Slice and Dice</em> layout algorithms provided in previous versions of the library.<br />
I updated the <a href="http://blog.thejit.org/wp-content/jit-1.0a/examples/treemap.html">treemap example</a> to impement different tiling algorithms. Use the dropdown box at the left of the screen to change the current layout.</p>
<p>Why another tiling algorithm?<br />
Well, as the <a href="http://en.wikipedia.org/wiki/Treemap#The_tiling_algorithm">Wikipedia explains</a>:<br />
<em>To create a treemap, one must define a tiling algorithm, that is, a way to divide a rectangle into sub-rectangles of specified areas. Ideally, a treemap algorithm would create rectangles of aspect ratio close to one; would preserve some sense of the ordering of input data; and would change only slowly when the underlying data changes slowly. Unfortunately, these properties have an inverse relationship.</em></p>
<p>The Strip tiling algorithm provides a good compromise between order, stability and aspect ratio values.<br />
More precisely, the three techniques implemented in the <a href="http://thejit.org">JIT</a> can be classified as follows:</p>
<ul>
<li><b>Slice and Dice</b>: Ordered, very high aspect ratios, stable</li>
<li><b>Squarified</b>: Unordered, lowest aspect ratios, medium stability</li>
<li><b>Strip</b>: Ordered, medium aspect ratios, medium stability</li>
</ul>
<p>So the Strip algorithm is a good complement to the tiling algorithms provided.</p>
<h4>Spacetree</h4>
<p>I implemented two new layouts for the Spacetree, <em>bottom</em> and <em>right</em> layouts.<br />
You can change the Spacetree layouts by using the dropdown box at the left of the <a href="http://blog.thejit.org/wp-content/jit-1.0a/examples/spacetree.html">visualization</a>.</p>
<p>The bottom layout could be pretty useful for making family trees or things like that <img src='http://blog.thejit.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />
Anyway, another good thing of the Spacetree is that it works for IE6+ now (thanks to the new Canvas implementation).<br />
Some cleanup regarding the plotting algorithms and how labels were created was done, please check the <a href="http://blog.thejit.org/2008/05/07/st-quick-tutorial/">ST quick tutorial</a> to understand exactly what changed.</p>
<h4>RGraph</h4>
<p>I implemented the <em>second animation constraint</em> mentioned in the <a href="http://bailando.sims.berkeley.edu/papers/infovis01.htm">RGraph</a> paper: <b>child ordering</b>.<br />
This constraint decreases edge crossing during animations, making animations more intuitive and graspable by the viewer.<br />
The child ordering constraint consists in mantaining child ordering for the parent of the clicked node, that way we can decrease the edge crossing cases during animations:</p>
<p><img style="border: 1px solid magenta; padding: 3px; margin: 5px 13px 5px 0; float: left;" src="http://blog.thejit.org/wp-content/scons.png" /></p>
<div style="clear:both"></div>
<p>I didn't make a <a href="http://blog.thejit.org/wp-content/jit-1.0a/examples/rgraph.html">new example</a> for this, but you should see the difference when comparing it with the examples packaged in <a href="http://blog.thejit.org/wp-content/jit-1.0.7a.zip" target="_blank">previous versions of the library</a>.</p>
<h4>Hypertree</h4>
<p>I did some Cleanup of the Hypertree code, and stripped off the Mouse class and the <em>prepareCanvasEvents</em> method.<br />
Those kind of things can be easily implemented with DOM/AJAX frameworks like Mootools or JQuery.<br />
The hypertree example packaged with the library shows a possible workaround for <em>prepareCanvasEvents</em>:</p>
<pre name="code" class="js:nogutter:nocontrols">
  //optional: set an "onclick" event handler on the canvas tag to animate the tree.
  var mycanvas = $('mycanvas');
  var size = canvas.getSize();
  mycanvas.addEvent('click', function(e) {
    var pos = mycanvas.getPosition();
    var s = Math.min(size.width, size.height) / 2;
    ht.move({
      'x':  (e.page.x - pos.x - size.width  / 2) / s,
      'y':  (e.page.y - pos.y - size.height / 2) / s
    });
  });
</pre>
<p>Anyway, that's all for now. Please feel free to file bugs if you spot one.<br />
Remember also that the <a href="http://thejit.org">main project page</a> has links to documentation, google groups, browser support, updated examples and some other things <img src='http://blog.thejit.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thejit.org/2009/01/12/a-new-canvas-element/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weighted nodes, weighted edges</title>
		<link>http://blog.thejit.org/2008/08/05/weighted-nodes-weighted-edges/</link>
		<comments>http://blog.thejit.org/2008/08/05/weighted-nodes-weighted-edges/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 12:55:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript information visualization toolkit (JIT)]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[edge]]></category>
		<category><![CDATA[graph]]></category>
		<category><![CDATA[hypertree]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[rgraph]]></category>
		<category><![CDATA[spacetree]]></category>
		<category><![CDATA[weight]]></category>

		<guid isPermaLink="false">http://blog.thejit.org/?p=20</guid>
		<description><![CDATA[I&#8217;ve been doing some work on the JIT lately, fixing some bugs and adding some new features.
Some important changes to mention are:

A complete refactoring of the Spacetree. That code was not clear. I also binded the ST to the Animation object used by the Hypertree and RGraph. This allows it to have easeIn and easeOut [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been doing some work on the <a href="http://thejit.org" target="_blank">JIT</a> lately, fixing some bugs and adding some new features.<br />
Some important changes to mention are:</p>
<ul>
<li>A complete refactoring of the Spacetree. That code was not clear. I also binded the ST to the Animation object used by the Hypertree and RGraph. This allows it to have <em>easeIn</em> and <em>easeOut</em> transitions. I also updated the <a href="/wp-content/jit-1.0a/doc/core/files/Spacetree-js.html">documentation for this class</a>.<br />
Main functionality is now packaged under the Tree Class, making a good distinction between generic code (say Tree.Util for example) and more specific code (like the Tree.Geometry object, or Tree.Label).<br />
Here&#8217;s the old <a href="/wp-content/jit-1.0a/examples/spacetree.html">example</a> of an &#8220;infinite&#8221; spacetree, done with the &#8220;new code&#8221;.
</li>
<li>
Hypertree and RGraphs can now handle weighted nodes and edges in trees and graphs. The same goes for the Spacetree, although I have not tested that yet. </p>
<p><b>Weighted nodes:</b><br />
This goes only for the RGraph and the Hypertree, since I don&#8217;t see a clear representation of weighted nodes in the Spacetree, and the Treemap already represents weight either with size or color.<br />
Weighted nodes are enabled when setting <em>Config.allowVariableNodeDiameters = <b>true</b></em>.<br />
Remember what a <em>dataset</em> is? A dataset is a reference to the property <em>data</em> of a JSON node representation. There you can store data by appending <em>{ key:&#8217;someKey&#8217;, value:&#8217;someValue&#8217;}</em> objects to the <em>data</em> array property.<br />
The value of the first object of the data property will be taken in account to calculate the nodes diameters. You will also want to specify two properties of the config object, the <em>nodeRangeDiameters</em> property:</p>
<pre name="code" class="js:nogutter:nocontrols">
		//Property: nodeRangeDiameters
		//Diameters range. For variable node weights.
		nodeRangeDiameters: {
			min: 10,
			max: 35
		},
</pre>
<p>Which specifies the specific range of your nodes diameters. Nodes will range from 10px to 35px as default. The other property is the <em>nodeRangeValues</em>:</p>
<pre name="code" class="js:nogutter:nocontrols">
		//Property: nodeRangeValues
		// The interval of the values of the first object of your dataSet.
		// A superset of the values can also be specified.
		nodeRangeValues: {
			min: 1,
			max: 35
		},
</pre>
<p>You&#8217;ll need to specify range values for your first dataset object value. This is all the information we need to know in order to plot a RGraph or Hypertree with weighted nodes. Here&#8217;s an <a href="/wp-content/jit-1.0a/examples/hypertree2.html">example</a> of a K6 Hypergraph with variable node diameters (and weighted edges).</p>
<p><b>A note on usability</b><br />
There&#8217;s an extra property for the Hypertree Config object called <em>Config.transformNodes</em>. When applying a moebius transformation of the tree (that is, when the tree moves), tree nodes and edges change their proportion. This is not a good feature if you&#8217;re planning to add weighted nodes in your Hypertree, since they will be deformed and thus the user won&#8217;t be able to tell which node is bigger than which. You can set this property to false when using weighted nodes on your visualization.</p>
<p><b>Weighted edges</b><br />
Two new methods have been included in the controller object, these are <em>onBeforePlotLine(adj);</em> and <em>onAfterPlotLine(adj);</em>. Both receive an <b>adjacency</b> object, which has the following structure:</p>
<pre name="code" class="js:nogutter:nocontrols">
var adj = {
	nodeFrom: ""/* A node connected with this adjacence */,
	nodeTo: ""/* Other node connected with this adjacence */,
	data: { //An object storing your custom information.
		weight: w
	}
};</pre>
<p>Use the two controller methods to change the canvas <em>lineWidth</em> property or the stroke color (more information on that <a href="http://developer.mozilla.org/en/docs/Canvas_tutorial:Applying_styles_and_colors">here</a>). For example,</p>
<pre name="code" class="js:nogutter:nocontrols">
/* some code... */

 var rgraph= new RGraph(canvas,  {
  	//Use onBeforePlotLine and onAfterPlotLine controller
  	//methods to adjust your canvas lineWidth
  	//parameter in order to plot weighted edges on
  	//your graph. You can also change the color of the lines.
  	onBeforePlotLine: function(adj) {
  			lineW = canvas.getContext().lineWidth;
  			canvas.getContext().lineWidth = adj.data.weight;
  	},

  	onAfterPlotLine: function(adj) {
  			canvas.getContext().lineWidth = lineW;
  	},

/* some other code*/
</pre>
<p><b id="extended-graph-structure">Ok, but how do I store edge weights?</b><br />
The JSON Graph structure has been extended to the following form (notice that the old Graph structure is still accepted).</p>
<pre name="code" class="js:nogutter:nocontrols">
var json = [
{
	"id": "aUniqueIdentifier",
	"name": "usually a nodes name",
	"data": [
	    {key:"some key",       value: "some value"},
		{key:"some other key", value: "some other value"}
	],
	"adjacencies": [
	{
		nodeTo:"aNodeId",
		data: {} //put whatever you want here
	}
	//more objects like these...
	]
} /* ... more nodes here ... */ ];
</pre>
<p><b>JSON Tree structures</b><br />
For JSON Trees is simpler. If you have a Node A and B is a child of A, then store in Bs dataset a property concerning the weight of the edge A-B. These nodes will be stored in the <em>adj</em> object <em>onBeforePlotLine</em> and <em>onAfterPlotLine</em>. You can access them by doing <em>adj.nodeFrom</em> and <em>adj.nodeTo</em>.</p>
<p>Here&#8217;s an <a href="/wp-content/jit-1.0a/examples/rgraph2.html">example</a> of a K6 RGraph with weighted nodes and edges.
</li>
<li>
The last example also shows a new feature for the RGraph, <b>polar interpolation</b>. You will notice that node transitions are different from previous examples. You can change the interpolation by setting <em>Config.interpolation</em> to <em>&#8216;polar&#8217;</em> or <em>&#8216;linear&#8217;</em>. I&#8217;ll make a more detailed explanation for polar interpolation in some other post. If you want to know more about the cool features of the paper inspiring the RGraph, you can see <a href="/2008/06/02/animated-exploration-of-graphs-with-radial-layout-video/">this post</a>.
</li>
<li>
<b>API Changes</b><br />
These features introduced an api change that has already been updated in all tutorials, although I have not checked for errors yet (will do today and/or tomorrow). You should not set the <em>controller</em> property from the ST, RGraph, Treemaps and Hypertree instances. That is,  you can&#8217;t do:</p>
<pre name="code" class="js:nogutter:nocontrols">
var st = new ST(canvas);
st.controller = ; //the controller object
</pre>
<p>Instead, you should do:</p>
<pre name="code" class="js:nogutter:nocontrols">
var st = new ST(canvas, controller);
</pre>
</li>
<li>
I updated all examples packaged with the library, also adding the two K6 examples showed above. Code that depends on the Mootools library (that is, the example files and the Treemap visualization) has been updated to the final <b>1.2</b> version of the <b>Mootools</b> library. This library is shipped as an extra with the JIT.
</li>
</ul>
<p>Special thanks to Rene Becker for pointing bugs and Daniel Herrero for suggesting cool performance improvements.<br />
Remember that you can post any question, suggestion or comment on the <a href="http://groups.google.com/group/javascript-information-visualization-toolkit">JIT google group</a>.</p>
<p><b><a href="/wp-content/jit.zip" target="_blank">Get the library already!</a></b><br />
Bye!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thejit.org/2008/08/05/weighted-nodes-weighted-edges/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Feeding JSON graph structures to the JIT</title>
		<link>http://blog.thejit.org/2008/07/02/feeding-json-graph-structures-to-the-jit/</link>
		<comments>http://blog.thejit.org/2008/07/02/feeding-json-graph-structures-to-the-jit/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 19:49:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript information visualization toolkit (JIT)]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[graph]]></category>
		<category><![CDATA[hypertree]]></category>
		<category><![CDATA[information visualization]]></category>
		<category><![CDATA[JIT]]></category>
		<category><![CDATA[rgraph]]></category>

		<guid isPermaLink="false">http://blog.thejit.org/?p=19</guid>
		<description><![CDATA[Version 1.0.3a of the JIT allows you to load graph structures to the RGraph and Hypertree objects. I chose a different JSON structure for graphs, since JSON tree structures don&#8217;t seem conceptually suitable for this task.
Hypertree and RGraph objects have a new method called loadGraphFromJSON(json [,i]) that takes a graph structure (described below) and optionally [...]]]></description>
			<content:encoded><![CDATA[<p>Version <a href="/wp-content/jit.zip" target="_blank">1.0.3a</a> of the JIT allows you to load graph structures to the RGraph and Hypertree objects. I chose a different JSON structure for graphs, since JSON tree structures don&#8217;t seem conceptually suitable for this task.<br />
Hypertree and RGraph objects have a new method called <b>loadGraphFromJSON(json [,i])</b> that takes a graph structure (described below) and optionally an index to set a particular node as root for the visualization. Please refer to the <a href="/wp-content/jit-1.0a/doc/core/files/RGraph-js.html#RGraph.loadGraphFromJSON" target="_blank">documentation for more information</a>.</p>
<h4>The graph structure</h4>
<p>The JSON graph structure is an array of nodes, each having as properties:</p>
<ul>
<li><b>id</b> a <b>unique</b> identifier for the node.</li>
<li><b>name</b> a node&#8217;s name.</li>
<li><b>data</b> The data property contains a <em>dataset</em>. That is, an array of key-value objects defined by the user. Roughly speaking, this is where you can put some extra information about your node. You&#8217;ll be able to access this information at different stages of the computation of the JIT visualizations by using a controller.
</li>
<li><b>adjacencies</b> An array of strings each representing a nodes id.
</ul>
<p>For example,</p>
<pre name="code" class="js:nogutter:nocontrols">
var json = [
{
	"id": "aUniqueIdentifier",
	"name": "usually a nodes name",
	"data": [
	    {key:"some key",       value: "some value"},
		{key:"some other key", value: "some other value"}
	],
	"adjacencies": ["anotherUniqueIdentifier", "yetAnotherUniqueIdentifier" /* ... */]
} /* ... more nodes here ... */ ];
</pre>
<p>I did a small <a href="/wp-content/jit-1.0a/examples/rgraph2.html" target="_blank">example</a> of a K6 rendered with a RGraph. The JSON graph structure used for this example is:</p>
<div style="height:300px;overflow:scroll;">
<pre name="code" class="js:nogutter:nocontrols">var json= [
    {"id":"node0",
     "name":"node0 name",
     "data":[
        {"key":"some key",
         "value":"some value"},
        {"key":"some other key",
         "value":"some other value"}],
     "adjacencies":["node1","node2","node3","node4","node5"]},
    {"id":"node1",
     "name":"node1 name",
     "data":[
        {"key":"some key",
         "value":"some value"},
        {"key":"some other key",
         "value":"some other value"}],
     "adjacencies":["node0","node2","node3","node4","node5"]},
    {"id":"node2",
     "name":"node2 name",
     "data":[
        {"key":"some key",
         "value":"some value"},
        {"key":"some other key",
         "value":"some other value"}],
     "adjacencies":["node0","node1","node3","node4","node5"]},
    {"id":"node3",
     "name":"node3 name",
     "data":[
        {"key":"some key",
         "value":"some value"},
        {"key":"some other key",
         "value":"some other value"}],
     "adjacencies":["node0","node1","node2","node4","node5"]},
    {"id":"node4",
     "name":"node4 name",
     "data":[
        {"key":"some key",
         "value":"some value"},
        {"key":"some other key",
         "value":"some other value"}],
     "adjacencies":["node0","node1","node2","node3","node5"]},
    {"id":"node5",
     "name":"node5 name",
     "data":[
        {"key":"some key",
         "value":"some value"},
        {"key":"some other key",
         "value":"some other value"}],
     "adjacencies":["node0","node1","node2","node3","node4"]}];
</pre>
</div>
<p>You can post any question at the <a href="http://groups.google.com/group/javascript-information-visualization-toolkit">google group</a> for this project.<br />
Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thejit.org/2008/07/02/feeding-json-graph-structures-to-the-jit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JIT version 1.0.2a</title>
		<link>http://blog.thejit.org/2008/06/08/jit-version-102a/</link>
		<comments>http://blog.thejit.org/2008/06/08/jit-version-102a/#comments</comments>
		<pubDate>Sun, 08 Jun 2008 22:16:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript information visualization toolkit (JIT)]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[version]]></category>

		<guid isPermaLink="false">http://blog.thejit.org/?p=18</guid>
		<description><![CDATA[Just dropping by to say I just released version 1.0.2a of the javascript infovis toolkit. You can also download it from the main page.
It fixes some known bugs on the Spacetree and Hyperbolic Tree visualizations.
I&#8217;d like to thank OpenCRX and Charles D. Aylward for pointing those errors out.
I also used version 1.4 of Natural Docs [...]]]></description>
			<content:encoded><![CDATA[<p>Just dropping by to say I just released <a href="http://blog.thejit.org/wp-content/jit.zip" target="_blank">version 1.0.2a</a> of the javascript infovis toolkit. You can also download it from the <a href="http://thejit.org">main page</a>.<br />
It fixes some known bugs on the Spacetree and Hyperbolic Tree visualizations.<br />
I&#8217;d like to thank <a href="http://www.opencrx.org/">OpenCRX</a> and Charles D. Aylward for pointing those errors out.<br />
I also used version 1.4 of Natural Docs to make the docs. <br />
Please let me know if you find more errors.<br />
Bye! <img src='http://blog.thejit.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thejit.org/2008/06/08/jit-version-102a/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
