in src/timeLine.ts [229:276]
public static SELECT_PERIOD(
datePeriod: ITimelineDatePeriodBase,
granularity: GranularityType,
calendar,
periodDate: Date,
) {
let startDate: Date = periodDate;
let endDate: Date;
switch (granularity) {
case GranularityType.day:
endDate = calendar.getNextDate(periodDate);
break;
case GranularityType.week:
({ startDate, endDate } = calendar.getWeekPeriod(periodDate));
break;
case GranularityType.month:
({ startDate, endDate } = calendar.getMonthPeriod(periodDate));
break;
case GranularityType.quarter:
({ startDate, endDate } = calendar.getQuarterPeriod(periodDate));
break;
case GranularityType.year:
({ startDate, endDate } = calendar.getYearPeriod(periodDate));
break;
}
if (granularity === GranularityType.day) {
const checkDatesForDayGranularity: boolean =
datePeriod.startDate <= startDate && endDate <= datePeriod.endDate ||
startDate.toString() === datePeriod.endDate.toString();
if (!checkDatesForDayGranularity) {
startDate = null;
endDate = null;
}
} else {
const startDateAvailable = (datePeriod.startDate <= startDate && startDate <= datePeriod.endDate);
const endDateAvailable = (datePeriod.startDate <= endDate && endDate <= datePeriod.endDate);
if (!startDateAvailable && !endDateAvailable) {
startDate = null;
endDate = null;
}
}
return { startDate, endDate };
}