このページのJavaScriptです。
左のカレンダーの日付を選択したり、次の月に動かすとログが出力されます。
タイトルには、
YUI Drag and Dropを使用してドラッグ可能にしてあります。
<script type="text/javascript">
YAHOO.namespace("cal");
function init() {
YAHOO.cal.x1 = new YAHOO.widget.Calendar("cal1", "yui-calendar");
// タイトルの定義。ドラッグできるようにdivタグを書いておく
YAHOO.cal.x1.cfg.setProperty("title", "<div id='handle'>カスタムイベントサンプル</div>");
YAHOO.cal.x1.cfg.setProperty("MULTI_SELECT", true);
YAHOO.cal.x1.cfg.setProperty("close", true);
YAHOO.cal.x1.cfg.setProperty("START_WEEKDAY", 1);
// ローカライズ
YAHOO.cal.x1.cfg.setProperty("MDY_YEAR_POSITION", 1);
YAHOO.cal.x1.cfg.setProperty("MDY_MONTH_POSITION", 2);
YAHOO.cal.x1.cfg.setProperty("MDY_DAY_POSITION", 3);
YAHOO.cal.x1.cfg.setProperty("MY_YEAR_POSITION", 1);
YAHOO.cal.x1.cfg.setProperty("MY_MONTH_POSITION", 2);
YAHOO.cal.x1.cfg.setProperty("WEEKDAYS_SHORT", [
"<font color='red'>日</font>",
"月",
"火",
"水",
"木",
"金",
"<font color='blue'>土</font>"
]);
YAHOO.cal.x1.cfg.setProperty("MONTHS_LONG", [
"1月",
"2月",
"3月",
"4月",
"5月",
"6月",
"7月",
"8月",
"9月",
"10月",
"11月",
"12月"
]);
var beforeRenderHandler = function(type, args, obj) {
var elm = document.getElementById('output');
var html = type + ':カレンダーの描画を始めます<br/>';
elm.innerHTML = html + elm.innerHTML;
};
var renderHandler = function(type, args, obj) {
var elm = document.getElementById('output');
var html = type + ':カレンダーの描画が終わりました<br/>';
elm.innerHTML = html + elm.innerHTML;
};
var beforeSelectHandler = function(type, args, obj) {
var elm = document.getElementById('output');
var html = type + ':selectEventを開始します<br/>';
elm.innerHTML = html + elm.innerHTML;
};
// args から選択した日付が取得できる。
var selectHandler = function(type, args, obj) {
var elm = document.getElementById('output');
var html = type + ':' + args + 'を選択しました<br/>';
elm.innerHTML = html + elm.innerHTML;
};
var beforeDeselectHandler = function(type, args, obj) {
var elm = document.getElementById('output');
var html = type + ':deselectEventを開始します<br/>';
elm.innerHTML = html + elm.innerHTML;
};
// args から選択をはずした日付が取得できる。
var deselectHandler = function(type, args, obj) {
var elm = document.getElementById('output');
var html = type + ':' + args + 'が選択からはずされました<br/>';
elm.innerHTML = html + elm.innerHTML;
};
var changePageHandler = function(type, args, obj) {
var elm = document.getElementById('output');
var pagedate = this.cfg.getProperty("pagedate");
var yyyy = pagedate.getYear();
if ( yyyy < 1900 ) yyyy+=1900;
var mm = pagedate.getMonth() + 1;
var html = type + ':' + yyyy + ',' + mm + 'に移りました<br/>';
elm.innerHTML = html + elm.innerHTML;
};
var clearHandler = function(type, args, obj) {
var elm = document.getElementById('output');
var html = type + ':clear が呼ばれました<br/>';
elm.innerHTML = html + elm.innerHTML;
};
var resetHandler = function(type, args, obj) {
var elm = document.getElementById('output');
var html = type + ':reset が呼ばれました<br/>';
elm.innerHTML = html + elm.innerHTML;
};
// カスタムイベントに登録
YAHOO.cal.x1.beforeRenderEvent.subscribe(beforeRenderHandler, YAHOO.cal.x1, true);
YAHOO.cal.x1.renderEvent.subscribe(renderHandler, YAHOO.cal.x1, true);
YAHOO.cal.x1.beforeSelectEvent.subscribe(beforeSelectHandler, YAHOO.cal.x1, true);
YAHOO.cal.x1.selectEvent.subscribe(selectHandler, YAHOO.cal.x1, true);
YAHOO.cal.x1.beforeDeselectEvent.subscribe(beforeDeselectHandler, YAHOO.cal.x1, true);
YAHOO.cal.x1.deselectEvent.subscribe(deselectHandler, YAHOO.cal.x1, true);
YAHOO.cal.x1.changePageEvent.subscribe(changePageHandler, YAHOO.cal.x1, true);
YAHOO.cal.x1.clearEvent.subscribe(clearHandler, YAHOO.cal.x1, true);
YAHOO.cal.x1.resetEvent.subscribe(resetHandler, YAHOO.cal.x1, true);
YAHOO.cal.x1.render();
// 出力画面をドラッグできるように。
var dd1 = new YAHOO.util.DD("output", "myGroup");
// タイトルをつかんだらドラッグできるように。
var dd2 = new YAHOO.util.DD("yui-calendar", "myGroup");
dd2.setHandleElId("handle");
// celarボタンを押下したら、YAHOO.widget.Calendar#clear を実行
YAHOO.util.Event.addListener("clear", "click", YAHOO.cal.x1.clear, YAHOO.cal.x1, true);
// resetボタンを押下したら、YAHOO.widget.Calendar#reset を実行
YAHOO.util.Event.addListener("reset", "click", YAHOO.cal.x1.reset, YAHOO.cal.x1, true);
}
YAHOO.util.Event.addListener(window, "load", init);
</script>