Files
frigate/web/src/utils/timelineUtil.tsx
T

70 lines
1.6 KiB
TypeScript
Raw Normal View History

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 };
}