openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #01482
[Merge] lp:~openerp-dev/openobject-client-web/improved_calendar into lp:openobject-client-web
cpa(OpenERP) has proposed merging lp:~openerp-dev/openobject-client-web/improved_calendar into lp:openobject-client-web.
Requested reviews:
OpenERP SA's Web Client R&D (openerp-dev-web)
Related bugs:
#506483 Week number differs on monthly calendar
https://bugs.launchpad.net/bugs/506483
hello,
I have fixed calendar week as per ubuntu calendar.
-Week start from sunday.
-Week number start from 1.
bug no:-506483
Thanks.
--
https://code.launchpad.net/~openerp-dev/openobject-client-web/improved_calendar/+merge/44455
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-client-web/improved_calendar.
=== modified file 'addons/view_calendar/static/javascript/calendar_date.js'
--- addons/view_calendar/static/javascript/calendar_date.js 2010-08-10 12:08:29 +0000
+++ addons/view_calendar/static/javascript/calendar_date.js 2010-12-22 12:47:04 +0000
@@ -76,18 +76,35 @@
return Math.floor((this.getTime() - dt.getTime()) / 86400000);
};
-Date.prototype.getWeek = function(monday) {
-
- var yday = this.getDayOfYear();
- var wday = this.getDay();
-
- if (monday) {
- wday = wday ? wday - 1 : 6;
- }
-
- return Math.floor((yday + 7 - wday) / 7);
+Date.prototype.getWeek = function (dowOffset) {
+
+ dowOffset = typeof(dowOffset) == 'int' ? dowOffset : 0;
+ var newYear = new Date(this.getFullYear(),0,1);
+ var day = newYear.getDay() - dowOffset; //the day of week the year begins on
+ day = (day >= 0 ? day : day + 7);
+ var daynum = Math.floor((this.getTime() - newYear.getTime() -
+ (this.getTimezoneOffset()-newYear.getTimezoneOffset())*60000)/86400000) + 1;
+ var weeknum;
+ //if the year starts before the middle of a week
+ if(day <= 4) {
+ weeknum = Math.floor((daynum+day-1)/7) + 1;
+ if(weeknum > 52) {
+ nYear = new Date(this.getFullYear() + 1,0,1);
+ nday = nYear.getDay() - dowOffset;
+ nday = nday >= 0 ? nday : nday + 7;
+ /*if the next year starts before the middle of
+ the week, it is week #1 of that year*/
+ weeknum = nday <= 4 ? 1 : 53;
+ }
+ }
+ else {
+ weeknum = Math.floor((daynum+day-1)/7);
+ }
+ return weeknum;
};
+
+
Date.prototype.strftime = function(format) {
if (!format) return this.toLocaleString();
=== modified file 'addons/view_calendar/static/javascript/calendar_month.js'
--- addons/view_calendar/static/javascript/calendar_month.js 2010-12-16 07:23:41 +0000
+++ addons/view_calendar/static/javascript/calendar_month.js 2010-12-22 12:47:04 +0000
@@ -40,7 +40,7 @@
this.starts = MochiKit.DateTime.isoDate(getNodeAttribute('calMonth', 'dtStart'));
this.first = MochiKit.DateTime.isoDate(getNodeAttribute('calMonth', 'dtFirst'));
- this.firstWeek = this.first.getWeek(1);
+
this.month = this.first.getMonth();
@@ -87,18 +87,25 @@
this.weeks = [];
var dt = new Date(this.starts);
+ var weekcount = dt.getWeek(0);
for (var i = 0; i < 6; i++) {
var week = new MonthCalendar.Week(this, dt);
this.weeks = this.weeks.concat(week);
-
- var a = MochiKit.DOM.A({href: 'javascript: void(0)', onclick : "getCalendar('" + week.days[0] + "', 'week')"}, this.firstWeek + i);
-
+
+ for (var j = 0; j < 7; j ++) {
+ if (weekcount >= 52){
+ if (dt.getWeek(0) == 1){
+ weekcount = 1;
+ }
+ }
+ dt = dt.getNext();
+ }
+
+ var a = MochiKit.DOM.A({href: 'javascript: void(0)', onclick : "getCalendar('" + week.days[0] + "', 'week')"}, weekcount);
appendChildNodes('calTimeCol', DIV({'style': 'height: 133px'}, a));
-
- for (var j = 0; j < 7; j ++) {
- dt = dt.getNext();
- }
+
+ weekcount= weekcount + 1;
}
//calEventNew
@@ -235,10 +242,10 @@
var getWeekIndex = function(dt) {
// get the first day of the week and return the week number
- while (dt.getWeekDay() > 0) {
+ while (dt.getWeekDay() < 6) {
dt = dt.getPrevious();
}
- return dt.getWeek(1);
+ return dt.getWeek(0);
}
var self = this;
@@ -515,10 +522,10 @@
for (var j = i + 1; j < i + evt.dayspan; j++) {
if (j == 7) break;
-
+
var d = self.days[j];
var cnt = containers[d];
-
+
forEach(cnt.events, function(e) {
cnt.rows.push(evt.row);
e.row = e.row >= evt.row ? e.row + 1 : e.row;
=== modified file 'addons/view_calendar/widgets/utils.py'
--- addons/view_calendar/widgets/utils.py 2010-08-10 12:08:29 +0000
+++ addons/view_calendar/widgets/utils.py 2010-12-22 12:47:04 +0000
@@ -129,9 +129,11 @@
y = self._day.year
m = self._day.month
d = self._day.day
-
- wd = calendar.weekday(y, m, d)
-
+
+ wd = Day(y, m, d).isoweekday()
+ if wd==7:
+ wd=0
+
result = []
for i in range(wd, 0, -1):
@@ -143,7 +145,7 @@
return result
def number(self):
- return self._day.strftime('%W')
+ return self._day.strftime('%U')
days = property(days)
number = property(number)
@@ -204,15 +206,13 @@
def days(self):
days = []
- starts = self.range[0]
first = Day(self.year, self.month, 1)
-
+ starts = first.isocalendar()[2]
for i in range(starts, 0, -1):
days += [first.fromordinal(first.toordinal() - i)]
for i in range(42 - starts):
- days += [first.fromordinal(first.toordinal() + i)]
-
+ days += [first.fromordinal(first.toordinal() + i)]
return days
def weeks(self):
Follow ups