root / trunk / web / dojo / dojox / widget / Calendar.js @ 13
History | View | Annotate | Download (19.2 KB)
1 | 9 | andrej.cim | /*
|
---|---|---|---|
2 | Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
||
3 | Available via Academic Free License >= 2.1 OR the modified BSD license.
|
||
4 | see: http://dojotoolkit.org/license for details
|
||
5 | */
|
||
6 | |||
7 | |||
8 | if(!dojo._hasResource["dojox.widget.Calendar"]){ |
||
9 | dojo._hasResource["dojox.widget.Calendar"]=true; |
||
10 | dojo.provide("dojox.widget.Calendar");
|
||
11 | dojo.experimental("dojox.widget.Calendar");
|
||
12 | dojo.require("dijit.Calendar");
|
||
13 | dojo.require("dijit._Container");
|
||
14 | dojo.declare("dojox.widget._CalendarBase",[dijit._Widget,dijit._Templated,dijit._Container],{templateString:dojo.cache("dojox.widget","Calendar/Calendar.html","<div class=\"dojoxCalendar\">\n <div tabindex=\"0\" class=\"dojoxCalendarContainer\" style=\"visibility: visible;\" dojoAttachPoint=\"container\">\n\t\t<div style=\"display:none\">\n\t\t\t<div dojoAttachPoint=\"previousYearLabelNode\"></div>\n\t\t\t<div dojoAttachPoint=\"nextYearLabelNode\"></div>\n\t\t\t<div dojoAttachPoint=\"monthLabelSpacer\"></div>\n\t\t</div>\n <div class=\"dojoxCalendarHeader\">\n <div>\n <div class=\"dojoxCalendarDecrease\" dojoAttachPoint=\"decrementMonth\"></div>\n </div>\n <div class=\"\">\n <div class=\"dojoxCalendarIncrease\" dojoAttachPoint=\"incrementMonth\"></div>\n </div>\n <div class=\"dojoxCalendarTitle\" dojoAttachPoint=\"header\" dojoAttachEvent=\"onclick: onHeaderClick\">\n </div>\n </div>\n <div class=\"dojoxCalendarBody\" dojoAttachPoint=\"containerNode\"></div>\n <div class=\"\">\n <div class=\"dojoxCalendarFooter\" dojoAttachPoint=\"footer\"> \n </div>\n </div>\n </div>\n</div>\n"),_views:null,useFx:true,widgetsInTemplate:true,value:new Date(),constraints:null,footerFormat:"medium",constructor:function(){ |
||
15 | this._views=[];
|
||
16 | },postMixInProperties:function(){ |
||
17 | var c=this.constraints; |
||
18 | if(c){
|
||
19 | var _1=dojo.date.stamp.fromISOString;
|
||
20 | if(typeof c.min=="string"){ |
||
21 | c.min=_1(c.min); |
||
22 | } |
||
23 | if(typeof c.max=="string"){ |
||
24 | c.max=_1(c.max); |
||
25 | } |
||
26 | } |
||
27 | },postCreate:function(){ |
||
28 | this.displayMonth=new Date(this.get("value")); |
||
29 | var _2={parent:this,_getValueAttr:dojo.hitch(this,function(){ |
||
30 | return new Date(this._internalValue||this.value); |
||
31 | }),_getDisplayMonthAttr:dojo.hitch(this,function(){ |
||
32 | return new Date(this.displayMonth); |
||
33 | }),_getConstraintsAttr:dojo.hitch(this,function(){ |
||
34 | return this.constraints; |
||
35 | }),getLang:dojo.hitch(this,function(){ |
||
36 | return this.lang; |
||
37 | }),isDisabledDate:dojo.hitch(this,this.isDisabledDate),getClassForDate:dojo.hitch(this,this.getClassForDate),addFx:this.useFx?dojo.hitch(this,this.addFx):function(){ |
||
38 | }}; |
||
39 | dojo.forEach(this._views,function(_3){ |
||
40 | var _4=new _3(_2,dojo.create("div")); |
||
41 | this.addChild(_4);
|
||
42 | var _5=_4.getHeader();
|
||
43 | if(_5){
|
||
44 | this.header.appendChild(_5);
|
||
45 | dojo.style(_5,"display","none"); |
||
46 | } |
||
47 | dojo.style(_4.domNode,"visibility","hidden"); |
||
48 | dojo.connect(_4,"onValueSelected",this,"_onDateSelected"); |
||
49 | _4.attr("value",this.get("value")); |
||
50 | },this);
|
||
51 | if(this._views.length<2){ |
||
52 | dojo.style(this.header,"cursor","auto"); |
||
53 | } |
||
54 | this.inherited(arguments); |
||
55 | this._children=this.getChildren(); |
||
56 | this._currentChild=0; |
||
57 | var _6=new Date(); |
||
58 | this.footer.innerHTML="Today: "+dojo.date.locale.format(_6,{formatLength:this.footerFormat,selector:"date",locale:this.lang}); |
||
59 | dojo.connect(this.footer,"onclick",this,"goToToday"); |
||
60 | var _7=this._children[0]; |
||
61 | dojo.style(_7.domNode,"top","0px"); |
||
62 | dojo.style(_7.domNode,"visibility","visible"); |
||
63 | var _8=_7.getHeader();
|
||
64 | if(_8){
|
||
65 | dojo.style(_7.getHeader(),"display",""); |
||
66 | } |
||
67 | dojo[_7.useHeader?"removeClass":"addClass"](this.container,"no-header"); |
||
68 | _7.onDisplay(); |
||
69 | var _9=this; |
||
70 | var _a=function(_b,_c,_d){ |
||
71 | dijit.typematic.addMouseListener(_9[_b],_9,function(_e){
|
||
72 | if(_e>=0){ |
||
73 | _9._adjustDisplay(_c,_d); |
||
74 | } |
||
75 | },0.8,500); |
||
76 | }; |
||
77 | _a("incrementMonth","month",1); |
||
78 | _a("decrementMonth","month",-1); |
||
79 | this._updateTitleStyle();
|
||
80 | },addFx:function(_f,_10){ |
||
81 | },_setValueAttr:function(_11){ |
||
82 | if(!_11["getFullYear"]){ |
||
83 | _11=dojo.date.stamp.fromISOString(_11+"");
|
||
84 | } |
||
85 | if(!this.value||dojo.date.compare(_11,this.value)){ |
||
86 | _11=new Date(_11);
|
||
87 | this.displayMonth=new Date(_11); |
||
88 | this._internalValue=_11;
|
||
89 | if(!this.isDisabledDate(_11,this.lang)&&this._currentChild==0){ |
||
90 | this.value=_11;
|
||
91 | this.onChange(_11);
|
||
92 | } |
||
93 | this._children[this._currentChild].attr("value",this.value); |
||
94 | return true; |
||
95 | } |
||
96 | return false; |
||
97 | },isDisabledDate:function(_12,_13){ |
||
98 | var c=this.constraints; |
||
99 | var _14=dojo.date.compare;
|
||
100 | return c&&(c.min&&(_14(c.min,_12,"date")>0)||(c.max&&_14(c.max,_12,"date")<0)); |
||
101 | },onValueSelected:function(_15){ |
||
102 | },_onDateSelected:function(_16,_17,_18){ |
||
103 | this.displayMonth=_16;
|
||
104 | this.set("value",_16); |
||
105 | if(!this._transitionVert(-1)){ |
||
106 | if(!_17&&_17!==0){ |
||
107 | _17=this.get("value"); |
||
108 | } |
||
109 | this.onValueSelected(_17);
|
||
110 | } |
||
111 | },onChange:function(_19){ |
||
112 | },onHeaderClick:function(e){ |
||
113 | this._transitionVert(1); |
||
114 | },goToToday:function(){ |
||
115 | this.set("value",new Date()); |
||
116 | this.onValueSelected(this.get("value")); |
||
117 | },_transitionVert:function(_1a){ |
||
118 | var _1b=this._children[this._currentChild]; |
||
119 | var _1c=this._children[this._currentChild+_1a]; |
||
120 | if(!_1c){
|
||
121 | return false; |
||
122 | } |
||
123 | dojo.style(_1c.domNode,"visibility","visible"); |
||
124 | var _1d=dojo.style(this.containerNode,"height"); |
||
125 | _1c.attr("value",this.displayMonth); |
||
126 | if(_1b.header){
|
||
127 | dojo.style(_1b.header,"display","none"); |
||
128 | } |
||
129 | if(_1c.header){
|
||
130 | dojo.style(_1c.header,"display",""); |
||
131 | } |
||
132 | dojo.style(_1c.domNode,"top",(_1d*-1)+"px"); |
||
133 | dojo.style(_1c.domNode,"visibility","visible"); |
||
134 | this._currentChild+=_1a;
|
||
135 | var _1e=_1d*_1a;
|
||
136 | var _1f=0; |
||
137 | dojo.style(_1c.domNode,"top",(_1e*-1)+"px"); |
||
138 | var _20=dojo.animateProperty({node:_1b.domNode,properties:{top:_1e},onEnd:function(){ |
||
139 | dojo.style(_1b.domNode,"visibility","hidden"); |
||
140 | }}); |
||
141 | var _21=dojo.animateProperty({node:_1c.domNode,properties:{top:_1f},onEnd:function(){ |
||
142 | _1c.onDisplay(); |
||
143 | }}); |
||
144 | dojo[_1c.useHeader?"removeClass":"addClass"](this.container,"no-header"); |
||
145 | _20.play(); |
||
146 | _21.play(); |
||
147 | _1b.onBeforeUnDisplay(); |
||
148 | _1c.onBeforeDisplay(); |
||
149 | this._updateTitleStyle();
|
||
150 | return true; |
||
151 | },_updateTitleStyle:function(){ |
||
152 | dojo[this._currentChild<this._children.length-1?"addClass":"removeClass"](this.header,"navToPanel"); |
||
153 | },_slideTable:function(_22,_23,_24){ |
||
154 | var _25=_22.domNode;
|
||
155 | var _26=_25.cloneNode(true); |
||
156 | var _27=dojo.style(_25,"width"); |
||
157 | _25.parentNode.appendChild(_26); |
||
158 | dojo.style(_25,"left",(_27*_23)+"px"); |
||
159 | _24(); |
||
160 | var _28=dojo.animateProperty({node:_26,properties:{left:_27*_23*-1},duration:500,onEnd:function(){ |
||
161 | _26.parentNode.removeChild(_26); |
||
162 | }}); |
||
163 | var _29=dojo.animateProperty({node:_25,properties:{left:0},duration:500}); |
||
164 | _28.play(); |
||
165 | _29.play(); |
||
166 | },_addView:function(_2a){ |
||
167 | this._views.push(_2a);
|
||
168 | },getClassForDate:function(_2b,_2c){ |
||
169 | },_adjustDisplay:function(_2d,_2e,_2f){ |
||
170 | var _30=this._children[this._currentChild]; |
||
171 | var _31=this.displayMonth=_30.adjustDate(this.displayMonth,_2e); |
||
172 | this._slideTable(_30,_2e,function(){ |
||
173 | _30.attr("value",_31);
|
||
174 | }); |
||
175 | }}); |
||
176 | dojo.declare("dojox.widget._CalendarView",dijit._Widget,{headerClass:"",useHeader:true,cloneClass:function(_32,n,_33){ |
||
177 | var _34=dojo.query(_32,this.domNode)[0]; |
||
178 | var i;
|
||
179 | if(!_33){
|
||
180 | for(i=0;i<n;i++){ |
||
181 | _34.parentNode.appendChild(_34.cloneNode(true));
|
||
182 | } |
||
183 | }else{
|
||
184 | var _35=dojo.query(_32,this.domNode)[0]; |
||
185 | for(i=0;i<n;i++){ |
||
186 | _34.parentNode.insertBefore(_34.cloneNode(true),_35);
|
||
187 | } |
||
188 | } |
||
189 | },_setText:function(_36,_37){ |
||
190 | if(_36.innerHTML!=_37){
|
||
191 | dojo.empty(_36); |
||
192 | _36.appendChild(dojo.doc.createTextNode(_37)); |
||
193 | } |
||
194 | },getHeader:function(){ |
||
195 | return this.header||(this.header=this.header=dojo.create("span",{"class":this.headerClass})); |
||
196 | },onValueSelected:function(_38){ |
||
197 | },adjustDate:function(_39,_3a){ |
||
198 | return dojo.date.add(_39,this.datePart,_3a); |
||
199 | },onDisplay:function(){ |
||
200 | },onBeforeDisplay:function(){ |
||
201 | },onBeforeUnDisplay:function(){ |
||
202 | }}); |
||
203 | dojo.declare("dojox.widget._CalendarDay",null,{parent:null,constructor:function(){ |
||
204 | this._addView(dojox.widget._CalendarDayView);
|
||
205 | }}); |
||
206 | dojo.declare("dojox.widget._CalendarDayView",[dojox.widget._CalendarView,dijit._Templated],{templateString:dojo.cache("dojox.widget","Calendar/CalendarDay.html","<div class=\"dijitCalendarDayLabels\" style=\"left: 0px;\" dojoAttachPoint=\"dayContainer\">\n\t<div dojoAttachPoint=\"header\">\n\t\t<div dojoAttachPoint=\"monthAndYearHeader\">\n\t\t\t<span dojoAttachPoint=\"monthLabelNode\" class=\"dojoxCalendarMonthLabelNode\"></span>\n\t\t\t<span dojoAttachPoint=\"headerComma\" class=\"dojoxCalendarComma\">,</span>\n\t\t\t<span dojoAttachPoint=\"yearLabelNode\" class=\"dojoxCalendarDayYearLabel\"></span>\n\t\t</div>\n\t</div>\n\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"margin: auto;\">\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<td class=\"dijitCalendarDayLabelTemplate\"><div class=\"dijitCalendarDayLabel\"></div></td>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody dojoAttachEvent=\"onclick: _onDayClick\">\n\t\t\t<tr class=\"dijitCalendarWeekTemplate\">\n\t\t\t\t<td class=\"dojoxCalendarNextMonth dijitCalendarDateTemplate\">\n\t\t\t\t\t<div class=\"dijitCalendarDateLabel\"></div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n"),datePart:"month",dayWidth:"narrow",postCreate:function(){ |
||
207 | this.cloneClass(".dijitCalendarDayLabelTemplate",6); |
||
208 | this.cloneClass(".dijitCalendarDateTemplate",6); |
||
209 | this.cloneClass(".dijitCalendarWeekTemplate",5); |
||
210 | var _3b=dojo.date.locale.getNames("days",this.dayWidth,"standAlone",this.getLang()); |
||
211 | var _3c=dojo.cldr.supplemental.getFirstDayOfWeek(this.getLang()); |
||
212 | dojo.query(".dijitCalendarDayLabel",this.domNode).forEach(function(_3d,i){ |
||
213 | this._setText(_3d,_3b[(i+_3c)%7]); |
||
214 | },this);
|
||
215 | },onDisplay:function(){ |
||
216 | if(!this._addedFx){ |
||
217 | this._addedFx=true; |
||
218 | this.addFx(".dijitCalendarDateTemplate div",this.domNode); |
||
219 | } |
||
220 | },_onDayClick:function(e){ |
||
221 | if(typeof (e.target._date)=="undefined"){ |
||
222 | return;
|
||
223 | } |
||
224 | var _3e=new Date(this.get("displayMonth")); |
||
225 | var p=e.target.parentNode;
|
||
226 | var c="dijitCalendar"; |
||
227 | var d=dojo.hasClass(p,c+"PreviousMonth")?-1:(dojo.hasClass(p,c+"NextMonth")?1:0); |
||
228 | if(d){
|
||
229 | _3e=dojo.date.add(_3e,"month",d);
|
||
230 | } |
||
231 | _3e.setDate(e.target._date); |
||
232 | if(this.isDisabledDate(_3e)){ |
||
233 | dojo.stopEvent(e); |
||
234 | return;
|
||
235 | } |
||
236 | this.parent._onDateSelected(_3e);
|
||
237 | },_setValueAttr:function(_3f){ |
||
238 | this._populateDays();
|
||
239 | },_populateDays:function(){ |
||
240 | var _40=new Date(this.get("displayMonth")); |
||
241 | _40.setDate(1);
|
||
242 | var _41=_40.getDay();
|
||
243 | var _42=dojo.date.getDaysInMonth(_40);
|
||
244 | var _43=dojo.date.getDaysInMonth(dojo.date.add(_40,"month",-1)); |
||
245 | var _44=new Date(); |
||
246 | var _45=this.get("value"); |
||
247 | var _46=dojo.cldr.supplemental.getFirstDayOfWeek(this.getLang()); |
||
248 | if(_46>_41){
|
||
249 | _46-=7;
|
||
250 | } |
||
251 | var _47=dojo.date.compare;
|
||
252 | var _48=".dijitCalendarDateTemplate"; |
||
253 | var _49="dijitCalendarSelectedDate"; |
||
254 | var _4a=this._lastDate; |
||
255 | var _4b=_4a==null||_4a.getMonth()!=_40.getMonth()||_4a.getFullYear()!=_40.getFullYear(); |
||
256 | this._lastDate=_40;
|
||
257 | if(!_4b){
|
||
258 | dojo.query(_48,this.domNode).removeClass(_49).filter(function(_4c){ |
||
259 | return _4c.className.indexOf("dijitCalendarCurrent")>-1&&_4c._date==_45.getDate(); |
||
260 | }).addClass(_49); |
||
261 | return;
|
||
262 | } |
||
263 | dojo.query(_48,this.domNode).forEach(function(_4d,i){ |
||
264 | i+=_46; |
||
265 | var _4e=new Date(_40); |
||
266 | var _4f,_50="dijitCalendar",adj=0; |
||
267 | if(i<_41){
|
||
268 | _4f=_43-_41+i+1;
|
||
269 | adj=-1;
|
||
270 | _50+="Previous";
|
||
271 | }else{
|
||
272 | if(i>=(_41+_42)){
|
||
273 | _4f=i-_41-_42+1;
|
||
274 | adj=1;
|
||
275 | _50+="Next";
|
||
276 | }else{
|
||
277 | _4f=i-_41+1;
|
||
278 | _50+="Current";
|
||
279 | } |
||
280 | } |
||
281 | if(adj){
|
||
282 | _4e=dojo.date.add(_4e,"month",adj);
|
||
283 | } |
||
284 | _4e.setDate(_4f); |
||
285 | if(!_47(_4e,_44,"date")){ |
||
286 | _50="dijitCalendarCurrentDate "+_50;
|
||
287 | } |
||
288 | if(!_47(_4e,_45,"date")&&!_47(_4e,_45,"month")&&!_47(_4e,_45,"year")){ |
||
289 | _50=_49+" "+_50;
|
||
290 | } |
||
291 | if(this.isDisabledDate(_4e,this.getLang())){ |
||
292 | _50=" dijitCalendarDisabledDate "+_50;
|
||
293 | } |
||
294 | var _51=this.getClassForDate(_4e,this.getLang()); |
||
295 | if(_51){
|
||
296 | _50+=_51+" "+_50;
|
||
297 | } |
||
298 | _4d.className=_50+"Month dijitCalendarDateTemplate";
|
||
299 | _4d.dijitDateValue=_4e.valueOf(); |
||
300 | var _52=dojo.query(".dijitCalendarDateLabel",_4d)[0]; |
||
301 | this._setText(_52,_4e.getDate());
|
||
302 | _52._date=_52.parentNode._date=_4e.getDate(); |
||
303 | },this);
|
||
304 | var _53=dojo.date.locale.getNames("months","wide","standAlone",this.getLang()); |
||
305 | this._setText(this.monthLabelNode,_53[_40.getMonth()]); |
||
306 | this._setText(this.yearLabelNode,_40.getFullYear()); |
||
307 | }}); |
||
308 | dojo.declare("dojox.widget._CalendarMonthYear",null,{constructor:function(){ |
||
309 | this._addView(dojox.widget._CalendarMonthYearView);
|
||
310 | }}); |
||
311 | dojo.declare("dojox.widget._CalendarMonthYearView",[dojox.widget._CalendarView,dijit._Templated],{templateString:dojo.cache("dojox.widget","Calendar/CalendarMonthYear.html","<div class=\"dojoxCal-MY-labels\" style=\"left: 0px;\"\t\n\tdojoAttachPoint=\"myContainer\" dojoAttachEvent=\"onclick: onClick\">\n\t\t<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"margin: auto;\">\n\t\t\t\t<tbody>\n\t\t\t\t\t\t<tr class=\"dojoxCal-MY-G-Template\">\n\t\t\t\t\t\t\t\t<td class=\"dojoxCal-MY-M-Template\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"dojoxCalendarMonthLabel\"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td class=\"dojoxCal-MY-M-Template\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"dojoxCalendarMonthLabel\"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td class=\"dojoxCal-MY-Y-Template\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"dojoxCalendarYearLabel\"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td class=\"dojoxCal-MY-Y-Template\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"dojoxCalendarYearLabel\"></div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t </tr>\n\t\t\t\t\t\t <tr class=\"dojoxCal-MY-btns\">\n\t\t\t\t\t\t \t <td class=\"dojoxCal-MY-btns\" colspan=\"4\">\n\t\t\t\t\t\t \t\t <span class=\"dijitReset dijitInline dijitButtonNode ok-btn\" dojoAttachEvent=\"onclick: onOk\" dojoAttachPoint=\"okBtn\">\n\t\t\t\t\t\t \t \t \t <button\tclass=\"dijitReset dijitStretch dijitButtonContents\">OK</button>\n\t\t\t\t\t\t\t\t </span>\n\t\t\t\t\t\t\t\t <span class=\"dijitReset dijitInline dijitButtonNode cancel-btn\" dojoAttachEvent=\"onclick: onCancel\" dojoAttachPoint=\"cancelBtn\">\n\t\t\t\t\t\t \t \t\t <button\tclass=\"dijitReset dijitStretch dijitButtonContents\">Cancel</button>\n\t\t\t\t\t\t\t\t </span>\n\t\t\t\t\t\t \t </td>\n\t\t\t\t\t\t </tr>\n\t\t\t\t</tbody>\n\t\t</table>\n</div>\n"),datePart:"year",displayedYears:10,useHeader:false,postCreate:function(){ |
||
312 | this.cloneClass(".dojoxCal-MY-G-Template",5,".dojoxCal-MY-btns"); |
||
313 | this.monthContainer=this.yearContainer=this.myContainer; |
||
314 | var _54="dojoxCalendarYearLabel"; |
||
315 | var _55="dojoxCalendarDecrease"; |
||
316 | var _56="dojoxCalendarIncrease"; |
||
317 | dojo.query("."+_54,this.myContainer).forEach(function(_57,idx){ |
||
318 | var _58=_56;
|
||
319 | switch(idx){
|
||
320 | case 0: |
||
321 | _58=_55; |
||
322 | case 1: |
||
323 | dojo.removeClass(_57,_54); |
||
324 | dojo.addClass(_57,_58); |
||
325 | break;
|
||
326 | } |
||
327 | }); |
||
328 | this._decBtn=dojo.query("."+_55,this.myContainer)[0]; |
||
329 | this._incBtn=dojo.query("."+_56,this.myContainer)[0]; |
||
330 | dojo.query(".dojoxCal-MY-M-Template",this.domNode).filter(function(_59){ |
||
331 | return _59.cellIndex==1; |
||
332 | }).addClass("dojoxCal-MY-M-last");
|
||
333 | dojo.connect(this,"onBeforeDisplay",dojo.hitch(this,function(){ |
||
334 | this._cachedDate=new Date(this.get("value").getTime()); |
||
335 | this._populateYears(this._cachedDate.getFullYear()); |
||
336 | this._populateMonths();
|
||
337 | this._updateSelectedMonth();
|
||
338 | this._updateSelectedYear();
|
||
339 | })); |
||
340 | dojo.connect(this,"_populateYears",dojo.hitch(this,function(){ |
||
341 | this._updateSelectedYear();
|
||
342 | })); |
||
343 | dojo.connect(this,"_populateMonths",dojo.hitch(this,function(){ |
||
344 | this._updateSelectedMonth();
|
||
345 | })); |
||
346 | this._cachedDate=this.get("value"); |
||
347 | this._populateYears();
|
||
348 | this._populateMonths();
|
||
349 | this.addFx(".dojoxCalendarMonthLabel,.dojoxCalendarYearLabel ",this.myContainer); |
||
350 | },_setValueAttr:function(_5a){ |
||
351 | this._populateYears(_5a.getFullYear());
|
||
352 | },getHeader:function(){ |
||
353 | return null; |
||
354 | },_getMonthNames:function(_5b){ |
||
355 | this._monthNames=this._monthNames||dojo.date.locale.getNames("months",_5b,"standAlone",this.getLang()); |
||
356 | return this._monthNames; |
||
357 | },_populateMonths:function(){ |
||
358 | var _5c=this._getMonthNames("abbr"); |
||
359 | dojo.query(".dojoxCalendarMonthLabel",this.monthContainer).forEach(dojo.hitch(this,function(_5d,cnt){ |
||
360 | this._setText(_5d,_5c[cnt]);
|
||
361 | })); |
||
362 | var _5e=this.get("constraints"); |
||
363 | if(_5e){
|
||
364 | var _5f=new Date(); |
||
365 | _5f.setFullYear(this._year);
|
||
366 | var min=-1,max=12; |
||
367 | if(_5e.min){
|
||
368 | var _60=_5e.min.getFullYear();
|
||
369 | if(_60>this._year){ |
||
370 | min=12;
|
||
371 | }else{
|
||
372 | if(_60==this._year){ |
||
373 | min=_5e.min.getMonth(); |
||
374 | } |
||
375 | } |
||
376 | } |
||
377 | if(_5e.max){
|
||
378 | var _61=_5e.max.getFullYear();
|
||
379 | if(_61<this._year){ |
||
380 | max=-1;
|
||
381 | }else{
|
||
382 | if(_61==this._year){ |
||
383 | max=_5e.max.getMonth(); |
||
384 | } |
||
385 | } |
||
386 | } |
||
387 | dojo.query(".dojoxCalendarMonthLabel",this.monthContainer).forEach(dojo.hitch(this,function(_62,cnt){ |
||
388 | dojo[(cnt<min||cnt>max)?"addClass":"removeClass"](_62,"dijitCalendarDisabledDate"); |
||
389 | })); |
||
390 | } |
||
391 | var h=this.getHeader(); |
||
392 | if(h){
|
||
393 | this._setText(this.getHeader(),this.get("value").getFullYear()); |
||
394 | } |
||
395 | },_populateYears:function(_63){ |
||
396 | var _64=this.get("constraints"); |
||
397 | var _65=_63||this.get("value").getFullYear(); |
||
398 | var _66=_65-Math.floor(this.displayedYears/2); |
||
399 | var min=_64&&_64.min?_64.min.getFullYear():_66-10000; |
||
400 | _66=Math.max(min,_66); |
||
401 | this._displayedYear=_65;
|
||
402 | var _67=dojo.query(".dojoxCalendarYearLabel",this.yearContainer); |
||
403 | var max=_64&&_64.max?_64.max.getFullYear()-_66:_67.length;
|
||
404 | var _68="dijitCalendarDisabledDate"; |
||
405 | _67.forEach(dojo.hitch(this,function(_69,cnt){ |
||
406 | if(cnt<=max){
|
||
407 | this._setText(_69,_66+cnt);
|
||
408 | dojo.removeClass(_69,_68); |
||
409 | }else{
|
||
410 | dojo.addClass(_69,_68); |
||
411 | } |
||
412 | })); |
||
413 | if(this._incBtn){ |
||
414 | dojo[max<_67.length?"addClass":"removeClass"](this._incBtn,_68); |
||
415 | } |
||
416 | if(this._decBtn){ |
||
417 | dojo[min>=_66?"addClass":"removeClass"](this._decBtn,_68); |
||
418 | } |
||
419 | var h=this.getHeader(); |
||
420 | if(h){
|
||
421 | this._setText(this.getHeader(),_66+" - "+(_66+11)); |
||
422 | } |
||
423 | },_updateSelectedYear:function(){ |
||
424 | this._year=String((this._cachedDate||this.get("value")).getFullYear()); |
||
425 | this._updateSelectedNode(".dojoxCalendarYearLabel",dojo.hitch(this,function(_6a,idx){ |
||
426 | return this._year!==null&&_6a.innerHTML==this._year; |
||
427 | })); |
||
428 | },_updateSelectedMonth:function(){ |
||
429 | var _6b=(this._cachedDate||this.get("value")).getMonth(); |
||
430 | this._month=_6b;
|
||
431 | this._updateSelectedNode(".dojoxCalendarMonthLabel",function(_6c,idx){ |
||
432 | return idx==_6b;
|
||
433 | }); |
||
434 | },_updateSelectedNode:function(_6d,_6e){ |
||
435 | var sel="dijitCalendarSelectedDate"; |
||
436 | dojo.query(_6d,this.domNode).forEach(function(_6f,idx,_70){ |
||
437 | dojo[_6e(_6f,idx,_70)?"addClass":"removeClass"](_6f.parentNode,sel); |
||
438 | }); |
||
439 | var _71=dojo.query(".dojoxCal-MY-M-Template div",this.myContainer).filter(function(_72){ |
||
440 | return dojo.hasClass(_72.parentNode,sel);
|
||
441 | })[0];
|
||
442 | if(!_71){
|
||
443 | return;
|
||
444 | } |
||
445 | var _73=dojo.hasClass(_71,"dijitCalendarDisabledDate"); |
||
446 | dojo[_73?"addClass":"removeClass"](this.okBtn,"dijitDisabled"); |
||
447 | },onClick:function(evt){ |
||
448 | var _74;
|
||
449 | var _75=this; |
||
450 | var sel="dijitCalendarSelectedDate"; |
||
451 | function hc(c){ |
||
452 | return dojo.hasClass(evt.target,c);
|
||
453 | }; |
||
454 | if(hc("dijitCalendarDisabledDate")){ |
||
455 | dojo.stopEvent(evt); |
||
456 | return false; |
||
457 | } |
||
458 | if(hc("dojoxCalendarMonthLabel")){ |
||
459 | _74="dojoxCal-MY-M-Template";
|
||
460 | this._month=evt.target.parentNode.cellIndex+(evt.target.parentNode.parentNode.rowIndex*2); |
||
461 | this._cachedDate.setMonth(this._month); |
||
462 | this._updateSelectedMonth();
|
||
463 | }else{
|
||
464 | if(hc("dojoxCalendarYearLabel")){ |
||
465 | _74="dojoxCal-MY-Y-Template";
|
||
466 | this._year=Number(evt.target.innerHTML);
|
||
467 | this._cachedDate.setYear(this._year); |
||
468 | this._populateMonths();
|
||
469 | this._updateSelectedYear();
|
||
470 | }else{
|
||
471 | if(hc("dojoxCalendarDecrease")){ |
||
472 | this._populateYears(this._displayedYear-10); |
||
473 | return true; |
||
474 | }else{
|
||
475 | if(hc("dojoxCalendarIncrease")){ |
||
476 | this._populateYears(this._displayedYear+10); |
||
477 | return true; |
||
478 | }else{
|
||
479 | return true; |
||
480 | } |
||
481 | } |
||
482 | } |
||
483 | } |
||
484 | dojo.stopEvent(evt); |
||
485 | return false; |
||
486 | },onOk:function(evt){ |
||
487 | dojo.stopEvent(evt); |
||
488 | if(dojo.hasClass(this.okBtn,"dijitDisabled")){ |
||
489 | return false; |
||
490 | } |
||
491 | this.onValueSelected(this._cachedDate); |
||
492 | return false; |
||
493 | },onCancel:function(evt){ |
||
494 | dojo.stopEvent(evt); |
||
495 | this.onValueSelected(this.get("value")); |
||
496 | return false; |
||
497 | }}); |
||
498 | dojo.declare("dojox.widget.Calendar2Pane",[dojox.widget._CalendarBase,dojox.widget._CalendarDay,dojox.widget._CalendarMonthYear],{});
|
||
499 | dojo.declare("dojox.widget.Calendar",[dojox.widget._CalendarBase,dojox.widget._CalendarDay,dojox.widget._CalendarMonthYear],{});
|
||
500 | dojo.declare("dojox.widget.DailyCalendar",[dojox.widget._CalendarBase,dojox.widget._CalendarDay],{});
|
||
501 | dojo.declare("dojox.widget.MonthAndYearlyCalendar",[dojox.widget._CalendarBase,dojox.widget._CalendarMonthYear],{});
|
||
502 | } |