in src/utils.ts [279:311]
public static SEPARATE_SELECTION(timelineData: ITimelineData, startDate: Date, endDate: Date): void {
const datePeriods: ITimelineDatePeriod[] = timelineData.currentGranularity.getDatePeriods();
let startDateIndex: number = Utils.FIND_INDEX(datePeriods, (x) => startDate < x.endDate);
let endDateIndex: number = Utils.FIND_INDEX(datePeriods, (x) => endDate <= x.endDate);
startDateIndex = startDateIndex >= 0
? startDateIndex
: 0;
endDateIndex = endDateIndex >= 0
? endDateIndex
: datePeriods.length - 1;
timelineData.selectionStartIndex = startDateIndex;
timelineData.selectionEndIndex = endDateIndex;
const startRatio: number = Utils.GET_DATE_RATIO(datePeriods[startDateIndex], startDate, true);
const endRatio: number = Utils.GET_DATE_RATIO(datePeriods[endDateIndex], endDate, false);
if (endRatio > 0) {
timelineData.currentGranularity.splitPeriod(endDateIndex, endRatio, endDate);
}
if (startRatio > 0) {
const startFration: number = datePeriods[startDateIndex].fraction - startRatio;
timelineData.currentGranularity.splitPeriod(startDateIndex, startFration, startDate);
timelineData.selectionStartIndex++;
timelineData.selectionEndIndex++;
}
}