qooxdoo 0.6.1 XmlHttpTransport

サーバからXML取ってきてパースする必要があったのだけど、qx.io.remote.XmlHttpTransportがどうにも動かなかったので、prototype.jsと組み合わせることにした。

<script type="text/javascript" src="../../js/prototype.js" mce_src="../../js/prototype.js"></script>
<script type="text/javascript" src="../../script/qx.js" mce_src="../../script/qx.js"></script>

とりあえず不具合は起きていない模様。

TransportのTestコードから。

req = new qx.io.remote.RemoteRequest(val.getLabel(), "GET", "text/plain");
req.addEventListener("completed", function(e)
{
 inf.setValue("Completed");
 area.setValue(e.getData().getContent());
});

↓この部分をprototype.jsで置き換え。

var myAjax = new Ajax.Request(
 val.getLabel(),
 {
  method: 'get',
  onComplete: function(e)
  {
   inf.setValue("Completed");
   area.setValue(e.responseText);
  }
});

おー、動いたー。


qooxdoo 0.6.1 Transport

qooxdoo » Demo » Test » Transport 1を実行すると、IE6でJSのエラーが出る件。

2の方はエラーでないので、Diff取って見ると、

145: req.setCrossDomain(true);

が、2ではコメントアウトされていたので、1でも外して見る。

OK、問題なし。


qooxdoo 0.6.1

結局使ってみる事に。 

コンパイルがめんどいので、ひとまずあるものそのまま使うということでやってみます。

  • qooxdoo-0.6.1-build.zipを落としてきて解凍する
  • frontendframeworkの中身をコピー
  • qx.jsを開いて、中身を../で検索して、適当な相対パスに置き換える

続きは次回。


AjaxとContent-Type

ローカルのサーバで作ったAjaxを、テストサーバに上げたらなぜか動かない。

ローカルでは動作確認してたので、まぁ、何かサーバに問題あるんだろうってことで調べてみたら、.jsも.xmlもMIMEがtext/plainで帰ってきてた。

うぉーい。まじすか。

とりあえず.htaccessで

AddType text/xml .xml
AddType text/javascript .js

こんな感じに設定してやったら動いた。

MIMEがちゃんと送られないと、FireFoxではXMLとして認識しないらしい。まぁ、正しい動作だと思うけど。


OperaでCDATAが残る

Opera8.0でCDATAセクションを含むXMLをAjaxで取ってきたら、CDATAが残りっぱなし。

しかも、textかtextContentでは取れなくて、(inner|outer)(Text|HTML)でしか取れない。

Opera9.0.2にアップデートしたら直った。

その代わり、(inner|outer)(Text|HTML)では取れなくなった。つーことは、Operaはバージョンで処理振り分けなきゃいけないって事ですか。


tableとinnerHTML

IE6でtableエレメントにinnerHTMLで<tr>~のブロックを入れられない罠。

tbodyが勝手に補完されるからだとか…

しょうがないので、tbodyをcreateElementして、そこに<tr>~のブロックをinnerHTMLで差し込んだらなぜか先頭の<tr><td>が消えるという。

とりあえずこの方法は諦めて<div>の中に<table>から書く事にして解決。


qooxdoo 0.6.1 導入前編

とりあえず、お仕事の新しい管理画面をqooxdoo 0.6.1で作ってみようと思ってDownloadしてみた。

うげ、なんかやたらめんどくさくなってる。Cygwin入れろとか言われるし。

前に作ってたのは0.5.2を使ってたので、そんな面倒もなかったのだが…

今回はあまり時間もないので、導入ちょっと見送り。もう少し余裕のある案件で使おう。


Image_Graphでpukiwiki用レーダーチャートプラグイン

Image_Graphでpukiwiki用レーダーチャートプラグインを作ったので、メモ。

まずPearのImage_Graphを入れる。

pear install –alldeps Image_Graph-alpha

とりあえずサンプルからコード持ってきていじる。

$Graph->add(
Image_Graph::vertical(
Image_Graph::factory('title', array('', 1)),
Image_Graph::vertical(
$Plotarea = Image_Graph::factory('Image_Graph_Plotarea_Radar'),
$Legend = Image_Graph::factory('legend'),
90
),
0
)
);

Image_Graph::verticalを使うと、縦のレイアウトが組める。第一引数と第二引数で表示する中身指定して、第三引数で第一エリアの表示領域をパーセンテージで指定する。入れ子にして自由にレイアウト組める。

とりあえず、今回タイトルもレジェンドもいらなかったので、さっくりシンプルに。

$Graph->add(
$Plotarea = Image_Graph::factory('Image_Graph_Plotarea_Radar')
);

これだけ。

あと、本来は自動で軸のスケールが決定されるけど、スケール指定したい場合はforceMaximumメソッドを使う。こんな感じ。

$AxisY =& $Plotarea->getAxis(IMAGE_GRAPH_AXIS_Y);
$AxisY->forceMaximum($axis_maximum);

ただし、スケールをはみ出す使い方はできない。値がクリップされるので、表示がおかしくなる。

あと日本語表示について。

$Font =& $Graph->addNew('font', './sazanami-gothic.ttf');

TTFのフォントをどこかに置いて、指定すればOK。ただし、ラベルはUTF-8で指定すること。

$DS1->addPoint(mb_convert_encoding('ほげ','UTF-8','EUC-JP'), 50);


qooxdoo 0.6

とりあえず、早くなったらしい。

テーブルウィジェットが便利かも。DBのビューアとして使ったりとか。


Picasaから色々なサービスに繋げる手段

Gmail使う方法とかもあるようだけど、Web出力のテンプレートは自分で変更できるので、XMLを出力して、それをプログラムで読み込んで何でもすればいいんじゃないかな、と。

Pythonでちょっと実装してみようかと。

とりあえずXML-RPCでも使えりゃいいですか。