private _getCategorySubTitle()

in legacy/src/Calendar/EventSources/VSOCapacityEventSource.ts [528:578]


    private _getCategorySubTitle(
        category: Calendar_Contracts.IEventCategory,
        events: Calendar_Contracts.CalendarEvent[],
        query: Calendar_Contracts.IEventQuery,
    ): string {
        // add up days off per person
        const daysOffInRange: Date[] = [];
        const queryStartInUtc = new Date(
            query.startDate.getUTCFullYear(),
            query.startDate.getUTCMonth(),
            query.startDate.getUTCDate(),
            query.startDate.getUTCHours(),
            query.startDate.getUTCMinutes(),
            query.startDate.getUTCSeconds(),
        );
        const queryEndInUtc = new Date(
            query.endDate.getUTCFullYear(),
            query.endDate.getUTCMonth(),
            query.endDate.getUTCDate(),
            query.endDate.getUTCHours(),
            query.endDate.getUTCMinutes(),
            query.endDate.getUTCSeconds(),
        );
        category.events.forEach(e => {
            const event = events.filter(event => event.id === e)[0];
            const datesInRange = Calendar_DateUtils.getDatesInRange(
                Utils_Date.shiftToUTC(new Date(event.startDate)),
                Utils_Date.shiftToUTC(new Date(event.endDate)),
            );
            datesInRange.forEach((dateToCheck: Date, index: number, array: Date[]) => {
                const dateToCheckInUtc = new Date(
                    dateToCheck.getUTCFullYear(),
                    dateToCheck.getUTCMonth(),
                    dateToCheck.getUTCDate(),
                    dateToCheck.getUTCHours(),
                    dateToCheck.getUTCMinutes(),
                    dateToCheck.getUTCSeconds(),
                );
                if (Calendar_DateUtils.isBetween(dateToCheckInUtc, queryStartInUtc, queryEndInUtc)) {
                    daysOffInRange.push(dateToCheck);
                }
            });
        });

        // if user has only one day off, return that date
        if (daysOffInRange.length === 1) {
            return Utils_Date.localeFormat(daysOffInRange[0], Culture.getDateTimeFormat().ShortDatePattern, true);
        }
        // else return total number of days off
        return Utils_String.format("{0} days off", daysOffInRange.length);
    }