Sunday, July 16, 2006

Dojo DateWidget in Thai

Dojo Widget ออกแบบมาดี
มีความเป็น object อยู่สูง
แถมยังมีลักษณะเป็น MVC ด้วย
ทำให้เราสามารถ customize ส่วน Presentation ได้โดยไม่ต้องยุ่งกับ Model

ในการทำ ThaiDateWidget
เราสนใจแค่การ override
function ที่ทำหน้าที่แสดงผล เดือน กับ ปี
dojo.provide("dojo.widget.html.ThaiDatePicker");
dojo.require("dojo.widget.html.DatePicker");


dojo.widget.defineWidget(
"dojo.widget.html.ThaiDatePicker",
dojo.widget.html.DatePicker,
{
thaimonths : ['มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน',
'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม',
'กันยายน', 'ตุลาคม', 'พฤษจิกายน', 'ธันวาคม'],

setYearLabels: function(year) {
this.previousYearLabelNode.innerHTML = year - 1+543;
this.currentYearLabelNode.innerHTML = year+543;
this.nextYearLabelNode.innerHTML = year + 1+543;
},
setMonthLabel: function(monthIndex) {
this.monthLabelNode.innerHTML = this.thaimonths[monthIndex];
}
}

);

เวลาใช้งาน
<html>
<head>
<script type="text/javascript" src="./js/dojo.js"></script>
<script type="text/javascript">
dojo.require("dojo.widget.html.DatePicker");
dojo.require("dojo.widget.html.ThaiDatePicker");
</script>
</head>
<body>

<span dojoType="DatePicker" widgetId='test'></span>
<br/>
<span dojoType="ThaiDatePicker" widgetId='test2'</span>
</body>
</html>

ผลลัพท์ออกมาหน้าตาดังนี้

Related link from Roti

3 comments:

Anonymous said...

ถ้าจะ integrate เข้ากับ rails พอมีทางเปล่า
เห็นเขาว่ามันเข้ากันไม่ได้

ยุทธ

PPhetra said...

มันมีปัญหาในเรื่องการ load sub module
ซึ่งน่าจะแก้ได้โดยใช้วิธีนี้
http://blog.innerewut.de/articles/2006/05/22/dojo-and-rails-or-better-dojo-and-the-base-relative-path

แต่ใช้ dojo กับ rails แล้ว
มันจะไม่ได้ใช้ feature พวก rjs
หรือ helper ต่างๆที่ rails เตรียมไว้นะสิ

ตอนนี้ที่ผมใช้อยู่ ผมใช้ dojo กับ java project

ชอบที่มีคนพูดถึง dojo กับ rails
(from Gavin Doughtie)
> > I think a drop-in replacement is not a good idea, because with dojo
> > you have to think a little bit different, the app get's much more
> > javascript centric (at least in my case). With dojo you probably end
> > up having an Ajax app with a rails backend and not a rails app with a
> > bit of Ajax sweetness.

Anonymous said...

ทำไม่ได้ครับ ต้องสร้างไฟล์.js ใหม่หรือป่าวคัฟ