2
0
Эх сурвалжийг харах

list view respects nextDayThreshold

Adam Shaw 9 жил өмнө
parent
commit
8fa8a258e9

+ 13 - 14
src/list/ListView.js

@@ -76,31 +76,30 @@ var ListViewGrid = Grid.extend({
 	// slices by day
 	// slices by day
 	spanToSegs: function(span) {
 	spanToSegs: function(span) {
 		var view = this.view;
 		var view = this.view;
-		var dayStart = view.start.clone();
-		var dayEnd;
+		var dayStart = view.start.clone().time(0); // timed, so segs get times!
 		var seg;
 		var seg;
 		var segs = [];
 		var segs = [];
 
 
 		while (dayStart < view.end) {
 		while (dayStart < view.end) {
-			dayEnd = dayStart.clone().add(1, 'day');
+
 			seg = intersectRanges(span, {
 			seg = intersectRanges(span, {
 				start: dayStart,
 				start: dayStart,
-				end: dayEnd
+				end: dayStart.clone().add(1, 'day')
 			});
 			});
-			if (seg) {
-				// might have ambig-timed dates. ensure all have times.
-				// TODO: consolidate
-				if (!seg.start.hasTime()) {
-					seg.start.time(0);
-				}
-				if (!seg.end.hasTime()) {
-					seg.end.time(0);
-				}
 
 
+			if (seg) {
 				segs.push(seg);
 				segs.push(seg);
 			}
 			}
 
 
-			dayStart = dayEnd;
+			dayStart.add(1, 'day');
+
+			// detect when span won't go fully into the next day,
+			// and mutate the latest seg to the be the end.
+			if (span.end.hasTime() && span.end < dayStart.clone().add(this.view.nextDayThreshold)) {
+				seg.end = span.end.clone();
+				seg.isEnd = true;
+				break;
+			}
 		}
 		}
 
 
 		return segs;
 		return segs;

+ 25 - 5
tests/automated/ListView.js

@@ -186,9 +186,30 @@ describe('ListView rendering', function() {
 			});
 			});
 		});
 		});
 
 
-		// does not currently respect it. probably better this way.
-		/*
-		it('respects nextDayThreshold', function() {
+		it('renders same days when equal to nextDayThreshold', function() {
+			options.nextDayThreshold = '09:00';
+			options.events = [
+				{
+					title: 'event 1',
+					start: '2016-08-15T07:00',
+					end: '2016-08-17T09:00'
+				}
+			];
+
+			$('#cal').fullCalendar(options);
+
+			var events = getEventInfo();
+
+			expect(events.length).toBe(3);
+			expect(events[0].title).toBe('event 1');
+			expect(events[0].timeText).toBe('7:00am - 12:00am');
+			expect(events[1].title).toBe('event 1');
+			expect(events[1].timeText).toBe('all-day');
+			expect(events[2].title).toBe('event 1');
+			expect(events[2].timeText).toBe('12:00am - 9:00am');
+		});
+
+		it('renders fewer days when before nextDayThreshold', function() {
 			options.nextDayThreshold = '09:00';
 			options.nextDayThreshold = '09:00';
 			options.events = [
 			options.events = [
 				{
 				{
@@ -206,9 +227,8 @@ describe('ListView rendering', function() {
 			expect(events[0].title).toBe('event 1');
 			expect(events[0].title).toBe('event 1');
 			expect(events[0].timeText).toBe('7:00am - 12:00am');
 			expect(events[0].timeText).toBe('7:00am - 12:00am');
 			expect(events[1].title).toBe('event 1');
 			expect(events[1].title).toBe('event 1');
-			expect(events[1].timeText).toBe('all-day');
+			expect(events[1].timeText).toBe('12:00am - 8:00am');
 		});
 		});
-		*/
 	});
 	});
 
 
 	describe('when an event has no title', function() {
 	describe('when an event has no title', function() {