routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
+50
@@ -0,0 +1,50 @@
|
||||
import { copyTimestamp, getDayIdentifier, getTimestampIdentifier, isTimedless, nextMinutes, parseTimestamp, updateHasTime } from "./timestamp.js"; // Types
|
||||
export function parseEvent(input, index, startProperty, endProperty, timed = false, category = false) {
|
||||
const startInput = input[startProperty];
|
||||
const endInput = input[endProperty];
|
||||
const startParsed = parseTimestamp(startInput, true);
|
||||
const endParsed = endInput ? parseTimestamp(endInput, true) : startParsed;
|
||||
const start = isTimedless(startInput) ? updateHasTime(startParsed, timed) : startParsed;
|
||||
const end = isTimedless(endInput) ? updateHasTime(endParsed, timed) : endParsed;
|
||||
const startIdentifier = getDayIdentifier(start);
|
||||
const startTimestampIdentifier = getTimestampIdentifier(start);
|
||||
const endIdentifier = getDayIdentifier(end);
|
||||
const endOffset = start.hasTime ? 0 : 2359;
|
||||
const endTimestampIdentifier = getTimestampIdentifier(end) + endOffset;
|
||||
const allDay = !start.hasTime;
|
||||
return {
|
||||
input,
|
||||
start,
|
||||
startIdentifier,
|
||||
startTimestampIdentifier,
|
||||
end,
|
||||
endIdentifier,
|
||||
endTimestampIdentifier,
|
||||
allDay,
|
||||
index,
|
||||
category
|
||||
};
|
||||
}
|
||||
export function isEventOn(event, dayIdentifier) {
|
||||
return dayIdentifier >= event.startIdentifier && dayIdentifier <= event.endIdentifier;
|
||||
}
|
||||
export function isEventOnDay(event, day, inRange) {
|
||||
if (inRange) {
|
||||
const dayStart = nextMinutes(copyTimestamp(day), inRange[0]);
|
||||
const dayEnd = nextMinutes(copyTimestamp(day), inRange[1]);
|
||||
const starts = event.startTimestampIdentifier < getTimestampIdentifier(dayEnd);
|
||||
const ends = event.endTimestampIdentifier > getTimestampIdentifier(dayStart);
|
||||
return starts && ends;
|
||||
}
|
||||
return isEventOn(event, getDayIdentifier(day));
|
||||
}
|
||||
export function isEventHiddenOn(event, day) {
|
||||
return event.end.time === '00:00' && event.end.date === day.date && event.start.date !== day.date;
|
||||
}
|
||||
export function isEventStart(event, day, dayIdentifier, firstWeekday) {
|
||||
return dayIdentifier === event.startIdentifier || firstWeekday === day.weekday && isEventOn(event, dayIdentifier);
|
||||
}
|
||||
export function isEventOverlapping(event, startIdentifier, endIdentifier) {
|
||||
return startIdentifier <= event.endIdentifier && endIdentifier >= event.startIdentifier;
|
||||
}
|
||||
//# sourceMappingURL=events.js.map
|
||||
Reference in New Issue
Block a user