@asadi/angular-date-components
Version:
`Angular Date Components` is a comprehensive angular library of date-related components designed to meet the needs of applications that require localization based on various calendar systems. While the package currently includes two powerful components (S
45 lines • 6.23 kB
JavaScript
import { ADCDateTimeTools } from "@asadi/angular-date-components/core";
/**
* Utility class for handling event-related operations within a scheduler.
* This class provides methods for filtering events based on a date range.
*/
export class ADCSchedulerEventTools {
constructor() {
this.tools = new ADCDateTimeTools();
}
/**
* Filters events that fall within a given date range.
* This method checks whether the start date or end date of an event falls within the specified range.
* It returns an array of events that are within the date range or span across it.
*
* @param startDate - The start date of the date range to filter by.
* @param endDate - The end date of the date range to filter by.
* @param events - An array of events to be filtered.
*
* @returns An array of events that fall within or span across the given date range.
*
* @example
* ```typescript
* const events: ADCISchedulerEvent[] = [
* { startDate: '2024-11-01', endDate: '2024-11-02', title: 'Event 1' },
* { startDate: '2024-11-03', endDate: '2024-11-04', title: 'Event 2' },
* ];
* const filteredEvents = schedulerEventTools.getEventsBetweenDateRange('2024-11-01', '2024-11-03', events);
* console.log(filteredEvents); // Outputs events within the range
* ```
*/
getEventsBetweenDateRange(startDate, endDate, events) {
if (events == null)
return [];
const rangeStart = this.tools.dateOnly(startDate);
const rangeEnd = this.tools.dateOnly(endDate);
return events.filter((e) => {
const eventStart = this.tools.dateOnly(e.startDate);
const eventEnd = this.tools.dateOnly(e.endDate);
return eventStart >= rangeStart && eventStart <= rangeEnd ||
eventEnd >= rangeStart && eventEnd <= rangeEnd ||
eventStart < rangeStart && eventEnd > rangeEnd;
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLWV2ZW50LnRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNhZGkvYW5ndWxhci1kYXRlLWNvbXBvbmVudHMvc2NoZWR1bGVyL3NyYy91dGlscy9zY2hlZHVsZXItZXZlbnQudG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFJdkU7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQUFuQztRQUVxQixVQUFLLEdBQXFCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQXlDdEUsQ0FBQztJQXRDSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkQ7SUFDRCx5QkFBeUIsQ0FBQyxTQUFpQixFQUFFLE9BQWUsRUFBRSxNQUFtQztRQUU3RixJQUFHLE1BQU0sSUFBSSxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFFdkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVoRCxPQUFPLFVBQVUsSUFBSSxVQUFVLElBQUksVUFBVSxJQUFJLFFBQVE7Z0JBQ3pELFFBQVEsSUFBSSxVQUFVLElBQUksUUFBUSxJQUFJLFFBQVE7Z0JBQzlDLFVBQVUsR0FBRyxVQUFVLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFEQ0RhdGVUaW1lVG9vbHMgfSBmcm9tIFwiQGFzYWRpL2FuZ3VsYXItZGF0ZS1jb21wb25lbnRzL2NvcmVcIjtcclxuaW1wb3J0IHsgQURDSVNjaGVkdWxlckV2ZW50IH0gZnJvbSBcIi4uL2ludGVyZmFjZS5nbG9iYWxcIjtcclxuXHJcblxyXG4vKipcclxuICogVXRpbGl0eSBjbGFzcyBmb3IgaGFuZGxpbmcgZXZlbnQtcmVsYXRlZCBvcGVyYXRpb25zIHdpdGhpbiBhIHNjaGVkdWxlci5cclxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBtZXRob2RzIGZvciBmaWx0ZXJpbmcgZXZlbnRzIGJhc2VkIG9uIGEgZGF0ZSByYW5nZS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBBRENTY2hlZHVsZXJFdmVudFRvb2xzXHJcbntcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9vbHM6IEFEQ0RhdGVUaW1lVG9vbHMgPSBuZXcgQURDRGF0ZVRpbWVUb29scygpO1xyXG5cclxuXHJcbiAgICAgIC8qKlxyXG4gICAqIEZpbHRlcnMgZXZlbnRzIHRoYXQgZmFsbCB3aXRoaW4gYSBnaXZlbiBkYXRlIHJhbmdlLlxyXG4gICAqIFRoaXMgbWV0aG9kIGNoZWNrcyB3aGV0aGVyIHRoZSBzdGFydCBkYXRlIG9yIGVuZCBkYXRlIG9mIGFuIGV2ZW50IGZhbGxzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHJhbmdlLlxyXG4gICAqIEl0IHJldHVybnMgYW4gYXJyYXkgb2YgZXZlbnRzIHRoYXQgYXJlIHdpdGhpbiB0aGUgZGF0ZSByYW5nZSBvciBzcGFuIGFjcm9zcyBpdC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gVGhlIHN0YXJ0IGRhdGUgb2YgdGhlIGRhdGUgcmFuZ2UgdG8gZmlsdGVyIGJ5LlxyXG4gICAqIEBwYXJhbSBlbmREYXRlIC0gVGhlIGVuZCBkYXRlIG9mIHRoZSBkYXRlIHJhbmdlIHRvIGZpbHRlciBieS5cclxuICAgKiBAcGFyYW0gZXZlbnRzIC0gQW4gYXJyYXkgb2YgZXZlbnRzIHRvIGJlIGZpbHRlcmVkLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGV2ZW50cyB0aGF0IGZhbGwgd2l0aGluIG9yIHNwYW4gYWNyb3NzIHRoZSBnaXZlbiBkYXRlIHJhbmdlLlxyXG4gICAqIFxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAqIGNvbnN0IGV2ZW50czogQURDSVNjaGVkdWxlckV2ZW50W10gPSBbXHJcbiAgICogICB7IHN0YXJ0RGF0ZTogJzIwMjQtMTEtMDEnLCBlbmREYXRlOiAnMjAyNC0xMS0wMicsIHRpdGxlOiAnRXZlbnQgMScgfSxcclxuICAgKiAgIHsgc3RhcnREYXRlOiAnMjAyNC0xMS0wMycsIGVuZERhdGU6ICcyMDI0LTExLTA0JywgdGl0bGU6ICdFdmVudCAyJyB9LFxyXG4gICAqIF07XHJcbiAgICogY29uc3QgZmlsdGVyZWRFdmVudHMgPSBzY2hlZHVsZXJFdmVudFRvb2xzLmdldEV2ZW50c0JldHdlZW5EYXRlUmFuZ2UoJzIwMjQtMTEtMDEnLCAnMjAyNC0xMS0wMycsIGV2ZW50cyk7XHJcbiAgICogY29uc29sZS5sb2coZmlsdGVyZWRFdmVudHMpOyAvLyBPdXRwdXRzIGV2ZW50cyB3aXRoaW4gdGhlIHJhbmdlXHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgICBnZXRFdmVudHNCZXR3ZWVuRGF0ZVJhbmdlKHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcsIGV2ZW50czogQURDSVNjaGVkdWxlckV2ZW50W10gfCBudWxsKTogQURDSVNjaGVkdWxlckV2ZW50W11cclxuICAgIHtcclxuICAgICAgICBpZihldmVudHMgPT0gbnVsbCkgcmV0dXJuIFtdO1xyXG5cclxuICAgICAgICBjb25zdCByYW5nZVN0YXJ0ID0gdGhpcy50b29scy5kYXRlT25seShzdGFydERhdGUpO1xyXG4gICAgICAgIGNvbnN0IHJhbmdlRW5kID0gdGhpcy50b29scy5kYXRlT25seShlbmREYXRlKTtcclxuICAgIFxyXG4gICAgICAgIHJldHVybiBldmVudHMuZmlsdGVyKChlKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBldmVudFN0YXJ0ID0gdGhpcy50b29scy5kYXRlT25seShlLnN0YXJ0RGF0ZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50RW5kID0gdGhpcy50b29scy5kYXRlT25seShlLmVuZERhdGUpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGV2ZW50U3RhcnQgPj0gcmFuZ2VTdGFydCAmJiBldmVudFN0YXJ0IDw9IHJhbmdlRW5kIHx8IFxyXG4gICAgICAgICAgICBldmVudEVuZCA+PSByYW5nZVN0YXJ0ICYmIGV2ZW50RW5kIDw9IHJhbmdlRW5kIHx8IFxyXG4gICAgICAgICAgICBldmVudFN0YXJ0IDwgcmFuZ2VTdGFydCAmJiBldmVudEVuZCA+IHJhbmdlRW5kXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iXX0=