jwf-year-calendar
Version:
A full react version of Paul-DS' js-year-calendar, https://github.com/year-calendar/js-year-calendar. Built with support from JWF Process Solutions Ltd.
68 lines (62 loc) • 1.85 kB
text/typescript
import { CalendarDate, SanitizedDataSource } from './types';
export const isAfter = (test: CalendarDate | null, reference: CalendarDate | null) => {
if (test && reference) {
if (test.year > reference.year) {
return true;
}
if (test.month > reference.month && test.year === reference.year) {
return true;
}
if (test.day >= reference.day && test.month === reference.month && test.year === reference.year) {
return true;
}
}
return false;
};
export const isBefore = (test: CalendarDate | null, reference: CalendarDate | null) => {
if (test && reference) {
if (test.year < reference.year) {
return true;
}
if (test.month < reference.month && test.year === reference.year) {
return true;
}
if (test.day <= reference.day && test.month === reference.month && test.year === reference.year) {
return true;
}
}
return false;
};
export const isEqual = (test: CalendarDate | null, reference: CalendarDate | null) => {
if (test && reference) {
if (test.month === reference.month && test.day === reference.day && test.year === reference.year) {
return true;
}
}
return false;
};
export const isBetweenDates = (test: CalendarDate, start: CalendarDate | null, end: CalendarDate | null) => {
if (start && end) {
if (isAfter(test, start) && isBefore(test, end)) {
return true;
}
if (isAfter(test, end) && isBefore(test, start)) {
return true;
}
}
return false;
};
export const relevantEvents = (
date: { day: number; month: number; year: number },
events: SanitizedDataSource | undefined
) => {
const e = [];
if (events) {
for (let i = 0; i < events.length; i += 1) {
if (isBetweenDates(date, events[i].startDate, events[i].endDate)) {
e.push(events[i]);
}
}
}
return e;
};