< previous
XML/SWF Charts Reference*1
next >
21.link_data リンクデータ機能

<link_data url='string' target='string'
  /> 

(説明)

link_dataは、グラフの要素をクリックしたときに処理するためのレスポンスのURLを設定します。
これは、グラフのより細かな詳細を得ることを可能にします。

この特性は、登録ユーザのみ利用できます。(フリーライセンスでは利用できません)
登録されていない場合は、すべてのグラフをクリックするとこのウェブサイト(http://www.maani.us/xml_charts/)にリンクします。

それぞれのリンクデータには、以下の属性があります。


クリック変数(Click-Variables)

リンクデータのURLは、クリックを処理し、クリックされた要素に関する追加情報をユーザに提供するための
スクリプトであるべきです。
ユーザがグラフの要素をクリックするとき、それを呼ぶ前に、どの要素がクリックされたかを決定する情報をURLに追加します。
もう一方の端のスクリプトはそれに従って、動作をどのグラフの要素がクリックされたか、そして、過程に読み込むべきです。
 
URLに付加された情報は、chart_dataで定義したグラフのデータの規定に基づいています。
グラフデータ
  2001 2002 2003 2004
東京 75 10 30 63
大阪 100 20 65 55
札幌 56 21 20 90


 
例えば、上のグラフで、ユーザが2001年の大阪の値100を表す図グラフの列(縦棒)をクリックするなら、
そのとき、リンクデータは、URLパラメータの後に、"col=1&row=2&value=100&category=2001&series=Region B"
を設定します。
これは、データテーブルの中の対応する値の行列座標(テーブルの左上のセルを基準に、列=0、行=0)、その値自身、
カテゴリーラベルやシリーズラベル(凡例ラベル)を与えます。
 
リンクのURLであるなら、データのURLパラメタは以下の通りです。
 
http://yourServer/script.php
 
次にリンクデータが呼び出すURL
 
http://yourServer/script.php?col=1&row=2&value=100&category=2001&series=大阪
 
"script.php"ドキュメントのスクリプトは、クリック変数を読んで、それに従って、応じるべきです。
このスクリプトは、もっと詳細(drill down into the chart)で新しいグラフを作るか、または他のタイプの情報を提供するでしょう。
このスクリプトは、全体の応答を発生させるか、または他のウェブページに要求を向け直すことができます。
(以下の例を見てください)
 
クリック可能なグラフの要素はすべて、データテーブルを表すものです。
(グラフ、カテゴリ軸、および凡例)

追加変数(Additional Variables)

 
異なったプロジェクトは異なるニーズを持っています。
リンクデータ機能は、ありとあらゆる必要性を収容するために故意に一般的です。
クリック変数をいかなる他の情報に変換するのはあなたのスクリプトまで達しています。
 
いくつかの場合、あなたは、ユーザ要求を処理するためにクリック変数以上を必要とするかもしれません。
例えば、あなたは、どのグラフがクリックされたか、そして、どのクライアントがそれをクリックしたかを知る必要があるかもしれません。
 
この場合、このようなURLにおける指示するものを含めてください。
 
http://yourServer/script.php?clientID=56745&chartID=10
 
リンクデータが呼び出すURL。
 
http://yourServer/script.php?clientID=56745&chartID=10&col=1&row=2&value=100&category=2001&series=大阪
 
幾つかのブラウザが、非常に長いURLは、切り詰められます。
変数がまさしくそのログであるなら、それらをURLに追加するのを避けてください。
代わりにサーバでそれらを保存して、検索してください。

Javascriptコミュニケーションへのフラッシュ(Flash to Javascript Communication)

javascript機能をグラフの要素の上でクリックに応じさせて、リンクデータのtargetに"javascript"を設定して、
このようにリンクデータのURLにjavascript機能を設定し、リンクしてください。
 
javascript:function_name(var1, var2, ...)
 
クリック変数をjavascript関数に渡すために、_col_, _row_, _value_, _category_, and _series_の発生に
実の価に置き換えてくれま。
 
 <chart>

 <link_data url="javascript:display_info( _col_, _row_, _value_, _category_, _series_, 'Hello World!' )" target='javascript' /> 

 </chart>
 
ウェブページのjavascriptコードは以下の通りであるかもしれません。
 
<script type="text/javascript">
function display_info ( var1, var2, var3, var4, var5, var6 ){
 alert ( var1 );
}
</script>

FlashコミュニケーションへのJavascript(Javascript to Flash Communication)

ライブ_アップデートの引き金となるように、Javascriptからあるメッセージをグラフに送るには、この機能を使用します。
 
document.charts.SetVariable ( "update_url", "http://your_server/update.xml" );
 
2番目のパラメタをアップデートを要求するURLに取り替えます。
 
Javascriptから、グラフへXMLコードを送るたり、直接グラフをアップデートするには、この機能を使用してください。
 
document.charts.SetVariable ( "update_xml", "line" );
 
2番目のパラメタをXMLコードを含むストリングに取り替えて、グラフをアップデートします。
 
メッセージをJavascriptからFlash(グラフ)に送ることは、すべてのブラウザによってサポートされていません。
また、何人かのユーザがブラウザの上でjavascriptを無効にするかもしれません。
Javascriptをサポートしているブラウザは、Netscape Navigator 3.0 - 4.7x, Netscape 6.2 or higher,
Internet Explorer 3.0 or higher, Safari 2.0 or higher, and Firefox 1.5 or higherです。

グラフをアップデートするボタンを作成するために、javascriptへの代替手段は、グラフの中でボタンを描き込んで、
アップデートの引き金となるのにリンクを使用することが良いでしょう。
(以下の例を見てください)

リンクとリンクデータ(Link and Link_data)
 
もし、リンクがリンク(link)とリンクデータ(link_data)の両方を使用するよう定義されて、
その2つが重なっている場合は、リンクデータ(link_data)により高い優先権があります。
これで、リンクデータ(link_data)によって処理されなかったクリックを捕らえるために
全体のキャンバスを覆うクリック可能な長方形を定義するのにリンクを使用します。

(例)

<chart>

   <!-- 相対url スクリプトdocument:link_data.php -->
   <link_data url='link_data.php' target='_blank' /> 

</chart>

サンプルグラフは、www.maani.usサイトを直接ご覧ください。 >link_dataサンプルグラフ

このグラフは、link_dataの機能が含まれていません

「link_data.php」のスクリプトはこのように変数を読みます。

<?php
 $column =  $_REQUEST['col'];
 $row = $_REQUEST['row'];
 $value = $_REQUEST['value'];
 $category = $_REQUEST['category'];
 $series = $_REQUEST['series'];
?>

スクリプトはこのように要求を処理するかもしれません。

<?php

if ( $_REQUEST['col'] == 0 ){
    echo "The legend was clicked.";
}else{
    switch ( $_REQUEST['row'] ){
        case 0:
        echo "A category label was clicked.";
        break;
		
        case 1:
        echo "Region A data was clicked.";
        break;
		
        case 2:
        echo "Region B data was clicked.";
        break;
    }
}

?>

または、このように他のウェブページに要求を向け直すかもしれません。

<?php
//no text should be sent to the browser before a redirect. Make sure there are no spaces before "<?php"

//table of web pages to redirect the request to (corresponds to the chart's data table)
$url = array ( array ( "",                   "http://server/page", "http://server/page", "http://server/page" ),
               array ( "http://server/page", "http://server/page", "http://server/page", "http://server/page" ),
               array ( "http://server/page", "http://server/page", "http://server/page", "http://server/page" ),
               array ( "http://server/page", "http://server/page", "http://server/page", "http://server/page" )
             );

//redirect
Header("Location: " . $url [ $_REQUEST['row'] ][ $_REQUEST['col'] ] );

//no text should be sent to the browser after a redirect.
exit;

?>


< previous このページのTOP next >

*1 XML/SWF Charts Reference原本の著作権は、http://www.maani.usが所有しています

2006.12.8  by ma3ki