Subversion Repositories Applications.papyrus

Rev

Rev 1318 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1318 Rev 1422
1
/*
1
/*
2
	Copyright (c) 2004-2006, The Dojo Foundation
2
	Copyright (c) 2004-2006, The Dojo Foundation
3
	All Rights Reserved.
3
	All Rights Reserved.
4
 
4
 
5
	Licensed under the Academic Free License version 2.1 or above OR the
5
	Licensed under the Academic Free License version 2.1 or above OR the
6
	modified BSD license. For more information on Dojo licensing, see:
6
	modified BSD license. For more information on Dojo licensing, see:
7
 
7
 
8
		http://dojotoolkit.org/community/licensing.shtml
8
		http://dojotoolkit.org/community/licensing.shtml
9
*/
9
*/
-
 
10
 
-
 
11
 
10
 
12
 
11
dojo.provide("dojo.widget.DropdownDatePicker");
13
dojo.provide("dojo.widget.DropdownDatePicker");
12
dojo.require("dojo.widget.*");
14
dojo.require("dojo.widget.*");
13
dojo.require("dojo.widget.DropdownContainer");
15
dojo.require("dojo.widget.DropdownContainer");
14
dojo.require("dojo.widget.DatePicker");
16
dojo.require("dojo.widget.DatePicker");
15
dojo.require("dojo.event.*");
17
dojo.require("dojo.event.*");
16
dojo.require("dojo.html.*");
18
dojo.require("dojo.html.*");
17
dojo.require("dojo.date.format");
19
dojo.require("dojo.date.format");
18
dojo.require("dojo.date.serialize");
20
dojo.require("dojo.date.serialize");
19
dojo.require("dojo.string.common");
21
dojo.require("dojo.string.common");
20
dojo.require("dojo.i18n.common");
22
dojo.require("dojo.i18n.common");
21
dojo.requireLocalization("dojo.widget", "DropdownDatePicker", null, "ROOT");
23
dojo.requireLocalization("dojo.widget", "DropdownDatePicker", null, "ROOT");
22
dojo.widget.defineWidget("dojo.widget.DropdownDatePicker", dojo.widget.DropdownContainer, {iconURL:dojo.uri.moduleUri("dojo.widget", "templates/images/dateIcon.gif"), formatLength:"short", displayFormat:"", saveFormat:"", value:"", name:"", displayWeeks:6, adjustWeeks:false, startDate:"1492-10-12", endDate:"2941-10-12", weekStartsOn:"", staticDisplay:false, postMixInProperties:function (localProperties, frag) {
24
dojo.widget.defineWidget("dojo.widget.DropdownDatePicker", dojo.widget.DropdownContainer, {iconURL:dojo.uri.moduleUri("dojo.widget", "templates/images/dateIcon.gif"), formatLength:"short", displayFormat:"", saveFormat:"", value:"", name:"", displayWeeks:6, adjustWeeks:false, startDate:"1492-10-12", endDate:"2941-10-12", weekStartsOn:"", staticDisplay:false, postMixInProperties:function (localProperties, frag) {
23
	dojo.widget.DropdownDatePicker.superclass.postMixInProperties.apply(this, arguments);
25
	dojo.widget.DropdownDatePicker.superclass.postMixInProperties.apply(this, arguments);
24
	var messages = dojo.i18n.getLocalization("dojo.widget", "DropdownDatePicker", this.lang);
26
	var messages = dojo.i18n.getLocalization("dojo.widget", "DropdownDatePicker", this.lang);
25
	this.iconAlt = messages.selectDate;
27
	this.iconAlt = messages.selectDate;
26
	if (typeof (this.value) == "string" && this.value.toLowerCase() == "today") {
28
	if (typeof (this.value) == "string" && this.value.toLowerCase() == "today") {
27
		this.value = new Date();
29
		this.value = new Date();
28
	}
30
	}
29
	if (this.value && isNaN(this.value)) {
31
	if (this.value && isNaN(this.value)) {
30
		var orig = this.value;
32
		var orig = this.value;
31
		this.value = dojo.date.fromRfc3339(this.value);
33
		this.value = dojo.date.fromRfc3339(this.value);
32
		if (!this.value) {
34
		if (!this.value) {
33
			this.value = new Date(orig);
35
			this.value = new Date(orig);
34
			dojo.deprecated("dojo.widget.DropdownDatePicker", "date attributes must be passed in Rfc3339 format", "0.5");
36
			dojo.deprecated("dojo.widget.DropdownDatePicker", "date attributes must be passed in Rfc3339 format", "0.5");
35
		}
37
		}
36
	}
38
	}
37
	if (this.value && !isNaN(this.value)) {
39
	if (this.value && !isNaN(this.value)) {
38
		this.value = new Date(this.value);
40
		this.value = new Date(this.value);
39
	}
41
	}
40
}, fillInTemplate:function (args, frag) {
42
}, fillInTemplate:function (args, frag) {
41
	dojo.widget.DropdownDatePicker.superclass.fillInTemplate.call(this, args, frag);
43
	dojo.widget.DropdownDatePicker.superclass.fillInTemplate.call(this, args, frag);
42
	var dpArgs = {widgetContainerId:this.widgetId, lang:this.lang, value:this.value, startDate:this.startDate, endDate:this.endDate, displayWeeks:this.displayWeeks, weekStartsOn:this.weekStartsOn, adjustWeeks:this.adjustWeeks, staticDisplay:this.staticDisplay};
44
	var dpArgs = {widgetContainerId:this.widgetId, lang:this.lang, value:this.value, startDate:this.startDate, endDate:this.endDate, displayWeeks:this.displayWeeks, weekStartsOn:this.weekStartsOn, adjustWeeks:this.adjustWeeks, staticDisplay:this.staticDisplay};
43
	this.datePicker = dojo.widget.createWidget("DatePicker", dpArgs, this.containerNode, "child");
45
	this.datePicker = dojo.widget.createWidget("DatePicker", dpArgs, this.containerNode, "child");
44
	dojo.event.connect(this.datePicker, "onValueChanged", this, "_updateText");
46
	dojo.event.connect(this.datePicker, "onValueChanged", this, "_updateText");
45
	dojo.event.connect(this.inputNode, "onChange", this, "_updateText");
47
	dojo.event.connect(this.inputNode, "onChange", this, "_updateText");
46
	if (this.value) {
48
	if (this.value) {
47
		this._updateText();
49
		this._updateText();
48
	}
50
	}
49
	this.containerNode.explodeClassName = "calendarBodyContainer";
51
	this.containerNode.explodeClassName = "calendarBodyContainer";
50
	this.valueNode.name = this.name;
52
	this.valueNode.name = this.name;
51
}, getValue:function () {
53
}, getValue:function () {
52
	return this.valueNode.value;
54
	return this.valueNode.value;
53
}, getDate:function () {
55
}, getDate:function () {
54
	return this.datePicker.value;
56
	return this.datePicker.value;
55
}, setValue:function (rfcDate) {
57
}, setValue:function (rfcDate) {
56
	this.setDate(rfcDate);
58
	this.setDate(rfcDate);
57
}, setDate:function (dateObj) {
59
}, setDate:function (dateObj) {
58
	this.datePicker.setDate(dateObj);
60
	this.datePicker.setDate(dateObj);
59
	this._syncValueNode();
61
	this._syncValueNode();
60
}, _updateText:function () {
62
}, _updateText:function () {
61
	this.inputNode.value = this.datePicker.value ? dojo.date.format(this.datePicker.value, {formatLength:this.formatLength, datePattern:this.displayFormat, selector:"dateOnly", locale:this.lang}) : "";
63
	this.inputNode.value = this.datePicker.value ? dojo.date.format(this.datePicker.value, {formatLength:this.formatLength, datePattern:this.displayFormat, selector:"dateOnly", locale:this.lang}) : "";
62
	if (this.value < this.datePicker.startDate || this.value > this.datePicker.endDate) {
64
	if (this.value < this.datePicker.startDate || this.value > this.datePicker.endDate) {
63
		this.inputNode.value = "";
65
		this.inputNode.value = "";
64
	}
66
	}
65
	this._syncValueNode();
67
	this._syncValueNode();
66
	this.onValueChanged(this.getDate());
68
	this.onValueChanged(this.getDate());
67
	this.hideContainer();
69
	this.hideContainer();
68
}, onValueChanged:function (dateObj) {
70
}, onValueChanged:function (dateObj) {
69
}, onInputChange:function () {
71
}, onInputChange:function () {
70
	var input = dojo.string.trim(this.inputNode.value);
72
	var input = dojo.string.trim(this.inputNode.value);
71
	if (input) {
73
	if (input) {
72
		var inputDate = dojo.date.parse(input, {formatLength:this.formatLength, datePattern:this.displayFormat, selector:"dateOnly", locale:this.lang});
74
		var inputDate = dojo.date.parse(input, {formatLength:this.formatLength, datePattern:this.displayFormat, selector:"dateOnly", locale:this.lang});
73
		if (!this.datePicker._isDisabledDate(inputDate)) {
75
		if (!this.datePicker._isDisabledDate(inputDate)) {
74
			this.setDate(inputDate);
76
			this.setDate(inputDate);
75
		}
77
		}
76
	} else {
78
	} else {
77
		if (input == "") {
79
		if (input == "") {
78
			this.datePicker.setDate("");
80
			this.datePicker.setDate("");
79
		}
81
		}
80
		this.valueNode.value = input;
82
		this.valueNode.value = input;
81
	}
83
	}
82
	if (input) {
84
	if (input) {
83
		this._updateText();
85
		this._updateText();
84
	}
86
	}
85
}, _syncValueNode:function () {
87
}, _syncValueNode:function () {
86
	var date = this.datePicker.value;
88
	var date = this.datePicker.value;
87
	var value = "";
89
	var value = "";
88
	switch (this.saveFormat.toLowerCase()) {
90
	switch (this.saveFormat.toLowerCase()) {
89
	  case "rfc":
91
	  case "rfc":
90
	  case "iso":
92
	  case "iso":
91
	  case "":
93
	  case "":
92
		value = dojo.date.toRfc3339(date, "dateOnly");
94
		value = dojo.date.toRfc3339(date, "dateOnly");
93
		break;
95
		break;
94
	  case "posix":
96
	  case "posix":
95
	  case "unix":
97
	  case "unix":
96
		value = Number(date);
98
		value = Number(date);
97
		break;
99
		break;
98
	  default:
100
	  default:
99
		if (date) {
101
		if (date) {
100
			value = dojo.date.format(date, {datePattern:this.saveFormat, selector:"dateOnly", locale:this.lang});
102
			value = dojo.date.format(date, {datePattern:this.saveFormat, selector:"dateOnly", locale:this.lang});
101
		}
103
		}
102
	}
104
	}
103
	this.valueNode.value = value;
105
	this.valueNode.value = value;
104
}, destroy:function (finalize) {
106
}, destroy:function (finalize) {
105
	this.datePicker.destroy(finalize);
107
	this.datePicker.destroy(finalize);
106
	dojo.widget.DropdownDatePicker.superclass.destroy.apply(this, arguments);
108
	dojo.widget.DropdownDatePicker.superclass.destroy.apply(this, arguments);
107
}});
109
}});
108
 
110