From cbfa8b9de161da30a5afe164618fe84f8fbc4190 Mon Sep 17 00:00:00 2001 From: guenter-wolf Date: Sat, 26 Jul 2014 00:02:43 -0700 Subject: [PATCH 1/4] bug #2506 Datepicker displays wrong week numbers The datepicker displays wrong week numbers if the starting-day is 0 (Sunday), because it uses the first of the row to determine the weeknumber of the corresponding row. According to ISO 8601 the week starts on Monday and ends on Sunday. Consequently the datapicker will display e.g. for the week Sun Aug 17 - Sat Aug 23 the number of the week that ended on Sun Aug 17 and not the week that starts on Mon Aug 18. Using the date at middle of the row will display the correct week number regardless of whether the week display starts with a Sunday or a Monday. --- src/datepicker/datepicker.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/datepicker/datepicker.js b/src/datepicker/datepicker.js index f8cdf1279f..93b473f068 100644 --- a/src/datepicker/datepicker.js +++ b/src/datepicker/datepicker.js @@ -259,7 +259,8 @@ angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootst if ( scope.showWeeks ) { scope.weekNumbers = []; - var weekNumber = getISO8601WeekNumber( scope.rows[0][0].date ), + // use date at middle of the row (3) instead of 0 to avoid problems when first day is Sunday + var weekNumber = getISO8601WeekNumber( scope.rows[0][3].date ), numWeeks = scope.rows.length; while( scope.weekNumbers.push(weekNumber++) < numWeeks ) {} } From fd55b359270a92d8c98c5f1cc3af62979a4b1cf5 Mon Sep 17 00:00:00 2001 From: guenter-wolf Date: Sat, 26 Jul 2014 00:19:16 -0700 Subject: [PATCH 2/4] bug #2506 Datepicker displays wrong week numbers fix bug #2506 Datepicker displays wrong week numbers. also fixed some white space problems jshint was complaining about. --- src/datepicker/datepicker.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/datepicker/datepicker.js b/src/datepicker/datepicker.js index 93b473f068..15198d5d7e 100644 --- a/src/datepicker/datepicker.js +++ b/src/datepicker/datepicker.js @@ -260,8 +260,8 @@ angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootst if ( scope.showWeeks ) { scope.weekNumbers = []; // use date at middle of the row (3) instead of 0 to avoid problems when first day is Sunday - var weekNumber = getISO8601WeekNumber( scope.rows[0][3].date ), - numWeeks = scope.rows.length; + var weekNumber = getISO8601WeekNumber(scope.rows[0][3].date); + var numWeeks = scope.rows.length; while( scope.weekNumbers.push(weekNumber++) < numWeeks ) {} } }; From ce42b305d0a593a01f689c9a112531485eb4c4be Mon Sep 17 00:00:00 2001 From: guenter-wolf Date: Sat, 26 Jul 2014 00:41:53 -0700 Subject: [PATCH 3/4] bug #2506 Datepicker displays wrong week numbers fix bug #2506 Datepicker displays wrong week numbers also fixing the unit test. correct ISO week numbers are here: http://www.epochconverter.com/date-and-time/weeknumbers-by-year.php?year=2010 --- src/datepicker/test/datepicker.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/datepicker/test/datepicker.spec.js b/src/datepicker/test/datepicker.spec.js index 1eb14a434d..c6a86a2543 100644 --- a/src/datepicker/test/datepicker.spec.js +++ b/src/datepicker/test/datepicker.spec.js @@ -135,7 +135,7 @@ describe('datepicker directive', function () { }); it('renders the week numbers based on ISO 8601', function() { - expect(getWeeks()).toEqual(['34', '35', '36', '37', '38', '39']); + expect(getWeeks()).toEqual(['35','36','37','38','39','40']); }); it('value is correct', function() { From 5ee3a6fac4c1a2cd3802809537ffb63003a48941 Mon Sep 17 00:00:00 2001 From: guenter-wolf Date: Thu, 28 Aug 2014 16:39:31 -0700 Subject: [PATCH 4/4] bug #2506 Datepicker displays wrong week numbers fix bug #2506 Datepicker displays wrong week numbers. also fixed another week number bug: It calculates the ISO 8601 Week Number only for the first row of a month and for the following rows of this month it just increments the week number. This generally works, but it may create wrong week numbers for December and January. --- src/datepicker/datepicker.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/datepicker/datepicker.js b/src/datepicker/datepicker.js index 15198d5d7e..2755ef90f3 100644 --- a/src/datepicker/datepicker.js +++ b/src/datepicker/datepicker.js @@ -259,10 +259,11 @@ angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootst if ( scope.showWeeks ) { scope.weekNumbers = []; - // use date at middle of the row (3) instead of 0 to avoid problems when first day is Sunday - var weekNumber = getISO8601WeekNumber(scope.rows[0][3].date); var numWeeks = scope.rows.length; - while( scope.weekNumbers.push(weekNumber++) < numWeeks ) {} + for (var r = 0; r < numWeeks; r++) { + // use date at middle of the row (3) instead of 0 to avoid problems when first day is Sunday + scope.weekNumbers.push(getISO8601WeekNumber(scope.rows[r][3].date)); + } } };