mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-05-08 06:25:27 +03:00
use helper for chunked time range
This commit is contained in:
parent
9c1fb2e5e9
commit
7aeca95434
@ -38,6 +38,22 @@ export function getChunkedTimeDay(timeRange: TimeRange): TimeRange[] {
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find the chunk index that contains the given timestamp.
|
||||||
|
* Uses half-open intervals [after, before) for all chunks except the last,
|
||||||
|
* which uses a closed interval [after, before] so the terminal boundary
|
||||||
|
* is always reachable.
|
||||||
|
*/
|
||||||
|
export function findChunkIndex(chunks: TimeRange[], timestamp: number): number {
|
||||||
|
return chunks.findIndex((chunk, i) => {
|
||||||
|
const isLast = i === chunks.length - 1;
|
||||||
|
return (
|
||||||
|
chunk.after <= timestamp &&
|
||||||
|
(isLast ? chunk.before >= timestamp : chunk.before > timestamp)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export function getChunkedTimeRange(
|
export function getChunkedTimeRange(
|
||||||
startTimestamp: number,
|
startTimestamp: number,
|
||||||
endTimestamp: number,
|
endTimestamp: number,
|
||||||
|
|||||||
@ -26,7 +26,7 @@ import {
|
|||||||
ReviewSummary,
|
ReviewSummary,
|
||||||
ZoomLevel,
|
ZoomLevel,
|
||||||
} from "@/types/review";
|
} from "@/types/review";
|
||||||
import { getChunkedTimeDay } from "@/utils/timelineUtil";
|
import { findChunkIndex, getChunkedTimeDay } from "@/utils/timelineUtil";
|
||||||
import {
|
import {
|
||||||
MutableRefObject,
|
MutableRefObject,
|
||||||
useCallback,
|
useCallback,
|
||||||
@ -169,9 +169,7 @@ export function RecordingView({
|
|||||||
[timeRange],
|
[timeRange],
|
||||||
);
|
);
|
||||||
const [selectedRangeIdx, setSelectedRangeIdx] = useState(
|
const [selectedRangeIdx, setSelectedRangeIdx] = useState(
|
||||||
chunkedTimeRange.findIndex((chunk) => {
|
findChunkIndex(chunkedTimeRange, startTime),
|
||||||
return chunk.after <= startTime && chunk.before > startTime;
|
|
||||||
}),
|
|
||||||
);
|
);
|
||||||
const currentTimeRange = useMemo<TimeRange>(
|
const currentTimeRange = useMemo<TimeRange>(
|
||||||
() =>
|
() =>
|
||||||
@ -274,9 +272,7 @@ export function RecordingView({
|
|||||||
|
|
||||||
const updateSelectedSegment = useCallback(
|
const updateSelectedSegment = useCallback(
|
||||||
(currentTime: number, updateStartTime: boolean) => {
|
(currentTime: number, updateStartTime: boolean) => {
|
||||||
const index = chunkedTimeRange.findIndex(
|
const index = findChunkIndex(chunkedTimeRange, currentTime);
|
||||||
(seg) => seg.after <= currentTime && seg.before > currentTime,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (index != -1) {
|
if (index != -1) {
|
||||||
if (updateStartTime) {
|
if (updateStartTime) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user