« RubyでRSSを自作してみよう | メイン | 「Nutch」ですいすい情報収集 (クローリング機能を試す) »

「Timeline」 - スケジュール管理、年表作成だっておてのもの

  はてなブックマークに追加 このエントリを livedoor クリップへ追加

MITの「Smile」プロジェクトが提供する「Timeline」ライブラリを利用して、スケジュール表や年表など(以下ではまとめて年表と呼ぶ)をつくる方法を紹介します。


「Smile」はJavaScriptで書かれています。
オープンソースなので、ソースコードを読んでAjaxの勉強もできそうです。


「Smile」を利用して、年表を作るために、以下の3つのファイルを
準備します。

(A)「sample.html」: 年表を表示するためのHTML形式のファイル
(B)「sample.js」: 年表を出力するためのJavaScriptを記述したファイル
(C)「sample.xml」: 年表に表示するイベントを記述したxml形式のファイル


それぞれの、コードを以下に示します。


(A)「sample.html」

<html>
  <head>
    <title>smile timeline sample</title>

    <!-- smile APIをロードする -->
    <script src="http://simile.mit.edu/timeline/api/timeline-api.js" type="text/javascript"></script>

    <!-- 「sample.js」をロードする -->
    <script src="smileTest.js" type="text/javascript"></script>

  </head>

  <!-- イベントをロードする -->
  <!-- onLoad()、onResize()イベントは「sample.js」内で定義されている
  <body onload="onLoad();" onresize="onResize();">

    <center>
      <!-- timelineを表示するための領域を設定する -->
      <!-- idは「sample.js」ファイル内の
       document.getElementById("my-timeline")で指定したものと同じものにする
      -->
      <div id="my-timeline" style="width: 700px; height: 200px; border: 1px solid #aaa"></div>
    </center>

  </body>

</html>


(b)「sample.js」

var tl;
function onLoad() {

  // イベントソースを指定オブジェクトを生成する
  var eventSource = new Timeline.DefaultEventSource();

  // bandを2つ利用する
  var bandInfos = [

    Timeline.createBandInfo({
          eventSource: eventSource,
          date: "Jun 28 2006 00:00:00 GMT",
          width: "70%",
          intervalUnit: Timeline.DateTime.MONTH,
          intervalPixels: 100
    }),

    Timeline.createBandInfo({
          // テキストを表示しない
          showEventText: false,

          // マーカ高さ指定する(小さくする)
          trackHeight: 0.5,

          // マーカをの指定する(間隔を小さくする)
          trackGap: 0.2,

          // イベントソースを指定する
          eventSource: eventSource,

          // 表示するイベントの最初の時間を指定する
          date: "Jun 28 2006 00:00:00 GMT",

          width: "30%",
          intervalUnit: Timeline.DateTime.YEAR,
          intervalPixels: 200
    })
  ];

  // 2つのbandを同期させる
  bandInfos[1].syncWith = 0;
  bandInfos[1].highlight = true;

  // 年表を生成する
  tl = Timeline.create(document.getElementById("my-timeline"), bandInfos);

  // 年表にイベントを読み込む
  // イベントの内容は「sample.xml」に記述されている
  Timeline.loadXML("sample.xml", function(xml, url) { eventSource.loadXML(xml, url); });

}

var resizeTimerID = null;
function onResize() {
  if (resizeTimerID == null) {
    resizeTimerID = window.setTimeout(function() {
      resizeTimerID = null;
      tl.layout();
    }, 500);
  }
}


(C)「sample.xml」

このファイルは、属性名を見るだけで分かっていただけると思います。

<?xml version="1.0" encoding="UTF-8"?>
<data>
  <event
    start="Jan 11 2007 21:00:00 GMT"
    end="Feb 11 2007 23:59:59 GMT"
    isDuration="true"
    title="日本語もつかえます"
    image=""
    link="http://kazuhiro.ty.land.to/blog/"
  >
    ポップアップウィンドウの内容はここにかきます。
    &lt;a href="http://kazuhiro.ty.land.to/blog/"&gt;リンクも張れます&lt;/a&gt;
  </event>
</data>

(注)
  「&」は実際には、半角です。


以上、(A)(B)(C)の3つのファイルを同じディレクトリに配置して、
ブラウザで「sample.html」にアクセスすると年表が現れます。


年表は、見栄えや機能をカスタマイズすることができます。
詳しくは、「Timeline Documentation」を参照してください。


(参考)
  「How to Create Timelines




Ads BOARD








最近のエントリーとその関連エントリー

トラックバック

このエントリーのトラックバックURL:
http://kazuhiro.ty.land.to/blog/mt-tb.cgi/122

  Map