|
1 | 1 | import dates from './dates';
|
2 | 2 | import { accessor as get } from './accessors';
|
3 | 3 |
|
4 |
| -export function eventSegments(event, first, last, { startAccessor, endAccessor, culture }){ |
| 4 | +export function endOfRange(dateRange, unit = 'day') { |
| 5 | + return { |
| 6 | + first: dateRange[0], |
| 7 | + last: dates.add(dateRange[dateRange.length - 1], 1, unit) |
| 8 | + } |
| 9 | +} |
| 10 | + |
| 11 | +export function eventSegments(event, first, last, { startAccessor, endAccessor, culture }) { |
5 | 12 | let slots = dates.diff(first, last, 'day')
|
6 | 13 | let start = dates.max(dates.startOf(get(event, startAccessor), 'day'), first);
|
7 |
| - let end = dates.min(dates.ceil(get(event, endAccessor), 'day'), dates.add(last, 1, 'day')) |
| 14 | + let end = dates.min(dates.ceil(get(event, endAccessor), 'day'), last) |
8 | 15 |
|
| 16 | + let padding = dates.diff(first, start, 'day'); |
9 | 17 | let span = dates.diff(start, end, 'day');
|
10 | 18 |
|
11 |
| - span = Math.floor(Math.max(Math.min(span, slots), 1)); |
12 |
| - |
13 |
| - let padding = Math.floor(dates.diff(first, start, 'day')); |
| 19 | + span = Math.min(span, slots) |
| 20 | + span = Math.max(span, 1); |
14 | 21 |
|
15 | 22 | return {
|
16 | 23 | event,
|
@@ -54,14 +61,13 @@ export function eventLevels(rowSegments, limit = Infinity){
|
54 | 61 | }
|
55 | 62 |
|
56 | 63 | export function inRange(e, start, end, { startAccessor, endAccessor }){
|
57 |
| - let eStart = get(e, startAccessor) |
58 |
| - let eEnd = get(e, endAccessor) |
| 64 | + let eStart = dates.startOf(get(e, startAccessor), 'day') |
| 65 | + let eEnd = dates.ceil(get(e, endAccessor), 'day') |
59 | 66 |
|
60 |
| - let starts = dates.inRange(eStart, start, end, 'day') |
61 |
| - let during = dates.lt(eStart, start, 'day') && dates.gt(eEnd, end, 'day') |
62 |
| - let ends = dates.lt(eStart, start) && dates.inRange(eEnd, start, end, 'day') |
| 67 | + let startsBeforeEnd = dates.lte(eStart, end, 'day') |
| 68 | + let endsAfterStart = dates.gt(eEnd, start, 'day') |
63 | 69 |
|
64 |
| - return starts || ends || during |
| 70 | + return startsBeforeEnd && endsAfterStart |
65 | 71 | }
|
66 | 72 |
|
67 | 73 |
|
|
0 commit comments