Author: pyaschenko
Date: 2007-07-06 12:01:01 -0400 (Fri, 06 Jul 2007)
New Revision: 1524
Modified:
branches/3.0.2/sandbox/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js
Log:
Merged with calendar-prototype.js changes;
Today date bug fixed;
Some addons, improvments and optimisation;
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-06
15:57:52 UTC (rev 1523)
+++
branches/3.0.2/sandbox/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js 2007-07-06
16:01:01 UTC (rev 1524)
@@ -2,12 +2,12 @@
window.LOG = {warn:function(){}};
}
-if (!window.Richfaces) window.Richfaces={};
+//if (!window.Richfaces) window.Richfaces={};
Object.extend(Event, {
findElementByAttr : function(event, tagName, attribute, value, flag) {
var element = Event.findElement(event, tagName);
- while (!element[attribute] || (flag ? element[attribute].indexOf(value)==0 :
element[attribute]!=value) )
+ while (!element[attribute] || (flag ? element[attribute].indexOf(value)!=0 :
element[attribute]!=value) )
{
element = element.parentNode;
}
@@ -95,9 +95,14 @@
// weekDayLabels - collection of week day labels keyed by week day numbers
// minDaysInFirstWeek - locale-specific constant defining number of days in the first
week
// firstWeekDay - (0..6) locale-specific constant defining number of the first week
day
+ // showWeekDaysBar - show WeekDays Bar [default value is true]
+ // showWeeksBar - show Weeks numbers bar [default value is true]
this.id = id;
this.params = parameters;
+ if (!this.showWeekDaysBar) this.showWeekDaysBar = true;
+ if (!this.showWeeksBar) this.showWeeksBar = true;
+
this.currentDate = this.params.currentDate;
this.selectedDate = this.params.selectedDate;
@@ -124,30 +129,38 @@
var htmlTextFooter = '</table><div
id="div_'+this.params.dayListTableId+'_selected_date"></div>\n';
// days bar creation
- var htmlTextWeekDayBar = '<tr
id="'+this.params.weekDayBarId+'"><td
style="border-top:0px"></td>';
- var weekDayCounter = this.params.firstWeekDay;
- for (var i=0;i<7;i++)
- {
- var weekDayHtml = this.params.weekDayMarkup( {weekDay:
this.params.weekDayLabels[weekDayCounter]} );
- if (weekDayCounter==6) weekDayCounter=0; else weekDayCounter++;
+ var htmlTextWeekDayBar='';
+ if (this.params.showWeekDaysBar)
+ {
+ var htmlTextWeekDayBar = '<tr
id="'+this.params.weekDayBarId+'">';
+ if (this.params.showWeeksBar) htmlTextWeekDayBar+='<td
style="border-top:0px"></td>';
+ var weekDayCounter = this.params.firstWeekDay;
+ for (var i=0;i<7;i++)
+ {
+ var weekDayHtml = this.params.weekDayMarkup( {weekDayLabel:
this.params.weekDayLabels[weekDayCounter], weekDayNumber:weekDayCounter} );
+ if (weekDayCounter==6) weekDayCounter=0; else weekDayCounter++;
- htmlTextWeekDayBar+='<td id="'+this.params.weekDayBarId+i+'"
class="'+(i==this.firstWeekendDayNumber || i==this.secondWeekendDayNumber ?
"Weekendclass" :
"Dayclass")+'">'+weekDayHtml+'</td>';
+ htmlTextWeekDayBar+='<td class="'+(i==this.firstWeekendDayNumber ||
i==this.secondWeekendDayNumber ? "Weekendclass" :
"Dayclass")+'">'+weekDayHtml+'</td>';
+ }
+ htmlTextWeekDayBar+='</tr>\n';
}
- htmlTextWeekDayBar+='</tr>\n';
// week & weekNumber creation
- var htmlTextWeek="";
+ var htmlTextWeek='';
var p=0;
for (k=1;k<7;k++)
{
-
- var weekNumberHtml = this.params.weekNumberMarkup( {weekNumber: k} );
-
- htmlTextWeek+='<tr><td
id="'+this.params.weekNumberBarId+k+'">'+weekNumberHtml+'</td>';
+ htmlTextWeek+='<tr
id="'+this.params.weekNumberBarId+k+'">';
+ if (this.params.showWeeksBar)
+ {
+ var weekNumberHtml = this.params.weekNumberMarkup( {weekNumber: k} );
+ htmlTextWeek+='<td>'+weekNumberHtml+'</td>';
+ }
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>';
}
@@ -156,10 +169,9 @@
var obj=$(id);
obj.component = this;
obj.innerHTML =
htmlTextHeader+htmlControlsHeader+htmlTextWeekDayBar+htmlTextWeek+htmlTextFooter;
-
+
this.prepareEvents();
-
- this.submitFunction = this.params.submitFunction.bind(this);
+ this.submitFunction = this.params.submitFunction.bind(this);
},
isWeekend: function(weekday) {
@@ -210,7 +222,7 @@
if (obj)
{
var daydata = this.days[parseInt(obj.id.substr(idstr.length))];
- if (daydata && daydata._month==0 &&
Element.hasClassName(obj,daydata._className))
Element.replaceClassName(obj,daydata._className, daydata._hoverClassName);
+ if (daydata._month==0 && Element.hasClassName(obj,daydata._className))
Element.replaceClassName(obj,daydata._className, daydata._hoverClassName);
}
},
@@ -220,7 +232,7 @@
if (obj)
{
var daydata = this.days[parseInt(obj.id.substr(idstr.length))];
- if (daydata && daydata._month==0 &&
Element.hasClassName(obj,daydata._hoverClassName))
Element.replaceClassName(obj,daydata._hoverClassName, daydata._className);
+ if (daydata._month==0 && Element.hasClassName(obj,daydata._hoverClassName))
Element.replaceClassName(obj,daydata._hoverClassName, daydata._className);
}
},
@@ -278,19 +290,18 @@
var dateDiv = $("div_"+this.params.dayListTableId);
dateDiv.innerHTML = currentYear + "/" + (currentMonth+1);
-
var wd = getDay(this.currentDate, this.params.firstWeekDay);
var currentMonthDays = daysInMonthByDate(this.currentDate);
var previousMonthDays = daysInMonth(currentYear, currentMonth-1);
- var wn = weekNumber(currentYear, currentMonth, this.params.minDaysInFirstWeek,
this.params.firstWeekDay) /// fix it
var p=0;
this.days = [];
var dayCounter = previousMonthDays - wd + 1;
+
// previuos month days
if (wd>0) while (dayCounter<=previousMonthDays) {this.days.push({day:dayCounter,
_isWeekend: this.isWeekend(p), _month:-1, _className:"Disableddayclass"});
dayCounter++; p++; }
dayCounter = 1;
-
+
// current month days
if (this.daysData &&
this.daysData.index[currentYear+'-'+currentMonth]!=undefined)
{
@@ -314,6 +325,7 @@
{
flag = this.isWeekend(p%7);
obj = this.daysData.days[idx];
+ obj.day = dayCounter;
obj._isWeekend = flag;
obj._month = 0;
if (flag) {obj._className = "Weekenddayclass"; obj._hoverClassName =
"Hoveredweekclass";}
@@ -338,30 +350,36 @@
// next month days
var ld = 7-p%7;
if (ld!=7) while (dayCounter<=ld) { this.days.push({day:dayCounter++, _isWeekend:
this.isWeekend(p%7), _month:1, _className:"Disableddayclass"}); }
-
+
// render
p=0;
var element;
var dataobj;
+ var wn;
+ if (this.params.showWeeksBar) wn = weekNumber(currentYear, currentMonth,
this.params.minDaysInFirstWeek, this.params.firstWeekDay); /// fix it
this.selectedDayElement=null;
+
for (var k=1;k<7;k++)
{
//
dataobj = this.days[p];
- var obj = $(this.params.weekNumberBarId+k).parentNode;
-
- if (k!=1 && currentMonth==11 && dataobj && dataobj.day>27)
+ var obj = $(this.params.weekNumberBarId+k);
+ element = obj.firstChild;
+
+ // week number update
+ if (this.params.showWeeksBar)
{
- if (getFirstWeek(currentYear+1, this.params.minDaysInFirstWeek,
this.params.firstWeekDay).weekNumber==1) wn=1;
+ if (k!=1 && currentMonth==11 && dataobj &&
dataobj.day>27)
+ {
+ if (getFirstWeek(currentYear+1, this.params.minDaysInFirstWeek,
this.params.firstWeekDay).weekNumber==1) wn=1;
+ }
+ element.innerHTML = (dataobj) ? this.params.weekNumberMarkup( {weekNumber: wn++} )
: "";
+ if (k==1&&wn>52) wn=1;
+ element = element.nextSibling;
}
-
- element = obj.firstChild;
- element.innerHTML = (dataobj) ? this.params.weekNumberMarkup( {weekNumber: wn++} )
: "";
-
- if (k==1&&wn>52) wn=1;
-
- while (element=element.nextSibling)
+
+ while (element)
{
// TODO fix start/stop event's calls
this.stopCellEvents(element);
@@ -369,7 +387,7 @@
if (dataobj) {
element.data=dataobj.day;
element.innerHTML = this.params.dayListMarkup( dataobj );
- element.className = dataobj._className + (todayflag /*&& dataobj._month==0
*/&& dataobj.day==todaydate ? " Todayclass" : "");
+ element.className = dataobj._className + (todayflag && dataobj._month==0
&& dataobj.day==todaydate ? " Todayclass" : "");
if (selectedflag && dataobj._month==0 && dataobj.day==selecteddate)
{ this.selectedDateElement = element; element.className+=" Selecteddayclass"; }
this.setCellEvents(element);
p++;
@@ -377,9 +395,11 @@
//element.data="";
element.innerHTML = "";
}
+
dataobj = this.days[p];
+ element=element.nextSibling;
}
- }
+ }
},
nextMonth: function() {
@@ -425,15 +445,15 @@
});
Calendar.getDayView = function(context) {
- return Richfaces.eval("day", context);
+ return Richfaces.evalSimpleMacro("day", context);
};
Calendar.getWeekNumberView = function(context) {
- return Richfaces.eval("weekNumber", context);
+ return Richfaces.evalSimpleMacro("weekNumber", context);
};
Calendar.getWeekDayView = function(context) {
- return Richfaces.eval("weekDay", context);
+ return Richfaces.evalSimpleMacro("weekDayLabel", context);
};
Calendar.getControl = function(context, attributes, text, functionName) {
@@ -444,7 +464,7 @@
if (attributes) {
Object.extend(attr, attributes);
}
- return new E('button',attr,[new T(text)]).getContent(context);
+ return new E('button',attr,[new T(text)]);
};
Calendar.nextYearControl = function(context) {
@@ -493,4 +513,4 @@
])
])
]
- );
+ );
\ No newline at end of file