« Laszloでグラフを描こう 第1回 | メイン | Laszloでグラフを描こう 第2.5回 »

Laszloでグラフを描こう 第2回

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

グラフの軸の範囲(最大値と最小値)を決めるために、データをソートするプログラムをつくります。


いろいろなやり方をためしてみましたが、結局一番簡単と思われる方法にたどり着きました。ここまで本と長かったです(w。


具体的な戦略は次のとおりです。

lまず、グラフの軸となる値をXMLから取り出します。Laszloでは、XMLデータはdatasetに格納されているので、次のようにして取り出します。まず、viewなどのdatapathに取り出したいデータのdatasetを指定します。次に、datapath.xpathQuery(xpath)として、該当データをとりだします。


取り出したいデータが複数ある場合は、LzDataelEment形の配列で返されます。くわしくは、datapointerクラスのxpathQueryの項を参考にしてくだい。


次に、これらのデータをArrayクラスのsort関数を使ってソートします。ソートはデータを文字列とみなして行われるため、数値としてソートしたい場合には、コンパレータを定義する必要があります。

例)

文字列をソートする場合


var dataArray = this.datapath.xpathQuery(xpath);
dataArray.sort();


数値をソートする場合


var dataArray = this.datapath.xpathQuery(xpath);
dataArray.sort(ascendComparatorNum);


ascendComparatorNumがコンパレータです。以下にascendComparatorNumの中身の例を示します。


function ascendComparatorNum( a, b ) {
aNum = Number( parseFloat(a) );
bNum = Number( parseFloat(b) );
var r = ( aNum == bNum ) ? 0 : ( aNum > bNum ) ? 1 : -1;
return r;
}


最後に、全体のプログラムを把握してもらうために、開発中のコードを載せておきます。ダウンロードしてご覧ください。参考になれば幸いです。


このコードはAmazonの商品情報を検索して、ソートするプログラム(開発中)です。きちんとしたコードができましたら、改めて掲載したいとおもいます。

Ads BOARD








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

トラックバック

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

  Map