angular-calendar-timeline
Version:
A timeline for angular that shows events on a timeline board in different modes: days, weeks, and months.
19 lines • 3.22 kB
JavaScript
import { DateHelpers } from "./date-helpers";
export function DatesCacheDecorator() {
return function (target, methodName, descriptor) {
if (!target.__datesCache) {
target.__datesCache = new Map();
}
const originalMethod = descriptor.value;
descriptor.value = function (...args) {
const cacheKey = `${methodName}-${[...args].map(date => DateHelpers.generateDateId(date)).join('-')}`;
if (target.__datesCache.has(cacheKey)) {
return target.__datesCache.get(cacheKey);
}
const result = originalMethod.apply(this, args);
target.__datesCache.set(cacheKey, result);
return result;
};
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNhbGVuZGFyLXRpbWVsaW5lL3NyYy9saWIvaGVscGVycy9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsTUFBTSxVQUFVLG1CQUFtQjtJQUMvQixPQUFPLFVBQVMsTUFBVyxFQUFFLFVBQWtCLEVBQUUsVUFBOEI7UUFDM0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO1FBQ3JELENBQUM7UUFFRCxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBRXhDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBUyxHQUFHLElBQVk7WUFDdkMsTUFBTSxRQUFRLEdBQUcsR0FBRyxVQUFVLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUV0RyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2hELE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUUxQyxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDLENBQUM7SUFDTixDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZUhlbHBlcnMgfSBmcm9tIFwiLi9kYXRlLWhlbHBlcnNcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBEYXRlc0NhY2hlRGVjb3JhdG9yKCk6IEZ1bmN0aW9uIHtcclxuICAgIHJldHVybiBmdW5jdGlvbih0YXJnZXQ6IGFueSwgbWV0aG9kTmFtZTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcclxuICAgICAgICBpZiAoIXRhcmdldC5fX2RhdGVzQ2FjaGUpIHtcclxuICAgICAgICAgICAgdGFyZ2V0Ll9fZGF0ZXNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCB1bmtub3duPigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xyXG5cclxuICAgICAgICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24oLi4uYXJnczogRGF0ZVtdKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlS2V5ID0gYCR7bWV0aG9kTmFtZX0tJHtbLi4uYXJnc10ubWFwKGRhdGUgPT4gRGF0ZUhlbHBlcnMuZ2VuZXJhdGVEYXRlSWQoZGF0ZSkpLmpvaW4oJy0nKX1gO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRhcmdldC5fX2RhdGVzQ2FjaGUuaGFzKGNhY2hlS2V5KSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5fX2RhdGVzQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XHJcbiAgICAgICAgICAgIHRhcmdldC5fX2RhdGVzQ2FjaGUuc2V0KGNhY2hlS2V5LCByZXN1bHQpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxufVxyXG4iXX0=