UNPKG

angular-calendar-timeline

Version:

A timeline for angular that shows events on a timeline board in different modes: days, weeks, and months.

47 lines 8.04 kB
import { __decorate } from "tslib"; import { DatesCacheDecorator } from '../helpers/cache'; import { DateHelpers } from "../helpers/date-helpers"; import { BaseViewModeAdaptor } from "./base-view-mode-adaptor"; export class MonthsViewModeAdaptor extends BaseViewModeAdaptor { getBeginningDateOfColumn(date) { const start = new Date(date); start.setDate(1); return DateHelpers.dayBeginningTime(start); } getEndingDateOfColumn(date) { const end = new Date(date); end.setDate(DateHelpers.lastDayOfMonth(date).getDate()); return DateHelpers.dayEndingTime(end); } getUniqueColumnsWithinRange(startDate, endDate) { const diff = this._getCountOfFullMonths(startDate, endDate); return (diff < 0 ? 0 : diff) + 1; } getDurationInColumns(startDate, endDate) { const diff = this._getCountOfFullMonths(startDate, endDate); const firstMonthCompletedPercent = ((startDate.getDate() - 1) + (startDate.getHours() / 24)) / DateHelpers.getDaysInMonth(startDate); const secondMonthCompletedPercent = ((endDate.getDate() - 1) + (endDate.getHours() / 24)) / DateHelpers.getDaysInMonth(endDate); return diff - firstMonthCompletedPercent + secondMonthCompletedPercent; } addColumnToDate(date, months) { const newDate = new Date(date); newDate.setMonth(date.getMonth() + months); const days = DateHelpers.getDaysInMonth(newDate) * (months % 1); newDate.setDate(newDate.getDate() + days); newDate.setHours(newDate.getHours() + ((days % 1) * 24)); return newDate; } _getCountOfFullMonths(startDate, endDate) { const yearsDiff = endDate.getFullYear() - startDate.getFullYear(); const startMonth = startDate.getMonth(); const endMonth = endDate.getMonth() + (12 * yearsDiff); return endMonth - startMonth; } } __decorate([ DatesCacheDecorator() ], MonthsViewModeAdaptor.prototype, "getUniqueColumnsWithinRange", null); __decorate([ DatesCacheDecorator() ], MonthsViewModeAdaptor.prototype, "getDurationInColumns", null); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGhzLXZpZXctbW9kZS1hZGFwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jYWxlbmRhci10aW1lbGluZS9zcmMvbGliL3ZpZXctbW9kZS1hZGFwdG9yL21vbnRocy12aWV3LW1vZGUtYWRhcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRzlELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxtQkFBbUI7SUFDNUQsd0JBQXdCLENBQUMsSUFBVTtRQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpCLE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFVO1FBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRXhELE9BQU8sV0FBVyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBR0QsMkJBQTJCLENBQUMsU0FBZSxFQUFFLE9BQWE7UUFDeEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU1RCxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUdELG9CQUFvQixDQUFDLFNBQWUsRUFBRSxPQUFhO1FBQ2pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUQsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNySSxNQUFNLDJCQUEyQixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWhJLE9BQU8sSUFBSSxHQUFHLDBCQUEwQixHQUFHLDJCQUEyQixDQUFDO0lBQ3pFLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBVSxFQUFFLE1BQWM7UUFDeEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDM0MsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRSxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMxQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFekQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFNBQWUsRUFBRSxPQUFhO1FBQzFELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEUsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUV2RCxPQUFPLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBaENDO0lBREMsbUJBQW1CLEVBQUU7d0VBS3JCO0FBR0Q7SUFEQyxtQkFBbUIsRUFBRTtpRUFPckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlc0NhY2hlRGVjb3JhdG9yIH0gZnJvbSAnLi4vaGVscGVycy9jYWNoZSc7XHJcbmltcG9ydCB7IERhdGVIZWxwZXJzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGF0ZS1oZWxwZXJzXCI7XHJcbmltcG9ydCB7IEJhc2VWaWV3TW9kZUFkYXB0b3J9IGZyb20gXCIuL2Jhc2Utdmlldy1tb2RlLWFkYXB0b3JcIjtcclxuaW1wb3J0IHsgSVZpZXdNb2RlQWRhcHRvciB9IGZyb20gXCIuLi9tb2RlbHNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBNb250aHNWaWV3TW9kZUFkYXB0b3IgZXh0ZW5kcyBCYXNlVmlld01vZGVBZGFwdG9yIGltcGxlbWVudHMgSVZpZXdNb2RlQWRhcHRvciB7XHJcbiAgZ2V0QmVnaW5uaW5nRGF0ZU9mQ29sdW1uKGRhdGU6IERhdGUpOiBEYXRlIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICBzdGFydC5zZXREYXRlKDEpO1xyXG5cclxuICAgIHJldHVybiBEYXRlSGVscGVycy5kYXlCZWdpbm5pbmdUaW1lKHN0YXJ0KTtcclxuICB9XHJcblxyXG4gIGdldEVuZGluZ0RhdGVPZkNvbHVtbihkYXRlOiBEYXRlKTogRGF0ZSB7XHJcbiAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgIGVuZC5zZXREYXRlKERhdGVIZWxwZXJzLmxhc3REYXlPZk1vbnRoKGRhdGUpLmdldERhdGUoKSk7XHJcblxyXG4gICAgcmV0dXJuIERhdGVIZWxwZXJzLmRheUVuZGluZ1RpbWUoZW5kKTtcclxuICB9XHJcblxyXG4gIEBEYXRlc0NhY2hlRGVjb3JhdG9yKClcclxuICBnZXRVbmlxdWVDb2x1bW5zV2l0aGluUmFuZ2Uoc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGRpZmYgPSB0aGlzLl9nZXRDb3VudE9mRnVsbE1vbnRocyhzdGFydERhdGUsIGVuZERhdGUpO1xyXG5cclxuICAgIHJldHVybiAoZGlmZiA8IDAgPyAwIDogZGlmZikgKyAxO1xyXG4gIH1cclxuXHJcbiAgQERhdGVzQ2FjaGVEZWNvcmF0b3IoKVxyXG4gIGdldER1cmF0aW9uSW5Db2x1bW5zKHN0YXJ0RGF0ZTogRGF0ZSwgZW5kRGF0ZTogRGF0ZSk6IG51bWJlciB7XHJcbiAgICBjb25zdCBkaWZmID0gdGhpcy5fZ2V0Q291bnRPZkZ1bGxNb250aHMoc3RhcnREYXRlLCBlbmREYXRlKTtcclxuICAgIGNvbnN0IGZpcnN0TW9udGhDb21wbGV0ZWRQZXJjZW50ID0gKChzdGFydERhdGUuZ2V0RGF0ZSgpIC0gMSkgKyAoc3RhcnREYXRlLmdldEhvdXJzKCkgLyAyNCkpIC8gRGF0ZUhlbHBlcnMuZ2V0RGF5c0luTW9udGgoc3RhcnREYXRlKTtcclxuICAgIGNvbnN0IHNlY29uZE1vbnRoQ29tcGxldGVkUGVyY2VudCA9ICgoZW5kRGF0ZS5nZXREYXRlKCkgLSAxKSArIChlbmREYXRlLmdldEhvdXJzKCkgLyAyNCkpIC8gRGF0ZUhlbHBlcnMuZ2V0RGF5c0luTW9udGgoZW5kRGF0ZSk7XHJcblxyXG4gICAgcmV0dXJuIGRpZmYgLSBmaXJzdE1vbnRoQ29tcGxldGVkUGVyY2VudCArIHNlY29uZE1vbnRoQ29tcGxldGVkUGVyY2VudDtcclxuICB9XHJcblxyXG4gIGFkZENvbHVtblRvRGF0ZShkYXRlOiBEYXRlLCBtb250aHM6IG51bWJlcik6IERhdGUge1xyXG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgbmV3RGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyBtb250aHMpO1xyXG4gICAgY29uc3QgZGF5cyA9IERhdGVIZWxwZXJzLmdldERheXNJbk1vbnRoKG5ld0RhdGUpICogKG1vbnRocyAlIDEpO1xyXG4gICAgbmV3RGF0ZS5zZXREYXRlKG5ld0RhdGUuZ2V0RGF0ZSgpICsgZGF5cyk7XHJcbiAgICBuZXdEYXRlLnNldEhvdXJzKG5ld0RhdGUuZ2V0SG91cnMoKSArICgoZGF5cyAlIDEpICogMjQpKTtcclxuXHJcbiAgICByZXR1cm4gbmV3RGF0ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldENvdW50T2ZGdWxsTW9udGhzKHN0YXJ0RGF0ZTogRGF0ZSwgZW5kRGF0ZTogRGF0ZSk6IG51bWJlciB7XHJcbiAgICBjb25zdCB5ZWFyc0RpZmYgPSBlbmREYXRlLmdldEZ1bGxZZWFyKCkgLSBzdGFydERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IHN0YXJ0TW9udGggPSBzdGFydERhdGUuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGVuZE1vbnRoID0gZW5kRGF0ZS5nZXRNb250aCgpICsgKDEyICogeWVhcnNEaWZmKTtcclxuXHJcbiAgICByZXR1cm4gZW5kTW9udGggLSBzdGFydE1vbnRoO1xyXG4gIH1cclxufVxyXG4iXX0=