diff options
Diffstat (limited to 'js/dojo-1.7.2/dojox/mobile/SpinWheelDatePicker.js')
| -rw-r--r-- | js/dojo-1.7.2/dojox/mobile/SpinWheelDatePicker.js | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/js/dojo-1.7.2/dojox/mobile/SpinWheelDatePicker.js b/js/dojo-1.7.2/dojox/mobile/SpinWheelDatePicker.js new file mode 100644 index 0000000..bdaed07 --- /dev/null +++ b/js/dojo-1.7.2/dojox/mobile/SpinWheelDatePicker.js @@ -0,0 +1,110 @@ +//>>built +define("dojox/mobile/SpinWheelDatePicker", [ + "dojo/_base/declare", + "dojo/dom-class", + "dojo/date", + "dojo/date/locale", + "./SpinWheel", + "./SpinWheelSlot" +], function(declare, domClass, ddate, datelocale, SpinWheel, SpinWheelSlot){ + +/*===== + var SpinWheel = dojox.mobile.SpinWheel; + var SpinWheelSlot = dojox.mobile.SpinWheelSlot; +=====*/ + + // module: + // dojox/mobile/SpinWheelDatePicker + // summary: + // A SpinWheel-based date picker widget. + + //TODO: the api doc parser seems to fail if the 1st arg for declare (=class name) is missing.. + var SpinWheelYearSlot = declare(/*===== "dojox.mobile.SpinWheelYearSlot", =====*/ SpinWheelSlot, { + buildRendering: function(){ + this.labels = []; + if(this.labelFrom !== this.labelTo){ + var dtA = new Date(this.labelFrom, 0, 1); + var i, idx; + for(i = this.labelFrom, idx = 0; i <= this.labelTo; i++, idx++){ + dtA.setFullYear(i); + this.labels.push(datelocale.format(dtA, {datePattern:"yyyy", selector:"date"})); + } + } + this.inherited(arguments); + } + }); + + var SpinWheelMonthSlot = declare(/*===== "dojox.mobile.SpinWheelMonthSlot", =====*/ SpinWheelSlot, { + buildRendering: function(){ + this.labels = []; + var dtA = new Date(2000, 0, 1); + var monthStr; + for(var i = 0; i < 12; i++){ + dtA.setMonth(i); + monthStr = datelocale.format(dtA, {datePattern:"MMM", selector:"date"}); + this.labels.push(monthStr); + } + this.inherited(arguments); + } + }); + + var SpinWheelDaySlot = declare(/*===== "dojox.mobile.SpinWheelDaySlot", =====*/ SpinWheelSlot, { + }); + + return declare("dojox.mobile.SpinWheelDatePicker", SpinWheel, { + // summary: + // A SpinWheel-based date picker widget. + // description: + // SpinWheelDatePicker is a date picker widget. It is a subclass of + // dojox.mobile.SpinWheel. It has the year, month, and day slots. + + slotClasses: [ + SpinWheelYearSlot, + SpinWheelMonthSlot, + SpinWheelDaySlot + ], + slotProps: [ + {labelFrom:1970, labelTo:2038}, + {}, + {labelFrom:1, labelTo:31} + ], + + buildRendering: function(){ + this.inherited(arguments); + domClass.add(this.domNode, "mblSpinWheelDatePicker"); + this.connect(this.slots[1], "onFlickAnimationEnd", "onMonthSet"); + this.connect(this.slots[2], "onFlickAnimationEnd", "onDaySet"); + }, + + reset: function(){ + // summary: + // Goes to today. + var slots = this.slots; + var now = new Date(); + var monthStr = datelocale.format(now, {datePattern:"MMM", selector:"date"}); + this.setValue([now.getFullYear(), monthStr, now.getDate()]); + }, + + onMonthSet: function(){ + // summary: + // A handler called when the month value is changed. + var daysInMonth = this.onDaySet(); + var disableValuesTable = {28:[29,30,31], 29:[30,31], 30:[31], 31:[]}; + this.slots[2].disableValues(disableValuesTable[daysInMonth]); + }, + + onDaySet: function(){ + // summary: + // A handler called when the day value is changed. + var y = this.slots[0].getValue(); + var m = this.slots[1].getValue(); + var newMonth = datelocale.parse(y+"/"+m, {datePattern:'yyyy/MMM', selector:'date'}); + var daysInMonth = ddate.getDaysInMonth(newMonth); + var d = this.slots[2].getValue(); + if(daysInMonth < d){ + this.slots[2].setValue(daysInMonth); + } + return daysInMonth; + } + }); +}); |
