public static SEPARATE_SELECTION()

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++;
        }
    }