Allow specifying group

This commit is contained in:
Nicolas Mowen 2024-06-04 08:37:18 -06:00
parent 70abf0a45f
commit c40d878586
3 changed files with 28 additions and 4 deletions

View File

@ -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

View File

@ -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);

View File

@ -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>