@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
37 lines • 5.41 kB
JavaScript
import { ADCDateTimeTools } from "@asadi/angular-date-components/core";
/**
* `ResourceSchedulerEventTools` provides utility methods to work with resource scheduler events, such as
* filtering events between a given date range.
*/
export class ResourceSchedulerEventTools {
constructor() {
this.tools = new ADCDateTimeTools();
}
/**
* Filters and returns events that fall within the specified date range.
*
* The method checks each event's start and end dates against the provided range
* and returns events that overlap with the range, are contained within it,
* or completely span it.
*
* @param startDate The start date of the range in string format (e.g., 'YYYY-MM-DD').
* @param endDate The end date of the range in string format (e.g., 'YYYY-MM-DD').
* @param events The list of events to filter, or `null` if no events are provided.
*
* @returns An array of events that fall within the date 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Utc2NoZWR1bGVyLWV2ZW50LnRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNhZGkvYW5ndWxhci1kYXRlLWNvbXBvbmVudHMvcmVzb3VyY2Utc2NoZWR1bGVyL3NyYy91dGlscy9yZXNvdXJjZS1zY2hlZHVsZXItZXZlbnQudG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHdkU7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDJCQUEyQjtJQUF4QztRQUVtQixVQUFLLEdBQXFCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQWdDcEUsQ0FBQztJQTlCRzs7Ozs7Ozs7Ozs7O0tBWUM7SUFDSCx5QkFBeUIsQ0FBQyxTQUFpQixFQUFFLE9BQWUsRUFBRSxNQUEyQztRQUVyRyxJQUFHLE1BQU0sSUFBSSxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFFdkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVoRCxPQUFPLFVBQVUsSUFBSSxVQUFVLElBQUksVUFBVSxJQUFJLFFBQVE7Z0JBQ3pELFFBQVEsSUFBSSxVQUFVLElBQUksUUFBUSxJQUFJLFFBQVE7Z0JBQzlDLFVBQVUsR0FBRyxVQUFVLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFEQ0RhdGVUaW1lVG9vbHMgfSBmcm9tIFwiQGFzYWRpL2FuZ3VsYXItZGF0ZS1jb21wb25lbnRzL2NvcmVcIjtcclxuaW1wb3J0IHsgQURDSVJlc291cmNlU2NoZWR1bGVyRXZlbnQgfSBmcm9tIFwiLi4vaW50ZXJmYWNlLmdsb2JhbFwiO1xyXG5cclxuLyoqXHJcbiAqIGBSZXNvdXJjZVNjaGVkdWxlckV2ZW50VG9vbHNgIHByb3ZpZGVzIHV0aWxpdHkgbWV0aG9kcyB0byB3b3JrIHdpdGggcmVzb3VyY2Ugc2NoZWR1bGVyIGV2ZW50cywgc3VjaCBhcyBcclxuICogZmlsdGVyaW5nIGV2ZW50cyBiZXR3ZWVuIGEgZ2l2ZW4gZGF0ZSByYW5nZS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZVNjaGVkdWxlckV2ZW50VG9vbHNcclxue1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgdG9vbHM6IEFEQ0RhdGVUaW1lVG9vbHMgPSBuZXcgQURDRGF0ZVRpbWVUb29scygpO1xyXG5cclxuICAgIC8qKlxyXG4gICAqIEZpbHRlcnMgYW5kIHJldHVybnMgZXZlbnRzIHRoYXQgZmFsbCB3aXRoaW4gdGhlIHNwZWNpZmllZCBkYXRlIHJhbmdlLlxyXG4gICAqIFxyXG4gICAqIFRoZSBtZXRob2QgY2hlY2tzIGVhY2ggZXZlbnQncyBzdGFydCBhbmQgZW5kIGRhdGVzIGFnYWluc3QgdGhlIHByb3ZpZGVkIHJhbmdlIFxyXG4gICAqIGFuZCByZXR1cm5zIGV2ZW50cyB0aGF0IG92ZXJsYXAgd2l0aCB0aGUgcmFuZ2UsIGFyZSBjb250YWluZWQgd2l0aGluIGl0LCBcclxuICAgKiBvciBjb21wbGV0ZWx5IHNwYW4gaXQuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHN0YXJ0RGF0ZSBUaGUgc3RhcnQgZGF0ZSBvZiB0aGUgcmFuZ2UgaW4gc3RyaW5nIGZvcm1hdCAoZS5nLiwgJ1lZWVktTU0tREQnKS5cclxuICAgKiBAcGFyYW0gZW5kRGF0ZSBUaGUgZW5kIGRhdGUgb2YgdGhlIHJhbmdlIGluIHN0cmluZyBmb3JtYXQgKGUuZy4sICdZWVlZLU1NLUREJykuXHJcbiAgICogQHBhcmFtIGV2ZW50cyBUaGUgbGlzdCBvZiBldmVudHMgdG8gZmlsdGVyLCBvciBgbnVsbGAgaWYgbm8gZXZlbnRzIGFyZSBwcm92aWRlZC5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBldmVudHMgdGhhdCBmYWxsIHdpdGhpbiB0aGUgZGF0ZSByYW5nZS5cclxuICAgKi9cclxuICBnZXRFdmVudHNCZXR3ZWVuRGF0ZVJhbmdlKHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcsIGV2ZW50czogQURDSVJlc291cmNlU2NoZWR1bGVyRXZlbnRbXSB8IG51bGwpOiBBRENJUmVzb3VyY2VTY2hlZHVsZXJFdmVudFtdXHJcbiAge1xyXG4gICAgICBpZihldmVudHMgPT0gbnVsbCkgcmV0dXJuIFtdO1xyXG5cclxuICAgICAgY29uc3QgcmFuZ2VTdGFydCA9IHRoaXMudG9vbHMuZGF0ZU9ubHkoc3RhcnREYXRlKTtcclxuICAgICAgY29uc3QgcmFuZ2VFbmQgPSB0aGlzLnRvb2xzLmRhdGVPbmx5KGVuZERhdGUpO1xyXG4gIFxyXG4gICAgICByZXR1cm4gZXZlbnRzLmZpbHRlcigoZSkgPT4ge1xyXG5cclxuICAgICAgICAgIGNvbnN0IGV2ZW50U3RhcnQgPSB0aGlzLnRvb2xzLmRhdGVPbmx5KGUuc3RhcnREYXRlKTtcclxuICAgICAgICAgIGNvbnN0IGV2ZW50RW5kID0gdGhpcy50b29scy5kYXRlT25seShlLmVuZERhdGUpO1xyXG5cclxuICAgICAgICAgIHJldHVybiBldmVudFN0YXJ0ID49IHJhbmdlU3RhcnQgJiYgZXZlbnRTdGFydCA8PSByYW5nZUVuZCB8fCBcclxuICAgICAgICAgIGV2ZW50RW5kID49IHJhbmdlU3RhcnQgJiYgZXZlbnRFbmQgPD0gcmFuZ2VFbmQgfHwgXHJcbiAgICAgICAgICBldmVudFN0YXJ0IDwgcmFuZ2VTdGFydCAmJiBldmVudEVuZCA+IHJhbmdlRW5kXHJcbiAgICAgIH0pO1xyXG4gIH1cclxufSJdfQ==