mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-12 22:25:24 +03:00
Allow specifying group
This commit is contained in:
parent
70abf0a45f
commit
c40d878586
@ -14,8 +14,12 @@ import { baseUrl } from "@/api/baseUrl";
|
|||||||
|
|
||||||
type AnimatedEventCardProps = {
|
type AnimatedEventCardProps = {
|
||||||
event: ReviewSegment;
|
event: ReviewSegment;
|
||||||
|
selectedGroup?: string;
|
||||||
};
|
};
|
||||||
export function AnimatedEventCard({ event }: AnimatedEventCardProps) {
|
export function AnimatedEventCard({
|
||||||
|
event,
|
||||||
|
selectedGroup,
|
||||||
|
}: AnimatedEventCardProps) {
|
||||||
const { data: config } = useSWR<FrigateConfig>("config");
|
const { data: config } = useSWR<FrigateConfig>("config");
|
||||||
|
|
||||||
const currentHour = useMemo(() => isCurrentHour(event.start_time), [event]);
|
const currentHour = useMemo(() => isCurrentHour(event.start_time), [event]);
|
||||||
@ -53,7 +57,8 @@ export function AnimatedEventCard({ event }: AnimatedEventCardProps) {
|
|||||||
|
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const onOpenReview = useCallback(() => {
|
const onOpenReview = useCallback(() => {
|
||||||
navigate("review", {
|
const url = selectedGroup ? `review?group=${selectedGroup}` : "review";
|
||||||
|
navigate(url, {
|
||||||
state: {
|
state: {
|
||||||
severity: event.severity,
|
severity: event.severity,
|
||||||
recording: {
|
recording: {
|
||||||
@ -64,7 +69,7 @@ export function AnimatedEventCard({ event }: AnimatedEventCardProps) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
axios.post(`reviews/viewed`, { ids: [event.id] });
|
axios.post(`reviews/viewed`, { ids: [event.id] });
|
||||||
}, [navigate, event]);
|
}, [navigate, selectedGroup, event]);
|
||||||
|
|
||||||
// image behavior
|
// image behavior
|
||||||
|
|
||||||
|
|||||||
@ -68,6 +68,19 @@ export default function Events() {
|
|||||||
const [reviewFilter, setReviewFilter, reviewSearchParams] =
|
const [reviewFilter, setReviewFilter, reviewSearchParams] =
|
||||||
useApiFilter<ReviewFilter>();
|
useApiFilter<ReviewFilter>();
|
||||||
|
|
||||||
|
useSearchEffect("group", (reviewGroup) => {
|
||||||
|
if (config && reviewGroup) {
|
||||||
|
const group = config.camera_groups[reviewGroup];
|
||||||
|
|
||||||
|
if (group) {
|
||||||
|
setReviewFilter({
|
||||||
|
...reviewFilter,
|
||||||
|
cameras: group.cameras,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const onUpdateFilter = useCallback(
|
const onUpdateFilter = useCallback(
|
||||||
(newFilter: ReviewFilter) => {
|
(newFilter: ReviewFilter) => {
|
||||||
setReviewFilter(newFilter);
|
setReviewFilter(newFilter);
|
||||||
|
|||||||
@ -224,7 +224,13 @@ export default function LiveDashboardView({
|
|||||||
<TooltipProvider>
|
<TooltipProvider>
|
||||||
<div className="flex items-center gap-2 px-1">
|
<div className="flex items-center gap-2 px-1">
|
||||||
{events.map((event) => {
|
{events.map((event) => {
|
||||||
return <AnimatedEventCard key={event.id} event={event} />;
|
return (
|
||||||
|
<AnimatedEventCard
|
||||||
|
key={event.id}
|
||||||
|
event={event}
|
||||||
|
selectedGroup={cameraGroup}
|
||||||
|
/>
|
||||||
|
);
|
||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
</TooltipProvider>
|
</TooltipProvider>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user