2024-05-20 07:02:19 -06:00
|
|
|
import { endOfHourOrCurrentTime } from "./dateUtil";
|
2024-09-04 08:46:49 -05:00
|
|
|
import { TimeRange } from "@/types/timeline";
|
2024-02-22 17:03:34 -07:00
|
|
|
|
2024-03-30 12:44:12 -06:00
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @param timeRange
|
|
|
|
|
* @returns timeRange chunked into individual hours
|
|
|
|
|
*/
|
|
|
|
|
export function getChunkedTimeDay(timeRange: TimeRange): TimeRange[] {
|
|
|
|
|
const endOfThisHour = new Date(timeRange.before * 1000);
|
|
|
|
|
endOfThisHour.setSeconds(0, 0);
|
2024-03-26 15:03:58 -06:00
|
|
|
const data: TimeRange[] = [];
|
2024-03-30 12:44:12 -06:00
|
|
|
const startDay = new Date(timeRange.after * 1000);
|
2024-05-28 08:09:17 -06:00
|
|
|
startDay.setUTCMinutes(0, 0, 0);
|
2024-02-22 17:03:34 -07:00
|
|
|
let start = startDay.getTime() / 1000;
|
|
|
|
|
let end = 0;
|
|
|
|
|
|
|
|
|
|
for (let i = 0; i < 24; i++) {
|
2024-05-28 08:09:17 -06:00
|
|
|
startDay.setHours(startDay.getHours() + 1);
|
2024-02-22 17:03:34 -07:00
|
|
|
|
|
|
|
|
if (startDay > endOfThisHour) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
end = endOfHourOrCurrentTime(startDay.getTime() / 1000);
|
|
|
|
|
data.push({
|
2024-03-26 15:03:58 -06:00
|
|
|
after: start,
|
|
|
|
|
before: end,
|
2024-02-22 17:03:34 -07:00
|
|
|
});
|
|
|
|
|
start = startDay.getTime() / 1000;
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-30 12:44:12 -06:00
|
|
|
data.push({
|
|
|
|
|
after: start,
|
|
|
|
|
before: Math.floor(timeRange.before),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return data;
|
2024-02-22 17:03:34 -07:00
|
|
|
}
|
2024-03-03 21:21:30 -07:00
|
|
|
|
|
|
|
|
export function getChunkedTimeRange(
|
|
|
|
|
startTimestamp: number,
|
|
|
|
|
endTimestamp: number,
|
|
|
|
|
) {
|
|
|
|
|
const endOfThisHour = new Date();
|
|
|
|
|
endOfThisHour.setHours(endOfThisHour.getHours() + 1, 0, 0, 0);
|
2024-03-26 15:03:58 -06:00
|
|
|
const data: TimeRange[] = [];
|
2024-03-03 21:21:30 -07:00
|
|
|
const startDay = new Date(startTimestamp * 1000);
|
2025-07-17 08:17:58 -06:00
|
|
|
startDay.setUTCMinutes(0, 0, 0);
|
2024-03-03 21:21:30 -07:00
|
|
|
let start = startDay.getTime() / 1000;
|
|
|
|
|
let end = 0;
|
|
|
|
|
|
|
|
|
|
while (end < endTimestamp) {
|
|
|
|
|
startDay.setHours(startDay.getHours() + 1);
|
|
|
|
|
|
2024-03-11 17:31:05 -06:00
|
|
|
if (startDay > endOfThisHour) {
|
2024-03-03 21:21:30 -07:00
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
end = endOfHourOrCurrentTime(startDay.getTime() / 1000);
|
|
|
|
|
data.push({
|
2024-03-26 15:03:58 -06:00
|
|
|
after: start,
|
|
|
|
|
before: end,
|
2024-03-03 21:21:30 -07:00
|
|
|
});
|
|
|
|
|
start = startDay.getTime() / 1000;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return { start: startTimestamp, end: endTimestamp, ranges: data };
|
|
|
|
|
}
|