summaryrefslogtreecommitdiff
path: root/js/dojo-1.7.2/dojox/mobile/SpinWheelDatePicker.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo-1.7.2/dojox/mobile/SpinWheelDatePicker.js')
-rw-r--r--js/dojo-1.7.2/dojox/mobile/SpinWheelDatePicker.js110
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;
+ }
+ });
+});