<?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>Groove Labo &#187; javascript</title>
	<atom:link href="http://labo.opengroove.com/blog/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://labo.opengroove.com/blog</link>
	<description>株式会社オープングルーヴの開発者のブログ</description>
	<lastBuildDate>Wed, 30 Jun 2010 03:59:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>続・jQueryでシンプルにExpanderを作る</title>
		<link>http://labo.opengroove.com/blog/2009/08/13/%e7%b6%9a%e3%83%bbjquery%e3%81%a7%e3%82%b7%e3%83%b3%e3%83%97%e3%83%ab%e3%81%abexpander%e3%82%92%e4%bd%9c%e3%82%8b/</link>
		<comments>http://labo.opengroove.com/blog/2009/08/13/%e7%b6%9a%e3%83%bbjquery%e3%81%a7%e3%82%b7%e3%83%b3%e3%83%97%e3%83%ab%e3%81%abexpander%e3%82%92%e4%bd%9c%e3%82%8b/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 13:51:20 +0000</pubDate>
		<dc:creator>morimoto</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://labo.opengroove.com/blog/?p=344</guid>
		<description><![CDATA[morimotoです。

前回の「jQueryでシンプルにExpanderを作る」の続編です。

前回作成したものを使ってみて思ったこと、「うーん、いまいち！」

ということで改良してみました。


(function($){
  var options = {
    initCollapse: true,
    bindEvent: 'click',
    collapsedClass: 'collapsed'
  };

  $.fn.simpleExpander = function(target, opts){
    if (opts) { $.extend(options, opts); }
    $(this).addClass('simpleExpander');
    if (options.initCollapse)
        $(this).addClass(options.collapsedClass);
  [...]]]></description>
			<content:encoded><![CDATA[<p>morimotoです。</p>

<p>前回の「jQueryでシンプルにExpanderを作る」の続編です。</p>

<p>前回作成したものを使ってみて思ったこと、「うーん、いまいち！」</p>

<p>ということで改良してみました。</p>

<pre>
(function($){
  var options = {
    initCollapse: true,
    bindEvent: 'click',
    collapsedClass: 'collapsed'
  };

  $.fn.simpleExpander = function(target, opts){
    if (opts) { $.extend(options, opts); }
    $(this).addClass('simpleExpander');
    if (options.initCollapse)
        $(this).addClass(options.collapsedClass);
    return initializeExpander(this, target, options);
  };
  function initializeExpander(trigger, target, options) {
    toggleTarget(trigger, target, options.collapsedClass);
    $(trigger).bind(options.bindEvent, function(){
      $(this).toggleClass(options.collapsedClass);
      toggleTarget(trigger, target, options.collapsedClass);
    });
    return $(trigger);
  }
  function toggleTarget(trigger, target, collapsedClass) {
    if(target) 
      $(trigger).hasClass(collapsedClass) ? 
          $(target).hide() : $(target).show();
  }

})(jQuery);
</pre>

<h3>使い方</h3>

<p><script src="http://labo.opengroove.com/blog/wp-content/uploads/2009/08/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="http://labo.opengroove.com/blog/wp-content/uploads/2009/08/jquery.simpleExpander1.js" type="text/javascript"></script></p>

<h4>expand/collapseする対象をjQueryオブジェクトで指定する</h4>

<h5>Demo</h5>

<div style="border:1px solid #333;padding:1em;">
<p id="expander-test-1" 
style="border:1px solid #666;background-color: #FEE">
クリックすると&#8230;</p>
<div id="test-1">
  <span>朝食にバナナ<b>ボート</b>を食べました。<b>冗談です。</b></span>
</div>
<script type="text/javascript"><!--
$('#expander-test-1').simpleExpander($('#test-1').find('b'));
// --></script>
</div>

<h5>Code</h5>

<pre>
&lt;p id="expander-test-1"  
style="border:1px solid #666;background-color: #FEE"&gt;test 1&lt;/p&gt;
&lt;div id="test-1"&gt;
  &lt;span&gt;朝食にバナナ&lt;b&gt;ボート&lt;/b&gt;を食べました。&lt;b&gt;冗談です。&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;script type="text/javascript"&gt;&lt;!--
$('#expander-test-1').simpleExpander($('#test-1').find('b'));
// --&gt;&lt;/script&gt;
</pre>

<h4>Optionを入れてみる</h4>

<h5>Demo</h5>

<div style="border:1px solid #333;padding:1em;">
<p id="expander-test-2" 
style="border:1px solid #666;background-color: #FEE">マウスを乗せると&#8230;</p>
<div id="test-2">
  <span><b>Expand対象</b>と<b>Expand対象外</b>もselector次第です。</span>
</div>
<script type="text/javascript"><!--
$('#expander-test-2').simpleExpander($('#test-2').find('span b:first'), 
{initCollapse: false, bindEvent: 'mouseover'});
// --></script>
</div>

<h5>Code</h5>

<pre>
&lt;p id="expander-test-2" 
style="border:1px solid #666;background-color: #FEE"&gt;マウスを乗せると...&lt;/p&gt;
&lt;div id="test-2"&gt;
  &lt;span&gt;&lt;b&gt;Expand対象&lt;/b&gt;と&lt;b&gt;Expand対象外&lt;/b&gt;もselector次第です。&lt;/span&gt;
&lt;/div&gt;
&lt;script type="text/javascript"&gt;&lt;!--
$('#expander-test-2').simpleExpander($('#test-2').find('span b:first'), 
{initCollapse: false, bindEvent: 'mouseover'});
// --&gt;&lt;/script&gt;
</pre>

<p>以上、morimotoでした。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://labo.opengroove.com/blog/2009/08/13/%e7%b6%9a%e3%83%bbjquery%e3%81%a7%e3%82%b7%e3%83%b3%e3%83%97%e3%83%ab%e3%81%abexpander%e3%82%92%e4%bd%9c%e3%82%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryでシンプルにExpanderを作る</title>
		<link>http://labo.opengroove.com/blog/2009/08/03/jquery%e3%81%a7%e3%82%b7%e3%83%b3%e3%83%97%e3%83%ab%e3%81%abexpander%e3%82%92%e4%bd%9c%e3%82%8b/</link>
		<comments>http://labo.opengroove.com/blog/2009/08/03/jquery%e3%81%a7%e3%82%b7%e3%83%b3%e3%83%97%e3%83%ab%e3%81%abexpander%e3%82%92%e4%bd%9c%e3%82%8b/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 13:00:53 +0000</pubDate>
		<dc:creator>morimoto</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://labo.opengroove.com/blog/?p=302</guid>
		<description><![CDATA[morimotoです。

「もっと画面をすっきりとしたいな・・・」と思う時に良く使われるのが、閉じたり開いたりするExpand機能かと思います。
そのExpandをするために毎回javascriptを書くのは面倒くさい。

そこで簡単にExpandさせれるようにjQueryでPluginを書いてみました。
（完成しているとはいえませんが。。。）


(function($){
  $.fn.simpleExpander = function(options){
    var target = options.target &#124;&#124; undefined;
    var trigger = options.trigger &#124;&#124; 'click';
    var collapsedClass = options.collapsedClass &#124;&#124; 'collapsed';
    if (typeof(options) == 'string') target = options;
    if (target) {
      $(this).addClass('expander');
  [...]]]></description>
			<content:encoded><![CDATA[<p>morimotoです。</p>

<p>「もっと画面をすっきりとしたいな・・・」と思う時に良く使われるのが、閉じたり開いたりするExpand機能かと思います。
そのExpandをするために毎回javascriptを書くのは面倒くさい。</p>

<p>そこで簡単にExpandさせれるようにjQueryでPluginを書いてみました。
（完成しているとはいえませんが。。。）</p>

<pre>
(function($){
  $.fn.simpleExpander = function(options){
    var target = options.target || undefined;
    var trigger = options.trigger || 'click';
    var collapsedClass = options.collapsedClass || 'collapsed';
    if (typeof(options) == 'string') target = options;
    if (target) {
      $(this).addClass('expander');
      targetToggle(this, target, collapsedClass);
      $(this).bind(trigger, function(){
        $(this).toggleClass(collapsedClass);
        targetToggle(this, target, collapsedClass);
      });
    }
    return this;
  };

  function targetToggle(el, target, collapsedClass) {
    if ($(el).hasClass(collapsedClass)) { 
      $(target).hide(); 
    } else { 
      $(target).show(); 
    }
  }
})(jQuery);
</pre>

<p>使い方</p>

<pre>

&lt;button id="trigger1"&gt;button 1&lt;/button&gt;
&lt;button id="trigger2"&gt;button 2&lt;/button&gt;

&lt;div class="target apple"&gt;window 1&lt;/div&gt;
&lt;div class="target banana"&gt;window 2&lt;/div&gt;
&lt;div class="target grape"&gt;window 3&lt;/div&gt;

&lt;script type="text/javascript"&gt;
$('#trigger1').simpleExpander('div.target');
$('#trigger2').simpleExpander('div.target.banana');
$('div.apple').simpleExpander({target: 'div.target.grape', trigger: 'mouseover'});
&lt;/script&gt;

</pre>

<p>demo</p>

<div style="border:1px solid #333;padding:1em;">
<button id="trigger1">button 1</button>
<button id="trigger2">button 2</button>
<div class="target apple" style="border:1px solid #333;background-color:#eef;margin:0.5em">target apple</div>
<div class="target banana" style="border:1px solid #333;background-color:#efe;margin:0.5em">target banana</div>
<div class="target grape" style="border:1px solid #333;background-color:#fee;margin:0.5em">target grape</div>

<script src="http://labo.opengroove.com/blog/wp-content/uploads/2009/08/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="http://labo.opengroove.com/blog/wp-content/uploads/2009/08/jquery.simpleExpander.js" type="text/javascript"></script>
<script type="text/javascript"><!--
$('#trigger1').simpleExpander('div.target');
$('#trigger2').simpleExpander('div.target.banana');
$('div.apple').simpleExpander({target: 'div.target.grape', trigger: 'mouseover'});
// --></script>
</div>

<p>ボタン１はdiv全てがtoggleします。
ボタン２は真ん中のdivのみtoggleします。
一番上のdivをマウスオーバーすると一番下のdivがtoggleします。</p>

<p>もっとシンプルに作れるのかもしれないですが、こんなのもあるんだなという程度で見ていただくとありがたいです。</p>

<p>以上、morimotoでした。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://labo.opengroove.com/blog/2009/08/03/jquery%e3%81%a7%e3%82%b7%e3%83%b3%e3%83%97%e3%83%ab%e3%81%abexpander%e3%82%92%e4%bd%9c%e3%82%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>flotで描画したグラフにイベント処理を追加する</title>
		<link>http://labo.opengroove.com/blog/2009/07/30/flot%e3%81%a7%e6%8f%8f%e7%94%bb%e3%81%97%e3%81%9f%e3%82%b0%e3%83%a9%e3%83%95%e3%81%ab%e3%82%a4%e3%83%99%e3%83%b3%e3%83%88%e5%87%a6%e7%90%86%e3%82%92%e8%bf%bd%e5%8a%a0%e3%81%99%e3%82%8b/</link>
		<comments>http://labo.opengroove.com/blog/2009/07/30/flot%e3%81%a7%e6%8f%8f%e7%94%bb%e3%81%97%e3%81%9f%e3%82%b0%e3%83%a9%e3%83%95%e3%81%ab%e3%82%a4%e3%83%99%e3%83%b3%e3%83%88%e5%87%a6%e7%90%86%e3%82%92%e8%bf%bd%e5%8a%a0%e3%81%99%e3%82%8b/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 18:18:57 +0000</pubDate>
		<dc:creator>matsushita</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://labo.opengroove.com/blog/?p=246</guid>
		<description><![CDATA[こんにちは。松下です。

開発版のサンプルページで既に紹介されているものもありますが、flotで描画したグラフにイベント処理を追加する方法を紹介します。

flotには、あらかじめマウスのホバーやクリック時のカスタムイベントが定義されており、このカスタムイベントに対してコールバック関数を紐付ければ、独自のイベントを追加することができます。

クリックイベントを追加する

flotでは、”plotclick”というグラフのポイントをクリックした時のカスタムイベントが定義されているので、以下のようなコードを書けば、ポインンクリック時の処理が追加することができます。

$("placeholder").bind("plotclick", function(event, pos, item) {
--略--
});

使用する上での前提条件は、plot描画時のgridオプションのclickableを有効にすること、seriesオプションのpointsを有効にすることです。

option = {
    series: {points:  {show: true}},
    grid: {clickable: true},
    --略--
};

以下に、グラフで描画したポイントで際に、ポイントをハイライトする処理を例示します。

$("#placeholder").bind("plotclick", function (event, pos, item) {
    if (item) {
        plot.highlight(item.series, item.datapoint);
    }
});

クリックすると以下のようにポイントがハイライトします。





windowリサイズにグラフをリロードする

単純に再プロットするなら以下のとおりで、windowリサイズ時に通常と同じように描画する処理をバインドするだけです。

$(window).resize(function() {
    var plot [...]]]></description>
			<content:encoded><![CDATA[<p>こんにちは。松下です。</p>

<p>開発版のサンプルページで既に紹介されているものもありますが、flotで描画したグラフにイベント処理を追加する方法を紹介します。</p>

<p>flotには、あらかじめマウスのホバーやクリック時のカスタムイベントが定義されており、このカスタムイベントに対してコールバック関数を紐付ければ、独自のイベントを追加することができます。</p>

<h2>クリックイベントを追加する</h2>

<p>flotでは、”plotclick”というグラフのポイントをクリックした時のカスタムイベントが定義されているので、以下のようなコードを書けば、ポインンクリック時の処理が追加することができます。</p>

<pre>$("placeholder").bind("plotclick", function(event, pos, item) {
--略--
});</pre>

<p>使用する上での前提条件は、plot描画時のgridオプションのclickableを有効にすること、seriesオプションのpointsを有効にすることです。</p>

<pre>option = {
    series: {points:  {show: true}},
    grid: {clickable: true},
    --略--
};</pre>

<p>以下に、グラフで描画したポイントで際に、ポイントをハイライトする処理を例示します。</p>

<pre>$("#placeholder").bind("plotclick", function (event, pos, item) {
    if (item) {
        plot.highlight(item.series, item.datapoint);
    }
});</pre>

<p>クリックすると以下のようにポイントがハイライトします。</p>

<p style="text-align: center;"><img class="aligncenter" src="http://labo.opengroove.com/blog/wp-content/uploads/2009/07/ピクチャ-2.png" alt="before" width="50" height="36" /></p>

<p style="text-align: center;"><img class="aligncenter" src="http://labo.opengroove.com/blog/wp-content/uploads/2009/07/ピクチャ-11.png" alt="after" width="50" height="36" /></p>

<h3>windowリサイズにグラフをリロードする</h3>

<p>単純に再プロットするなら以下のとおりで、windowリサイズ時に通常と同じように描画する処理をバインドするだけです。</p>

<pre>$(window).resize(function() {
    var plot = $.plot($("#placeholder"), datalist, options);
});</pre>

<p>なぜ、こんな処理を行うかというと、グラフを描画する領域のサイズを固定しない場合、グラフのラベルや判例がずれてしまうからです。以下の画面では、判例を左上に設定したにも関わらず、windowサイズを小さくしたことで判例が右側にずれています。</p>

<p style="text-align: center;"><img class="aligncenter" src="http://labo.opengroove.com/blog/wp-content/uploads/2009/07/ピクチャ-3.png" alt="画面が崩れる" width="263" height="315" /></p>

<p>この問題をリサイズ時に描画処理を行うことで問題を解決できます。</p>

<p>しかしながら、この処理には少し不満に思いました。理由は、再描画を処理的にはcanvasオブジェクトを再作成してデータを描画してといった処理を一からやり直すことになるので、windowサイズが変更されるたびに行う処理として少しコストが高い処理だと思ったからです。</p>

<p>そこで、初期化処理を行うことなくリサイズ処理だけ行うことはできないか、調査してみました。
が、結論からいうとコードの作り上、どうしようもないことがわかりました。
グラフの描画処理は</p>

<pre>var plot = $.plot($("#placeholder"), datalist, options);</pre>

<p>のように行いますが、plot関数実行後に内部で生成したPlotクラスが返却されます。
これを使って、以下のように実行できないか試してみましたが、グラフのリサイズは行われない模様。</p>

<pre>    var plot = $.plot($("#placeholder"), datalist, options);
    plot.setupGrid();
    plot.draw();</pre>

<p>でさらに調べてみると、初期化処理において、canvasWidth、canvasHeightという内部変数を設定しており、グラフの描画処理はこれらの変数に依存していることが分かりました。これらの変数をwindowリサイズ時に再設定すれば良いのですが、これらの変数を外部から書き換える手段、及びタイミングが存在しません。</p>

<p>で苦肉の策ですが、Plotクラスの内部関数であるconstructCanvasでcanvasWidth、canvasHeightを設定する処理を行っているので、これを外部公開するようにflotのコードを修正した上で、以下のコードを実行。</p>

<pre>    var plot = $.plot($("#placeholder"), datalist, options);
    plot.constructCanvas();
    plot.setupGrid();
    plot.draw();</pre>

<p>これはうまく行きました。reloadとかメソッドがあればいいんですが、今のところこの方法と同様にflot自体に手を加える方法しかないようです。</p>

<p>自分がflotを使っていて思ったのが、今回みたいにイベントを追加したりする場合に、今のflotがユーザに公開されている情報（メソッドやフィールド）が必要不十分であること。highlightメソッド、unhighlightメソッドはあるのに、外部からはどこがハイライトされているのか、ハイライトしていないのか分からないとか。
開発版なのでしょうがないのかもしれませんが、グラフライブラリとしては良いものだと思っているので、今後の改善に期待したいと思ってます。</p>

<p>記事を読んでくださった方で、他になにか方法があれば教えてください。</p>
]]></content:encoded>
			<wfw:commentRss>http://labo.opengroove.com/blog/2009/07/30/flot%e3%81%a7%e6%8f%8f%e7%94%bb%e3%81%97%e3%81%9f%e3%82%b0%e3%83%a9%e3%83%95%e3%81%ab%e3%82%a4%e3%83%99%e3%83%b3%e3%83%88%e5%87%a6%e7%90%86%e3%82%92%e8%bf%bd%e5%8a%a0%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jqueryベースのグラフ描画ライブラリFlot</title>
		<link>http://labo.opengroove.com/blog/2009/07/15/jquery%e3%83%99%e3%83%bc%e3%82%b9%e3%81%ae%e3%82%b0%e3%83%a9%e3%83%95%e6%8f%8f%e7%94%bb%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aaflot/</link>
		<comments>http://labo.opengroove.com/blog/2009/07/15/jquery%e3%83%99%e3%83%bc%e3%82%b9%e3%81%ae%e3%82%b0%e3%83%a9%e3%83%95%e6%8f%8f%e7%94%bb%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aaflot/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 04:10:40 +0000</pubDate>
		<dc:creator>matsushita</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://labo.opengroove.com/blog/?p=142</guid>
		<description><![CDATA[Flotってご存知ですか

こんにちは。松下です。

みなさんはFlotというjqueryベースのjavascriptグラフ描画ライブラリををご存知でしょうか？

データ形式はjsonで行うことができ、flashベースのOpenFlashChartのように複雑なことはできないですが、きれいなグラフを簡単に描画することができます。

データのやり取りがjson形式で行うためサーバ側でデータをjsonに加工すれば、あとはライブラリがプロットするだけなので、扱いがかなり楽です。



簡単なHow toをご紹介したいと思います。

まずは簡単に描画してみる

描画の仕方は、flotの描画ライブラリの呼び出し（ $.plot()） 行うだけです。
以下に例を示します。ここでは、第一引数で描画を行う場所、第二引数でデータを設定してライブラリを呼び出しています。

var d1 = [
            [1, 96],
            [2, 89],
            [3, 85],
          [...]]]></description>
			<content:encoded><![CDATA[<h2>Flotってご存知ですか</h2>

<p>こんにちは。松下です。</p>

<p>みなさんはFlotというjqueryベースのjavascriptグラフ描画ライブラリををご存知でしょうか？</p>

<p>データ形式はjsonで行うことができ、flashベースの<a href="http://teethgrinder.co.uk/open-flash-chart/">OpenFlashChart</a>のように複雑なことはできないですが、きれいなグラフを簡単に描画することができます。</p>

<p>データのやり取りがjson形式で行うためサーバ側でデータをjsonに加工すれば、あとはライブラリがプロットするだけなので、扱いがかなり楽です。</p>

<p><img src="http://labo.opengroove.com/blog/wp-content/uploads/2009/07/ピクチャ-1.png" alt="flot sample" /></p>

<p>簡単なHow toをご紹介したいと思います。</p>

<h2>まずは簡単に描画してみる</h2>

<p>描画の仕方は、flotの描画ライブラリの呼び出し（ $.plot()） 行うだけです。
以下に例を示します。ここでは、第一引数で描画を行う場所、第二引数でデータを設定してライブラリを呼び出しています。</p>

<pre>var d1 = [
            [1, 96],
            [2, 89],
            [3, 85],
            [4, 90],
            [5, 87],
            [6, 86],
            [8, 83],
            [9, 86],
         ];
var d2 = [
            [1, 137],
            [2, 135],
            [3, 130],
            [4, 129],
            [5, 120],
            [6, 124],
            [8, 125],
            [9, 126],
         ];

var data_list = [];
data_list[data_list.length] = {label: "low", data:d1};
data_list[data_list.length] = {label: "high", data:d2};

$.plot($("#placeholder"), data_list);</pre>

<p><img src="http://labo.opengroove.com/blog/wp-content/uploads/2009/07/flot_sample1.png" alt="flot sample1" /></p>

<p>棒グラフも描画することが可能です。</p>

<pre>var d1 =  [
        [1950, 2535093],
            [1955, 2770753],
            [1960, 3031931],
            [1965, 3342771],
            [1970, 3698676],
            [1975, 4076080],
            [1980, 4451470],
            [1985, 4855264],
            [1990, 5294879],
            [1995, 5719045],
            [2000, 6124123],
            [2005, 6514751],
            [2010, 6906558],
            [2015, 7295135],
            [2020, 7667090],
            [2025, 8010509],
            [2030, 8317707],
            [2035, 8587050],
            [2040, 8823546],
            [2045, 9025982],
            [2050, 9191287]
        ];

var data_list = [];
data_list[data_list.length] = {label:'total', data:d1};

var options = {
    bars: {
    show: true,
    barWidth: 3,
    align: "center"
  }
};

$.plot($("#bar_placeholder"), data_list, options);</pre>

<p><img src="http://labo.opengroove.com/blog/wp-content/uploads/2009/07/flot_sample5.png" alt="棒グラフ" /></p>

<h2>判例の位置を変える</h2>

<p>flotのコードをみると、判例で指定可能なオプションは以下のようになっています。
このうち、position、及びcontainerオプションを使うことで位置の変更をすることが可能です。
positionオプションは、</p>

<pre>legend: {
    show: boolean,
    labelFormatter: null or (fn: string -&gt; string),
    labelBoxBorderColor: color,
    noColumns: number,
    position: "ne" or "nw" or "se" or "sw",
    margin: number of pixels,
    backgroundColor: null or color,
    backgroundOpacity: number in 0.0 - 1.0,
    container: null or jQuery object
}</pre>

<p>positionオプションは、凡例を領域内で任意の位置に表示ためのオプションで、以下の内容に設定することが可能です。</p>

<ul>
    <li>neが右上</li>
    <li>nwが左上</li>
    <li>seが右下</li>
    <li>swが左下</li>
</ul>

<p>コードでは以下のようにして指定します。このコードでは、左下に配置しています。</p>

<pre>var data list = [];
.
.
[略]
.
.

var options = {
    legend:{position:'sw'}
};
$.plot($("#placeholder"), data_list, options);</pre>

<p><img src="http://labo.opengroove.com/blog/wp-content/uploads/2009/07/flot_sample2.png" alt="判例の位置を変える" /></p>

<p>containerオプションは、判例を表示するコンテナでデフォルトnullで、グラフの描画領域内に表示されます。
containerオプションを使うことで判例の表示をグラフ描画領域外に配置することが可能です。</p>

<p>以下にコードサンプルを示します。</p>

<pre>var data list = [];
.
.
[略]
.
.
var options = {
    legend:{container: $("#container")}
};
$.plot($("#placeholder"), data_list, options);</pre>

<p><img src="http://labo.opengroove.com/blog/wp-content/uploads/2009/07/flot_sample3.png" alt="描画領域外に判例を表示する" /></p>

<p>最後にもう一つ。noColumnsオプションを指定することで、横並びにしたい判例の数を指定できます。
デフォルトでは、判例はすべて縦方向に展開されますが、このオプションを指定することで、同じ行に２個、３個と表示することが可能になります。</p>

<p>以下にコードサンプルを示します。ここでは、１行に２個判例を表示するように設定しています。</p>

<pre>var data list = [];
.
.
[略]
.
.
var options = {
    legend:{noColumns: 2}
};
$.plot($("#placeholder"), data_list, options);</pre>

<p><img src="http://labo.opengroove.com/blog/wp-content/uploads/2009/07/flot_sample4.png" alt="判例を横並びにする" /></p>

<p>いかがでしょうか。ブラウザでグラフを扱いたい方は是非おすすめします。</p>

<p>機会があれば、その他のいろいろな使い方をご紹介したいと思います。</p>

<ul>
    <li><a href="http://code.google.com/p/flot/">Flotのプロジェクトページ</a></li>
    <li><a href="http://code.google.com/p/extflot/wiki/ProjectSummaryJa">ext flot</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://labo.opengroove.com/blog/2009/07/15/jquery%e3%83%99%e3%83%bc%e3%82%b9%e3%81%ae%e3%82%b0%e3%83%a9%e3%83%95%e6%8f%8f%e7%94%bb%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aaflot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>newjsでjavascriptのテスト</title>
		<link>http://labo.opengroove.com/blog/2008/03/21/newjs%e3%81%a7javascript%e3%81%ae%e3%83%86%e3%82%b9%e3%83%88/</link>
		<comments>http://labo.opengroove.com/blog/2008/03/21/newjs%e3%81%a7javascript%e3%81%ae%e3%83%86%e3%82%b9%e3%83%88/#comments</comments>
		<pubDate>Fri, 21 Mar 2008 02:41:06 +0000</pubDate>
		<dc:creator>sugimoto</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://labo.opengroove.com/blog/index.php/2008/03/21/newjs%e3%81%a7javascript%e3%81%ae%e3%83%86%e3%82%b9%e3%83%88/</guid>
		<description><![CDATA[sugimotoです。

javascriptのテストツールというと、seleniumが有名ですが、unit testのツールは使ったことがありませんでした。
先日、newjsというツール(javascrpt project generatorと言うことです。)のことを知り、使ってみました。

こちらでも紹介されていますが、newjsはjavascriptのプロジェクト管理を自動化するための管理コマンドを提供する、Rubyベースのパッケージです。


    プロジェクトの生成
    プロジェクト管理ディレクトリ自動作成
    ドキュメントの雛形
    テストフレームワーク
    リリース管理
    デプロイの自動化
    管理用ホームページの管理


など、オープンソースのjavascriptライブラリの管理を目的として利用できます。

使い方: (newjsのプロジェクトページを参照)

1. インストール

インストールはRubyGemでします。

&#62; gem install newjs

簡単ですね。

2. プロジェクトの作成

これも簡単です。

&#62; newjs -a "sugimto" -e "xxxx@opengroove.com" -t "GrooveLabo"  
        -u [...]]]></description>
			<content:encoded><![CDATA[<p>sugimotoです。</p>

<p>javascriptのテストツールというと、<a href="http://selenium.openqa.org/" title="selenium" target="_blank">selenium</a>が有名ですが、unit testのツールは使ったことがありませんでした。
先日、<a href="http://newjs.rubyforge.org/" title="newjs" target="_blank">newjs</a>というツール(javascrpt project generatorと言うことです。)のことを知り、使ってみました。</p>

<p><a href="http://www.moongift.jp/2008/02/newjs/" target="_blank">こちら</a>でも紹介されていますが、newjsはjavascriptのプロジェクト管理を自動化するための管理コマンドを提供する、Rubyベースのパッケージです。</p>

<ul class="normal">
    <li>プロジェクトの生成</li>
    <li>プロジェクト管理ディレクトリ自動作成</li>
    <li>ドキュメントの雛形</li>
    <li>テストフレームワーク</li>
    <li>リリース管理</li>
    <li>デプロイの自動化</li>
    <li>管理用ホームページの管理</li>
</ul>

<p>など、オープンソースのjavascriptライブラリの管理を目的として利用できます。</p>

<p><strong>使い方: </strong>(<a href="http://newjs.rubyforge.org/" target="_blank">newjsのプロジェクトページ</a>を参照)</p>

<h3>1. インストール</h3>

<p>インストールはRubyGemでします。</p>

<pre>&gt; gem install newjs</pre>

<p>簡単ですね。</p>

<h3>2. プロジェクトの作成</h3>

<p>これも簡単です。</p>

<pre>&gt; newjs -a "sugimto" -e "xxxx@opengroove.com" -t "GrooveLabo"  
        -u "http://xxx.opengroove.com/" -V "0.1.0"</pre>

<p>オプションの意味は以下の通りです。</p>

<ul class="normal">
    <li>-a : プロジェクト管理者の名前</li>
    <li>-e :  プロジェクト管理者のメールアドレス</li>
    <li>-t :プロジェクト名</li>
    <li>-u : プロジェクトホームページのURL</li>
    <li>-V : プロジェクトの最初のバージョン番号</li>
</ul>

<p>これで自動的にプロジェクト管理用のディレクトリとファイルが作成されます。</p>

<p>javascriptのソースは src/[project-name].js に作成されたファイルを変更して管理します。</p>

<h3>3. テスト</h3>

<p>テストは<a href="http://jsunittest.com/" target="_blank">jsunittest</a>というフレームワークを使います。</p>

<pre>&gt; script/generate unit_test [test_name] [project_name]</pre>

<p>とすると、test/unit/[test_name]_test.html にテスト用のHTMLが作成されます。
[test_name]_test.html:</p>

<pre>
new Test.Unit.Runner({
testXXXX: function() { with(this) {
// ここにテストコードを書く
}},
}, {testLog: "testlog"});</pre>

<p>のようにしてunit testを書いて、[test_name]_test.html をブラウザで開くと、テストが実行され、テスト結果が表示されます。
<a href="http://labo.opengroove.com/blog/wp-content/uploads/2008/03/labo-newjs.png" title="unit test"><img src="http://labo.opengroove.com/blog/wp-content/uploads/2008/03/labo-newjs.png" alt="unit test" /></a></p>

<ul>
    <li>newjs : <a href="http://newjs.rubyforge.org/">プロジェクトのホームページ</a></li>
    <li>jsunittest : <a href="http://jsunittest.com/">プロジェクトのホームページ</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://labo.opengroove.com/blog/2008/03/21/newjs%e3%81%a7javascript%e3%81%ae%e3%83%86%e3%82%b9%e3%83%88/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
