Author: pyaschenko
Date: 2007-07-12 10:07:25 -0400 (Thu, 12 Jul 2007)
New Revision: 1604
Modified:
branches/3.0.2/richfaces/common/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js
branches/3.0.2/richfaces/tree/src/main/templates/htmlTree.jspx
branches/3.0.2/sandbox/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js
branches/3.0.2/sandbox/calendar/src/main/templates/org/richfaces/htmlCalendar.jspx
Log:
New functions added.
Now header markup evaluales every update.
Date.format() function added.
Rich.eval() was deleted. Use Rich.evalMacro() instead one.
Some improvements and optimization.
Modified:
branches/3.0.2/richfaces/common/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js
===================================================================
---
branches/3.0.2/richfaces/common/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js 2007-07-12
13:18:19 UTC (rev 1603)
+++
branches/3.0.2/richfaces/common/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js 2007-07-12
14:07:25 UTC (rev 1604)
@@ -100,24 +100,8 @@
return null;
};
-Richfaces.eval = function(template, object) {
- var value = '';
-
- try {
- value = object.eval(template);
- if (typeof value == 'function') {
- value = value(object);
- }
- } catch (e) {
- LOG.warn('Exception: ' + e.message + '\n[' + template + ']');
- }
+Richfaces.VARIABLE_NAME_PATTERN = /^\s*[_,A-Z,a-z][\w,_\.]*\s*$/;
- return value;
-};
-
-Richfaces.VARIABLE_NAME_PATTERN = /^\s*[_,A-Z,a-z][\w,_]*\s*$/;
-Richfaces.VARIABLE_NAME_PATTERN2 = /^\s*[_,A-Z,a-z][\w,_,\.]*\s*$/;
-
Richfaces.getObjectValue = function (str, object) {
var a=str.split(".");
var value=object[a[0]];
@@ -132,18 +116,20 @@
// variable evaluation
if (Richfaces.VARIABLE_NAME_PATTERN.test(template))
{
- value = object[template];
- if (!value) {value=window[template]; if (!value) value="";}
+ if (template.indexOf('.')==-1) {
+ value = object[template];
+ if (!value) value=window[template];
+ }
+ // object's variable evaluation
+ else {
+ value = Richfaces.getObjectValue(template, object);
+ if (!value) value=Richfaces.getObjectValue(template, window);
+ }
+ if (value && typeof value=='function') value = value(object);
+ if (!value) value="";
}
- // variable in objects evaluation
- else if (Richfaces.VARIABLE_NAME_PATTERN2.test(template))
- {
- value = Richfaces.getObjectValue(template, object);
- if (!value) value=Richfaces.getObjectValue("window."+template, object);
- }
//js string evaluation
- else
- {
+ else {
try {
value=object.eval(template);
if (typeof value == 'function') {
@@ -159,3 +145,14 @@
if (!value) {value=window[template]; if (!value) value="";}
return value;
}
+
+Richfaces.invokeOnComponent = function(componentType, element, functionName)
+{
+ var attribute="richfacesComponent";
+ while (element.parentNode) {
+ if (element[attribute] && element[attribute]==componentType)
+ return element.component[functionName]();
+ else
+ element = element.parentNode;
+ }
+}
Modified: branches/3.0.2/richfaces/tree/src/main/templates/htmlTree.jspx
===================================================================
--- branches/3.0.2/richfaces/tree/src/main/templates/htmlTree.jspx 2007-07-12 13:18:19 UTC
(rev 1603)
+++ branches/3.0.2/richfaces/tree/src/main/templates/htmlTree.jspx 2007-07-12 14:07:25 UTC
(rev 1604)
@@ -44,11 +44,7 @@
<f:parameter value="id,style,class"/>
</f:call>
- <table width="100%" cellpadding="0">
- <tbody>
- <vcp:body />
- </tbody>
- </table>
+ <vcp:body />
<f:call name="encodeSelectionStateInput" />
<f:clientId var="clientId" />
Modified:
branches/3.0.2/sandbox/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js
===================================================================
---
branches/3.0.2/sandbox/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js 2007-07-12
13:18:19 UTC (rev 1603)
+++
branches/3.0.2/sandbox/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js 2007-07-12
14:07:25 UTC (rev 1604)
@@ -25,6 +25,41 @@
}
});
+/* Year:
+ * yy - 00-99
+ * y,yyy+ - 1999
+ * Month:
+ * M - 1-12
+ * MM - 01-12
+ * MMM - short (Jul)
+ * MMMM+ - long (July)
+ * Date:
+ * d - 1-31
+ * dd+ - 01-31 */
+Object.extend(Date, {
+ format : function(pattern, monthNames, monthNamesShort) {
+ if (!monthNames) monthNames =
['January','February','March','April','May','June','July','August','September','October','November','December'];
+ if (!monthNamesShort) monthNamesShort =
['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
+ var d = this; var mm; var dd;
+ return pattern.replace(/(yy^y|y+|M^M|MM^M|MMM^M|M+|d^d|d+)/g,
+ function($1) {
+ switch ($1) {
+ case 'yy': return d.getYear().toString().substr(-2);
+ case 'M': return d.getMonth()+1;
+ case 'MM': return (mm = d.getMonth()+1)<10 ? '0'+mm :
mm;
+ case 'MMM': return monthNamesShort[d.getMonth()];
+ case 'd': return d.getDate();
+ }
+ // y+,M+,d+
+ var ch = $1.charAt(0);
+ if (ch=='y') return d.getFullYear();
+ if (ch=='M') return monthNames[d.getMonth()];
+ if (ch=='d') return (dd = d.getDate())<10 ? '0'+dd : dd;
+ }
+ );
+ }
+})
+
function isLeapYear(year) {
return new Date(year, 1, 29).getDate()==29;
}
@@ -102,8 +137,9 @@
this.params = parameters;
if (!this.params.showWeekDaysBar) this.params.showWeekDaysBar = true;
if (!this.params.showWeeksBar) this.params.showWeeksBar = true;
+ if (this.params.monthLabels) this.params.monthLabels.push(this.params.monthLabels[0]);
- this.currentDate = this.params.currentDate;
+ this.currentDate = this.params.currentDate ? this.params.currentDate : new Date();
this.selectedDate = this.params.selectedDate;
this.todayDate = new Date();
@@ -113,19 +149,24 @@
this.firstWeekendDayNumber = 6-this.params.firstWeekDay;
this.secondWeekendDayNumber = (this.params.firstWeekDay>0 ?
7-this.params.firstWeekDay : 0);
+ /*this.ids = {
+ currentYearMonthId: this.id+':currentyearmonth'
+ };*/
+
this.daysData = {startDate:null, days:[]};
this.days = [];
- var htmlTextHeader = '<div
id="div_'+this.params.dayListTableId+'"></div><input
id="'+this.params.dayListTableId+':input" type="hidden"
value="'+this.getSelectedDate()+'"><table border="0"
cellpadding="0" cellspacing="0" class="calendar_exterior"
id="'+this.params.dayListTableId+'">\n';
+ var htmlTextHeader = '<input id="'+this.id+':input"
type="hidden" value="'+this.getSelectedDate()+'"><table
border="0" cellpadding="0" cellspacing="0"
class="calendar_exterior">\n';
var controlsHeaderContext = {
- nextYearControl: Calendar.nextYearControl,
- previousYearControl: Calendar.previousYearControl,
- nextMonthControl: Calendar.nextMonthControl,
- previousMonthControl: Calendar.previousMonthControl,
- dateControl: Calendar.dateControl,
- componentId: id
+ /*nextYearControl: Calendar.getNextYearControl,
+ previousYearControl: Calendar.getPreviousYearControl,
+ nextMonthControl: Calendar.getNextMonthControl,
+ previousMonthControl: Calendar.getPreviousMonthControl,
+ dateControl: Calendar.getDateControl,
+ componentId: id,*/
+ calendar:this
};
- var htmlControlsHeader = '<thead><tr><th
colspan="7">' + Calendar.header.getContent(controlsHeaderContext) +
'</th></tr></thead>'
+ var htmlControlsHeader = '<thead><tr><th colspan="7"
id="'+this.id+':header"></th></tr></thead>'
var htmlTextFooter = '</table><div
id="div_'+this.params.dayListTableId+'_selected_date"></div>\n';
// days bar creation
@@ -159,7 +200,7 @@
}
for (var i=0;i<7;i++)
{
- htmlTextWeek+='<td
id="'+this.params.dayListTableId+'_cell'+p+'"
style="vertical-align:top"></td>';
+ htmlTextWeek+='<td
id="'+this.params.dayListTableId+':cell'+p+'"
style="vertical-align:top"></td>';
p++;
}
htmlTextWeek+='</tr>';
@@ -168,6 +209,7 @@
// set content
var obj=$(id);
obj.component = this;
+ obj.richfacesComponent="richfaces:calendar";
obj.innerHTML =
htmlTextHeader+htmlControlsHeader+htmlTextWeekDayBar+htmlTextWeek+htmlTextFooter;
this.submitFunction = this.params.submitFunction.bind(this);
@@ -180,6 +222,41 @@
var date = this.selectedDate.getDate(); value += "/"+(date<10 ?
"0"+date : date);
return value+"/"+this.selectedDate.getFullYear();
},
+
+ getPrevYear: function() {
+ var value = this.currentDate.getFullYear()-1;
+ if (value<0) value = 0;
+ return value;
+ },
+ getPrevMonth: function(asMonthLabel) {
+ var value = this.currentDate.getMonth()-1;
+ if (value < 0 ) value = 11;
+ if (asMonthLabel)
+ {
+ return this.params.monthLabels[value];
+ } else return value;
+ },
+ getCurrentYear: function() {
+ return this.currentDate.getFullYear();
+ },
+ getCurrentMonth: function(asMonthLabel) {
+ var value = this.currentDate.getMonth();
+ if (asMonthLabel)
+ {
+ return this.params.monthLabels[value];
+ } else return value;
+ },
+ getNextYear: function() {
+ return this.currentDate.getFullYear()+1;
+ },
+ getNextMonth: function(asMonthLabel) {
+ var value = this.currentDate.getMonth()+1;
+ if (value > 11 ) value = 0;
+ if (asMonthLabel)
+ {
+ return this.params.monthLabels[value];
+ } else return value;
+ },
isWeekend: function(weekday) {
return (weekday == this.firstWeekendDayNumber || weekday ==
this.secondWeekendDayNumber);
@@ -203,7 +280,7 @@
},
eventCellOnClick: function (e) {
- var idstr = this.params.dayListTableId+'_cell';
+ var idstr = this.params.dayListTableId+':cell';
var obj = Event.findElementByAttr(e, "TD", "id", idstr, true);
if (obj)
{
@@ -218,7 +295,7 @@
var selecteddate = this.getSelectedDate();
$('div_'+this.params.dayListTableId+'_selected_date').innerHTML=selecteddate;
- $(this.params.dayListTableId+':input').value=selecteddate;
+ $(this.id+':input').value=selecteddate;
} else {
if (daydata._month==-1) this.prevMonth(); else this.nextMonth();
}
@@ -226,7 +303,7 @@
},
eventCellOnMouseOver: function (e) {
- var idstr = this.params.dayListTableId+'_cell';
+ var idstr = this.params.dayListTableId+':cell';
var obj = Event.findElementByAttr(e, "TD", "id", idstr, true);
if (obj)
{
@@ -236,7 +313,7 @@
},
eventCellOnMouseOut: function (e) {
- var idstr = this.params.dayListTableId+'_cell';
+ var idstr = this.params.dayListTableId+':cell';
var obj = Event.findElementByAttr(e, "TD", "id", idstr, true);
if (obj)
{
@@ -287,8 +364,8 @@
update:function() {
this.todayDate = new Date();
- var currentYear = this.currentDate.getFullYear();
- var currentMonth = this.currentDate.getMonth();
+ var currentYear = this.getCurrentYear();
+ var currentMonth = this.getCurrentMonth();
var todayflag = (currentYear == this.todayDate.getFullYear() && currentMonth ==
this.todayDate.getMonth());
var todaydate = this.todayDate.getDate();
@@ -296,8 +373,8 @@
var selectedflag = (currentYear == this.selectedDate.getFullYear() &&
currentMonth == this.selectedDate.getMonth())
var selecteddate = this.selectedDate.getDate();
- var dateDiv = $("div_"+this.params.dayListTableId);
- dateDiv.innerHTML = currentYear + "/" + (currentMonth+1);
+ //var dateDiv = $(this.ids.currentYearMonthId);
+ //dateDiv.innerHTML = " " + currentYear + "/" +
(currentMonth<9 ? "0" : "") + (currentMonth+1) +
" ";
var wd = getDay(this.currentDate, this.params.firstWeekDay);
var currentMonthDays = daysInMonthByDate(this.currentDate);
@@ -359,6 +436,13 @@
}
// render
+ //header render
+ var header = $(this.id+":header");
+ if (header)
+ {
+ header.innerHTML = Calendar.header.getContent({calendar:this});
+ }
+ //days render
p=0;
var element;
var dataobj;
@@ -367,7 +451,7 @@
this.selectedDayElement=null;
var weekflag=true;
- var _d=new Date();
+ //var _d=new Date();
for (var k=1;k<7;k++)
{
@@ -408,7 +492,7 @@
element=element.nextSibling;
}
}
- alert(new Date().getTime()-_d.getTime());
+ //alert(new Date().getTime()-_d.getTime());
},
nextMonth: function() {
@@ -467,7 +551,7 @@
Calendar.getControl = function(context, attributes, text, functionName) {
var attr = {
- onclick: (functionName ?
"$('"+context.componentId+"').component."+functionName+"();"
: "") + "return false;"
+ onclick: (functionName ?
"Richfaces.invokeOnComponent('richfaces:calendar',this,'"+functionName+"');"
: "")+"return false;"
};
if (attributes) {
@@ -477,19 +561,20 @@
};
Calendar.nextYearControl = function(context) {
- return Calendar.getControl(context, null, ">>", "nextYear");
+ return Calendar.getControl(context, null, ">>
"+context.calendar.getNextYear(), "nextYear");
};
Calendar.previousYearControl = function(context) {
- return Calendar.getControl(context, null, "<<", "prevYear");
+ return Calendar.getControl(context, null, context.calendar.getPrevYear()+"
<<", "prevYear");
};
Calendar.nextMonthControl = function(context) {
- return Calendar.getControl(context, null, ">", "nextMonth");
+ return Calendar.getControl(context, null, ">
"+context.calendar.getNextMonth(true), "nextMonth");
};
Calendar.previousMonthControl = function(context) {
- return Calendar.getControl(context, null, "<", "prevMonth");
+ return Calendar.getControl(context, null, context.calendar.getPrevMonth(true)+"
<", "prevMonth");
};
Calendar.dateControl = function(context) {
- return Calendar.getControl(context, {style: 'width: 100%'}, "Date",
"");
+ var value =" " + context.calendar.getCurrentYear() + ", " +
context.calendar.getCurrentMonth(true) + " ";
+ return value;//new
T('div',{id:context.calendar.id+":currentyearmonth"},null);//Calendar.getControl(context,
{style: 'width: 100%'}, "Date", "");
};
Calendar.header =
@@ -501,23 +586,23 @@
[
new E('td',{'class': 'calendar_tool calendar_btn'},
[
- new ET(function (context) { return Richfaces.eval("previousYearControl",
context)})
+ new ET(function (context) { return
Richfaces.evalMacro("Calendar.previousYearControl", context)})
]),
new E('td',{'class': 'calendar_tool calendar_btn'},
[
- new ET(function (context) { return Richfaces.eval("previousMonthControl",
context)})
+ new ET(function (context) { return
Richfaces.evalMacro("Calendar.previousMonthControl", context)})
]),
- new E('td',{'class': 'calendar_month calendar_btn'},
+ new E('td',{'class': 'calendar_month'},
[
- new ET(function (context) { return Richfaces.eval("dateControl",
context)})
+ new ET(function (context) { return
Richfaces.evalMacro("Calendar.dateControl", context)})
]),
new E('td',{'class': 'calendar_tool calendar_btn'},
[
- new ET(function (context) { return Richfaces.eval("nextMonthControl",
context)})
+ new ET(function (context) { return
Richfaces.evalMacro("Calendar.nextMonthControl", context)})
]),
new E('td',{'class': 'calendar_tool calendar_btn'},
[
- new ET(function (context) { return Richfaces.eval("nextYearControl",
context)})
+ new ET(function (context) { return
Richfaces.evalMacro("Calendar.nextYearControl", context)})
])
])
])
Modified:
branches/3.0.2/sandbox/calendar/src/main/templates/org/richfaces/htmlCalendar.jspx
===================================================================
---
branches/3.0.2/sandbox/calendar/src/main/templates/org/richfaces/htmlCalendar.jspx 2007-07-12
13:18:19 UTC (rev 1603)
+++
branches/3.0.2/sandbox/calendar/src/main/templates/org/richfaces/htmlCalendar.jspx 2007-07-12
14:07:25 UTC (rev 1604)
@@ -29,7 +29,8 @@
weekDayBarId: '#{clientId}WeekDay',
currentDate: new Date(2007,6,1),
selectedDate: new Date(2007,4,5),
- weekDayLabels:
['Sun','Mon','Tue','Wen','Thu','Fri','Sat'],
+ weekDayLabels:
['Sun','Mon','Tue','Wen','Thu','Fri','Sat'],
+ monthLabels: ['Jan', 'Feb', 'Mar', 'Apr',
'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct',
'Nov', 'Dec'],
firstWeekDay: 0,
minDaysInFirstWeek: 4,
dayListMarkup: