Yahoo! UI Library: Calendar で年月表示の順序入れ替え
Yahoo! UI Library: TreeView でソートができるようにするに続いて Yahoo! UI Library: Calendar を使ってみる。
インターナショナルに使えるように、月の表記や曜日の名前を入れ替えたり(Januaryとかを1月に、とか、Saturdayを土曜日に、とか)できるような作りになっていて、そのへんは日本バージョンのサンプルをみてみてください。
で、本題はこのインターナショナライゼーションがもう一歩足りなくて困ったという話。
土曜日と日曜日だけセルの色を変える(これって日本だけの慣習?)、とかはできるようになっていて、上述のサンプルをみればやりかたがわかります。
こういう細かいところは押さえているのに、ロケールサポートといったら真っ先に出てくる年と月の表記順の変更ができないのです。
google maps api だと中身が obfuscate されていて読めないけれど YAHOO.widget はふつうに読めるのでこういう時に便利です。中身もあまり洗練させていない分読みやすい。(洗練されていない分読むはめになりがちとも言える)
中身を探ると、日付の表示をしているのは YAHOO.widget.Calendar_Core.prototype.renderHeader() から呼ばれる buildMonthLabel() です。月の表示だけしそうなメソッドなので初め気がつかずにスルーしていましたが、これが年と月の表示をします。
オリジナルはこう。
YAHOO.widget.Calendar_Core.prototype.buildMonthLabel = function() {
var text = this.Options.LOCALE_MONTHS[this.pageDate.getMonth()] +
" " + this.pageDate.getFullYear();
return text;
};
バリバリハードコード。スペースを空けるのにスペースを下手に書いてるところからして全体のドロドロさを示しています。
その分わかりやすくかつ書き換えやすいけど。
YAHOO.widget.Calendar_Core.prototype.buildMonthLabel = function() {
var text = this.pageDate.getFullYear() + "年 " +
this.Options.LOCALE_MONTHS[this.pageDate.getMonth()] ;
return text;
};
にしておしまい。
これで年月の順に変えられます。
About this entry
You’re currently reading “Yahoo! UI Library: Calendar で年月表示の順序入れ替え,” an entry on ku
- Published:
- 2006.02.22 / 1am
- Category:
- javascript

No comments
Jump to comment form | comments rss [?] | trackback uri [?]