Просмотр исходного кода

when weekMode is variable/liquid, dont display weeks with no visible days

Adam Shaw 11 лет назад
Родитель
Сommit
1d17e1a5ae
2 измененных файлов с 27 добавлено и 5 удалено
  1. 9 5
      src/basic/MonthView.js
  2. 18 0
      tests/automated/weekMode.js

+ 9 - 5
src/basic/MonthView.js

@@ -24,11 +24,15 @@ function MonthView(element, calendar) {
 		t.intervalStart = date.clone().stripTime().startOf('month');
 		t.intervalEnd = t.intervalStart.clone().add('months', 1);
 
-		t.start = t.intervalStart.clone().startOf('week');
-		t.start = t.skipHiddenDays(t.start);
-
-		t.end = t.intervalEnd.clone().add('days', (7 - t.intervalEnd.weekday()) % 7);
-		t.end = t.skipHiddenDays(t.end, -1, true);
+		t.start = t.intervalStart.clone();
+		t.start = t.skipHiddenDays(t.start); // move past the first week if no visible days
+		t.start.startOf('week');
+		t.start = t.skipHiddenDays(t.start); // move past the first invisible days of the week
+
+		t.end = t.intervalEnd.clone();
+		t.end = t.skipHiddenDays(t.end, -1, true); // move in from the last week if no visible days
+		t.end.add('days', (7 - t.end.weekday()) % 7); // move to end of week if not already
+		t.end = t.skipHiddenDays(t.end, -1, true); // move in from the last invisible days of the week
 
 		var rowCnt = Math.ceil( // need to ceil in case there are hidden days
 			t.end.diff(t.start, 'weeks', true) // returnfloat=true

+ 18 - 0
tests/automated/weekMode.js

@@ -113,6 +113,15 @@ describe('weekMode', function() {
 		});
 	});
 
+	it('should not display an empty week when no visible days and weekMode is set to liquid', function() {
+		$('#cal').fullCalendar({
+			defaultDate: '2013-06-01', // June 2013 has first day as Saturday, and last as Sunday!
+			weekMode: 'liquid',
+			weekends: false
+		});
+		expect($('.fc-week').length).toBe(4);
+	});
+
 	describe('when weekMode is set to variable', function() {
 		beforeEach(function() {
 			$('#cal').fullCalendar({
@@ -145,4 +154,13 @@ describe('weekMode', function() {
 			expect(fiveWeekHeight).toEqual(sixWeekHeight);
 		});
 	});
+
+	it('should not display an empty week when no visible days and weekMode is set to variable', function() {
+		$('#cal').fullCalendar({
+			defaultDate: '2013-06-01', // June 2013 has first day as Saturday, and last as Sunday!
+			weekMode: 'variable',
+			weekends: false
+		});
+		expect($('.fc-week').length).toBe(4);
+	});
 });