Author: pyaschenko
Date: 2007-09-20 09:10:19 -0400 (Thu, 20 Sep 2007)
New Revision: 3013
Modified:
trunk/samples/calendar-sample/src/main/webapp/pages/Calendar.jsp
trunk/ui/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js
Log:
RF-913
RF-974:
dayListMarkup - day cell markup
context object: {day, date, weekNumber, weekDayNumber, isWeekend, isCurrentMonth,
elementId, component}
weekNumberMarkup - week number cell markup
context object: {weekNumber, elementId, component}
weekDayMarkup - week day cell markup
context object: {weekDayLabel, weekDayLabelShort, weekDayNumber, isWeekend, elementId,
component}
Modified: trunk/samples/calendar-sample/src/main/webapp/pages/Calendar.jsp
===================================================================
--- trunk/samples/calendar-sample/src/main/webapp/pages/Calendar.jsp 2007-09-20 12:07:32
UTC (rev 3012)
+++ trunk/samples/calendar-sample/src/main/webapp/pages/Calendar.jsp 2007-09-20 13:10:19
UTC (rev 3013)
@@ -64,6 +64,7 @@
<f:facet name="optionalFooter">
<h:outputText value="optionalFooter Facet" />
</f:facet>
+
<f:validator validatorId="org.richfaces.CalendarValidator" />
<h:panelGrid columns="2">
Modified:
trunk/ui/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js
===================================================================
---
trunk/ui/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js 2007-09-20
12:07:32 UTC (rev 3012)
+++
trunk/ui/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js 2007-09-20
13:10:19 UTC (rev 3013)
@@ -378,10 +378,14 @@
initialize: function(id,parameters) {
// dayListTableId, weekNumberBarId, weekDayBarId - 3 tables ids',
+
// dayListMarkup - day cell markup
+ // context: {day, date, weekNumber, weekDayNumber, isWeekend, isCurrentMonth,
elementId, component}
// weekNumberMarkup - week number cell markup
+ // context: {weekNumber, elementId, component}
// weekDayMarkup - week day cell markup
- // context: {weekDayLabel, weekDayLabelShort, weekDayNumber, componentId}
+ // context: {weekDayLabel, weekDayLabelShort, weekDayNumber, isWeekend, elementId,
component}
+
// headerMarkup
// footerMarkup
// headerOptionalMarkup - user defined header (optional)
@@ -437,6 +441,8 @@
this.calendarContext = new CalendarContext(this);
this.DATE_ELEMENT_ID = this.params.dayListTableId+'Cell';
+ this.WEEKNUMBER_ELEMENT_ID = this.params.weekNumberBarId+'Cell';
+ this.WEEKDAY_ELEMENT_ID = this.params.weekDayBarId+'Cell';
this.POPUP_ID = this.id+'Popup';
this.POPUP_BUTTON_ID = this.id+'PopupButton';
this.INPUT_DATE_ID = this.id+'InputDate';
@@ -486,6 +492,7 @@
var styleClass;
var bottomStyleClass;
var htmlTextWeekDayBar='';
+ var context;
if (this.params.showWeekDaysBar)
{
var htmlTextWeekDayBar = '<tr
id="'+this.params.weekDayBarId+'">';
@@ -493,14 +500,17 @@
var weekDayCounter = this.params.firstWeekDay;
for (var i=0;i<7;i++)
{
- var weekDayHtml = this.evaluateMarkup(this.params.weekDayMarkup, {weekDayLabel:
this.params.weekDayLabels[weekDayCounter], weekDayLabelShort:
this.params.weekDayLabelsShort[weekDayCounter], weekDayNumber:weekDayCounter,
componentId:this.getWeekDayComponentId(i)} );
+ context = {weekDayLabel: this.params.weekDayLabels[weekDayCounter],
weekDayLabelShort: this.params.weekDayLabelsShort[weekDayCounter],
weekDayNumber:weekDayCounter, isWeekend:this.isWeekend(i),
elementId:this.WEEKDAY_ELEMENT_ID+i, component:this};
+ var weekDayHtml = this.evaluateMarkup(this.params.weekDayMarkup, context );
if (weekDayCounter==6) weekDayCounter=0; else weekDayCounter++;
-
+
styleClass = "rich-calendar-days";
- if (i==this.firstWeekendDayNumber || i==this.secondWeekendDayNumber) styleClass +=
" rich-calendar-weekends";
-
+ if (context.isWeekend)
+ {
+ styleClass += " rich-calendar-weekends";
+ }
if (i==6) styleClass += " rich-right-cell";
- htmlTextWeekDayBar+='<td
class="'+styleClass+'">'+weekDayHtml+'</td>';
+ htmlTextWeekDayBar+='<td class="'+styleClass+'"
id="'+context.elementId+'">'+weekDayHtml+'</td>';
}
htmlTextWeekDayBar+='</tr>\n';
}
@@ -515,8 +525,9 @@
htmlTextWeek+='<tr
id="'+this.params.weekNumberBarId+k+'">';
if (this.params.showWeeksBar)
{
- var weekNumberHtml = this.evaluateMarkup(this.params.weekNumberMarkup, {weekNumber:
k, componentId:this.getWeekNumberComponentId(k-1)} );
- htmlTextWeek+='<td class="rich-calendar-week
'+bottomStyleClass+'">'+weekNumberHtml+'</td>';
+ context = {weekNumber: k, elementId:this.WEEKNUMBER_ELEMENT_ID+k, component:this};
+ var weekNumberHtml = this.evaluateMarkup(this.params.weekNumberMarkup, context );
+ htmlTextWeek+='<td class="rich-calendar-week
'+bottomStyleClass+'"
id="'+context.elementId+'">'+weekNumberHtml+'</td>';
}
// day cells creation
@@ -641,18 +652,6 @@
return true;
},
- getWeekDayComponentId: function (v) {
- return this.id+"WeekDay"+v;
- },
-
- getWeekNumberComponentId: function (v) {
- return this.id+"WeekNumber"+v;
- },
-
- getDateComponentId: function (v) {
- return this.id+"Date"+v;
- },
-
getCurrentDate: function() {
return this.currentDate;
},
@@ -809,8 +808,8 @@
if (daydata._month==-1) this.prevMonth(); else this.nextMonth();
else if (this.params.boundaryDatesMode == "select")
{
- var date = new Date(this.currentDate.getFullYear(),
this.currentDate.getMonth()+daydata._month, daydata.day);
- if (this.selectDate(date))
+ //var date = new Date(this.currentDate.getFullYear(),
this.currentDate.getMonth()+daydata._month, daydata.day);
+ if (this.selectDate(daydata.date))
{
this.doCollapse();
}
@@ -824,8 +823,8 @@
if (obj)
{
var daydata = this.days[parseInt(obj.id.substr(this.DATE_ELEMENT_ID.length),10)];
- var date = new Date(this.currentDate.getFullYear(),
this.currentDate.getMonth()+daydata._month, daydata.day);
- if (this.invokeEvent("datemouseover", obj, e, date))
+ //var date = new Date(this.currentDate.getFullYear(),
this.currentDate.getMonth()+daydata._month, daydata.day);
+ if (this.invokeEvent("datemouseover", obj, e, daydata.date))
{
if (daydata._month==0) Element.addClassName(obj,'rich-calendar-hover');
}
@@ -837,8 +836,8 @@
if (obj)
{
var daydata = this.days[parseInt(obj.id.substr(this.DATE_ELEMENT_ID.length),10)];
- var date = new Date(this.currentDate.getFullYear(),
this.currentDate.getMonth()+daydata._month, daydata.day);
- if (this.invokeEvent("datemouseout", obj, e, date))
+ //var date = new Date(this.currentDate.getFullYear(),
this.currentDate.getMonth()+daydata._month, daydata.day);
+ if (this.invokeEvent("datemouseout", obj, e, daydata.date))
{
if (daydata._month==0) Element.removeClassName(obj,'rich-calendar-hover');
}
@@ -915,7 +914,11 @@
var dayCounter = previousMonthDays - wd + 1;
// previuos month days
- if (wd>0) while (dayCounter<=previousMonthDays) {this.days.push({day:dayCounter,
_isWeekend: this.isWeekend(p), _month:month}); dayCounter++; p++; }
+ if (wd>0) while (dayCounter<=previousMonthDays)
+ {
+ this.days.push({day:dayCounter, isWeekend: this.isWeekend(p), _month:month});
dayCounter++; p++;
+ }
+
dayCounter = 1;
month=0;
@@ -928,7 +931,7 @@
var firstDay = this.daysData.days[idx].day;
while (dayCounter<firstDay)
{
- this.days.push({day:dayCounter, _isWeekend:this.isWeekend(p%7), _month:month});
+ this.days.push({day:dayCounter, isWeekend:this.isWeekend(p%7), _month:month});
dayCounter++;
p++;
@@ -942,7 +945,7 @@
flag = this.isWeekend(p%7);
obj = this.daysData.days[idx];
obj.day = dayCounter;
- obj._isWeekend = flag;
+ obj.isWeekend = flag;
obj._month = month;
this.days.push(obj);
idx++;
@@ -953,7 +956,7 @@
while (p<42)
{
if (dayCounter>currentMonthDays) {dayCounter=1; month=1;}
- this.days.push({day:dayCounter, _isWeekend: this.isWeekend(p%7), _month:month});
+ this.days.push({day:dayCounter, isWeekend: this.isWeekend(p%7), _month:month});
dayCounter++;
p++;
}
@@ -1002,6 +1005,7 @@
var obj = $(this.params.weekNumberBarId+k);
element = obj.firstChild;
+ var weeknumber;
// week number update
if (this.params.showWeeksBar)
@@ -1013,10 +1017,13 @@
wn=1;
weekflag=false;
}
- element.innerHTML = this.evaluateMarkup(this.params.weekNumberMarkup, {weekNumber:
wn++, componentId:this.getWeekNumberComponentId(k-1)} );
+ weeknumber = wn;
+ element.innerHTML = this.evaluateMarkup(this.params.weekNumberMarkup, {weekNumber:
wn++, elementId:element.id, component:this} );
if (k==1&&wn>52) wn=1;
element = element.nextSibling;
}
+
+ var weekdaycounter = this.params.firstWeekDay;
while (element)
{
@@ -1024,7 +1031,13 @@
// TODO fix start/stop event's calls
this.stopCellEvents(element);
- dataobj.componentId=this.getDateComponentId(p);
+ dataobj.elementId=element.id;
+ dataobj.date=new Date(currentYear, currentMonth+dataobj._month, dataobj.day);
+ dataobj.weekNumber = weeknumber;
+ dataobj.component = this;
+ dataobj.isCurrentMonth = (dataobj._month==0);
+ dataobj.weekDayNumber = weekdaycounter;
+ if (weekdaycounter==6) weekdaycounter=0; else weekdaycounter++;
element.innerHTML = this.evaluateMarkup(this.params.dayListMarkup, dataobj );
// class styles