これは実用にならんと思ってボトルネックを調べたところ、どうもDatePickerのコンストラクタ(というかinitialize)からの一連の流れが原因だった模様。マシな実装してよ...コードを追っかけていったところ、初期化や表示月の変更など表示内容を更新する必要がある局面で、すべて新しくDOMノードの構築を行っているという、かなりひどい実装になっていた。月を前後するときに重たいワケだ。DOM操作でtableを構築するのはDHTMLの中でもかなりの高コストなのだが、配置した要素を使いまわすことなく愚直に再構築するとは、とてもUIライブラリとして公開しているシロモノの実装とは思えない。多いであろうIEで実用的な速度がでないのでは問題だ。Firebugのプロファイリングで一番ボトルネックになっているメソッドを見つけ出し、外部からオーバーライドして(こういうときJSってステキと思う。継承なしでオーバーライドできちゃうんだもん)、40~50%くらいの改善が見られた(それでもサクサクとはいかない)のだが、今度はなぜかOperaで動作が不安定になった。結局スクラッチすることに少し悩んだ挙句、多少他の部分の進捗状況が良いことを口実に自分でスクラッチすることにした。午後から6時間ほどかかり切りでなんとか使えるものができたが、いやーUIライブラリは面倒くさいわ。今回の業務向けと割り切って、テーマだなんだと見た目の部分はあまり手をかけてないがそれでもこんだけ時間がかかる。いや、多分dara-jの手が遅いだけなんだけども。このくらい2~3時間でさくっとできるスキルがほしい。文句たれてるだけじゃ生産性がないので、ちょっとしたコネタをば。(つか、常識?)今回の日付選択コントロールみたいにポップアップして何かを選択するようなインターフェイスの場合、関係ない部分をクリックしたら閉じるようにするのにどうやってイベント拾ってきたらいいのか良くわからなかったんだけど、documentってonclickがあるのね。ポップアップさせた要素(と関連する要素)のonclickだけイベントバブリングをキャンセルすれば、それ以外の、ウィンドウ中のあらゆる場所のクリックイベントをdocument.onclickに集約できるので、ポップアップさせた要素を閉じさせるイベントをadd/attachすればよかったのか。