[richfaces-svn-commits] JBoss Rich Faces SVN: r1272 - trunk/sandbox/calendar/design/calendar-js.
richfaces-svn-commits at lists.jboss.org
richfaces-svn-commits at lists.jboss.org
Fri Jun 22 09:22:34 EDT 2007
Author: pyaschenko
Date: 2007-06-22 09:22:34 -0400 (Fri, 22 Jun 2007)
New Revision: 1272
Modified:
trunk/sandbox/calendar/design/calendar-js/calendar-prototype.js
trunk/sandbox/calendar/design/calendar-js/calendar-xhtml.html
Log:
right weeknumber calculation added
Modified: trunk/sandbox/calendar/design/calendar-js/calendar-prototype.js
===================================================================
--- trunk/sandbox/calendar/design/calendar-js/calendar-prototype.js 2007-06-22 13:10:44 UTC (rev 1271)
+++ trunk/sandbox/calendar/design/calendar-js/calendar-prototype.js 2007-06-22 13:22:34 UTC (rev 1272)
@@ -50,21 +50,44 @@
return value;
}
+function getFirstWeek(year, mdifw, fdow) {
+ var date = new Date(year,0,1);
+ var firstday = getDay(date, fdow);
+
+ var weeknumber = (7-firstday<mdifw) ? 0 : 1;
+
+ return {date:date, firstDay:firstday, weekNumber:weeknumber, mdifw:mdifw, fdow:fdow};
+}
+
+function getLastWeekOfPrevYear(o) {
+ var year = o.date.getFullYear()-1;
+ var days = (isLeapYear(year) ? 366 : 365);
+ var obj = getFirstWeek(year, o.mdifw, o.fdow);
+ days = (days - 7 + o.firstDay);
+ var weeks = Math.floor(days/7)+1;
+
+ return weeks+obj.weekNumber;
+}
+
function weekNumber(year, month, mdifw, fdow) {
- var tfdow = fdow;
- var firstDay = new Date(year,0,1);
- var fDay = firstDay.getDay();
- var daynum = ((Date.UTC(year,month,1,0,0,0) - Date.UTC(year,0,1,0,0,0)) /86400000)+1 ;
- var weeknum = Math.round((daynum+7)/7);
- if(fDay == 0) fDay = 7;
- if(tfdow == 0) tfdow = 7;
- var delta = Math.abs(fDay-tfdow);
- if(delta == 0)return weeknum;
- if(tfdow < fDay) delta = 7 - delta;
- if(delta < mdifw) weeknum--;
- return weeknum;
+
+ var o = getFirstWeek(year, mdifw, fdow);
+
+ if (month==0)
+ {
+ if (o.weekNumber==1) return 1;
+ return getLastWeekOfPrevYear(o);
+ }
+ var oneweek = 604800000;
+ var d = new Date(year, month,1);
+ d.setDate( 1+o.firstDay + (getDay(d,fdow)==0?1:0));
+
+ weeknumber = o.weekNumber + Math.floor((d.getTime() - o.date.getTime()) / oneweek);
+
+ return weeknumber;
}
+
Calendar = Class.create();
Object.extend(Calendar.prototype, {
initialize: function(id,parameters) {
@@ -316,18 +339,26 @@
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)
+ {
+ if (getFirstWeek(currentYear+1, this.params.minDaysInFirstWeek, this.params.firstWeekDay).weekNumber==1) wn=1;
+ }
+
element = obj.firstChild;
- element.innerHTML = (this.days[p]) ? this.params.weekNumberMarkup( {weekNumber: wn++} ) : "";
-
+ element.innerHTML = (dataobj) ? this.params.weekNumberMarkup( {weekNumber: wn++} ) : "";
+
+ if (k==1&&wn>52) wn=1;
+
while (element=element.nextSibling)
{
// TODO fix start/stop event's calls
this.stopCellEvents(element);
- if (this.days[p]) {
- dataobj = this.days[p];
+ if (dataobj) {
element.data=dataobj.day;
element.innerHTML = this.params.dayListMarkupArray[p]( dataobj );
element.className = dataobj._className + (todayflag /*&& dataobj._month==0 */&& dataobj.day==todaydate ? " Todayclass" : "");
@@ -338,6 +369,7 @@
//element.data="";
element.innerHTML = "";
}
+ dataobj = this.days[p];
}
}
},
Modified: trunk/sandbox/calendar/design/calendar-js/calendar-xhtml.html
===================================================================
--- trunk/sandbox/calendar/design/calendar-js/calendar-xhtml.html 2007-06-22 13:10:44 UTC (rev 1271)
+++ trunk/sandbox/calendar/design/calendar-js/calendar-xhtml.html 2007-06-22 13:22:34 UTC (rev 1272)
@@ -71,7 +71,7 @@
};
- window.testCalendar = new Calendar('calendar',{dayListTableId:'aaa',weekNumberBarId:'bbb',weekDayBarId:'ccc',dayListMarkupArray: m, weekDayMarkup: weekDayMarkup, weekNumberMarkup: weekNumberMarkup, currentDate: new Date(2007,6,1), selectedDate: new Date(2007,4,5), weekDayLabels:['Sun','Mon','Tue','Wen','Thu','Fri','Sat'], firstWeekDay: 1, minDaysInFirstWeek:4});
+ window.testCalendar = new Calendar('calendar',{dayListTableId:'aaa',weekNumberBarId:'bbb',weekDayBarId:'ccc',dayListMarkupArray: m, weekDayMarkup: weekDayMarkup, weekNumberMarkup: weekNumberMarkup, currentDate: new Date(2007,6,1), selectedDate: new Date(2007,4,5), weekDayLabels:['Sun','Mon','Tue','Wen','Thu','Fri','Sat'], firstWeekDay: 0, minDaysInFirstWeek:4});
loadDataSet1();
}
@@ -167,6 +167,7 @@
<input type="radio" name="dataSet" value="3" id="set3" onchange="selectDataSet(event)" onclick="selectDataSet(event)" /><label for="set3">Set 3</label><br />
-->
<button onclick="changeMonth(false)">prev month</button><button onclick="changeMonth(true)">next month</button><button onclick="today()">Today</button><br />
+<div id="x"></div>
<div id="calendar">Hello</div>
</body>
</html>
More information about the richfaces-svn-commits
mailing list