diff options
Diffstat (limited to 'js/dojo-1.6/dojox/form/DateTextBox.js')
| -rw-r--r-- | js/dojo-1.6/dojox/form/DateTextBox.js | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/js/dojo-1.6/dojox/form/DateTextBox.js b/js/dojo-1.6/dojox/form/DateTextBox.js new file mode 100644 index 0000000..98ace8b --- /dev/null +++ b/js/dojo-1.6/dojox/form/DateTextBox.js @@ -0,0 +1,204 @@ +/*
+ Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.form.DateTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.form.DateTextBox"] = true;
+dojo.provide("dojox.form.DateTextBox");
+dojo.experimental("dojox.form.DateTextBox");
+
+dojo.require("dojox.widget.Calendar");
+dojo.require("dojox.widget.CalendarViews");
+dojo.require("dijit.form._DateTimeTextBox");
+
+dojo.declare(
+ "dojox.form.DateTextBox",
+ dijit.form._DateTimeTextBox,
+ {
+ // summary:
+ // A validating, serializable, range-bound date text box with a popup calendar
+
+ // popupClass: String
+ // The popup widget to use. In this case, a calendar with Day, Month and Year views.
+ popupClass: "dojox.widget.Calendar",
+ _selector: "date",
+
+ openDropDown: function(){
+ this.inherited(arguments);
+ dojo.style(this.dropDown.domNode.parentNode, "position", "absolute");
+ }
+ }
+);
+
+
+dojo.declare(
+ "dojox.form.DayTextBox",
+ dojox.form.DateTextBox,
+ {
+ // summary:
+ // A validating, serializable, range-bound date text box with a popup calendar that contains just months.
+
+ // popupClass: String
+ // The popup widget to use. In this case, a calendar with just a Month view.
+ popupClass: "dojox.widget.DailyCalendar",
+
+ parse: function(displayVal){
+ return displayVal;
+ },
+
+ format: function(value){
+ return value.getDate ? value.getDate() : value;
+ },
+ validator: function(value) {
+ var num = Number(value);
+ var isInt = /(^-?\d\d*$)/.test(String(value));
+ return value == "" || value == null || (isInt && num >= 1 && num <= 31);
+ },
+
+ _setValueAttr: function(value, priorityChange, formattedValue){
+ if(value){
+ if(value.getDate){
+ value = value.getDate();
+ }
+ }
+ dijit.form.TextBox.prototype._setValueAttr.call(this, value, priorityChange, formattedValue);
+ },
+
+ openDropDown: function(){
+ this.inherited(arguments);
+
+ this.dropDown.onValueSelected = dojo.hitch(this, function(value){
+ this.focus(); // focus the textbox before the popup closes to avoid reopening the popup
+ setTimeout(dojo.hitch(this, "closeDropDown"), 1); // allow focus time to take
+
+ dijit.form.TextBox.prototype._setValueAttr.call(this, String(value.getDate()), true, String(value.getDate()));
+ });
+ }
+ }
+);
+
+dojo.declare(
+ "dojox.form.MonthTextBox",
+ dojox.form.DateTextBox,
+ {
+ // summary:
+ // A validating, serializable, range-bound date text box with a popup calendar that contains only years
+
+ // popupClass: String
+ // The popup widget to use. In this case, a calendar with just a Year view.
+ popupClass: "dojox.widget.MonthlyCalendar",
+
+ selector: "date",
+
+ postMixInProperties: function(){
+ this.inherited(arguments);
+ this.constraints.datePattern = "MM";
+ },
+
+ format: function(value) {
+ if(!value && value !== 0){
+ return 1;
+ }
+ if(value.getMonth){
+ return value.getMonth() + 1;
+ }
+ return Number(value) + 1;
+ },
+
+ parse: function(value, constraints){
+ return Number(value) - 1;
+ },
+
+ serialize: function(value, constraints) {
+ return String(value);
+ },
+
+ validator: function(value) {
+ var num = Number(value);
+ var isInt = /(^-?\d\d*$)/.test(String(value));
+ return value == "" || value == null || (isInt && num >= 1 && num <= 12);
+ },
+
+ _setValueAttr: function(value, priorityChange, formattedValue){
+ if(value){
+ if(value.getMonth){
+ value = value.getMonth();
+ }
+ }
+ dijit.form.TextBox.prototype._setValueAttr.call(this, value, priorityChange, formattedValue);
+ },
+
+ openDropDown: function(){
+ this.inherited(arguments);
+
+ this.dropDown.onValueSelected = dojo.hitch(this, function(value){
+ this.focus(); // focus the textbox before the popup closes to avoid reopening the popup
+ setTimeout(dojo.hitch(this, "closeDropDown"), 1); // allow focus time to take
+ dijit.form.TextBox.prototype._setValueAttr.call(this, value, true, value);
+ });
+ }
+ }
+);
+
+
+dojo.declare(
+ "dojox.form.YearTextBox",
+ dojox.form.DateTextBox,
+ {
+ // summary:
+ // A validating, serializable, range-bound date text box with a popup calendar that contains only years
+
+ popupClass: "dojox.widget.YearlyCalendar",
+
+ format: function(value) {
+ console.log('Year format ' + value);
+ if (typeof value == "string"){
+ return value;
+ }
+ else if (value.getFullYear){
+ return value.getFullYear();
+ }
+ return value;
+ },
+
+ validator: function(value) {
+ return value == "" || value == null || /(^-?\d\d*$)/.test(String(value));
+ },
+
+ _setValueAttr: function(value, priorityChange, formattedValue){
+ if(value){
+ if(value.getFullYear){
+ value = value.getFullYear();
+ }
+ }
+ dijit.form.TextBox.prototype._setValueAttr.call(this, value, priorityChange, formattedValue);
+ },
+
+ openDropDown: function(){
+ this.inherited(arguments);
+ console.log('yearly openDropDown and value = ' + this.get('value'));
+
+ this.dropDown.onValueSelected = dojo.hitch(this, function(value){
+ this.focus(); // focus the textbox before the popup closes to avoid reopening the popup
+ setTimeout(dojo.hitch(this, "closeDropDown"), 1); // allow focus time to take
+ dijit.form.TextBox.prototype._setValueAttr.call(this,value, true, value);
+ });
+ },
+
+ parse: function(/*String*/value, /*dojo.date.locale.__FormatOptions*/constraints) {
+ return value || (this._isEmpty(value) ? null : undefined); // Date
+ },
+
+ filter: function(val) {
+ if (val && val.getFullYear){
+ return val.getFullYear().toString();
+ }
+ return this.inherited(arguments);
+ }
+ }
+);
+
+}
|
