Add tooltips to thumbnails

This commit is contained in:
Nicolas Mowen 2024-02-09 16:18:13 -07:00
parent 9e82d6ae43
commit 3354c8c009
3 changed files with 69 additions and 51 deletions

View File

@ -2,6 +2,7 @@ import { baseUrl } from "@/api/baseUrl";
import { Event as FrigateEvent } from "@/types/event"; import { Event as FrigateEvent } from "@/types/event";
import { LuStar } from "react-icons/lu"; import { LuStar } from "react-icons/lu";
import TimeAgo from "../dynamic/TimeAgo"; import TimeAgo from "../dynamic/TimeAgo";
import { Tooltip, TooltipContent, TooltipTrigger } from "../ui/tooltip";
type EventThumbnailProps = { type EventThumbnailProps = {
event: FrigateEvent; event: FrigateEvent;
@ -9,6 +10,8 @@ type EventThumbnailProps = {
}; };
export function EventThumbnail({ event, onFavorite }: EventThumbnailProps) { export function EventThumbnail({ event, onFavorite }: EventThumbnailProps) {
return ( return (
<Tooltip>
<TooltipTrigger asChild>
<div <div
className="relative rounded bg-cover aspect-square h-24 bg-no-repeat bg-center mr-4" className="relative rounded bg-cover aspect-square h-24 bg-no-repeat bg-center mr-4"
style={{ style={{
@ -26,5 +29,16 @@ export function EventThumbnail({ event, onFavorite }: EventThumbnailProps) {
</div> </div>
</div> </div>
</div> </div>
</TooltipTrigger>
<TooltipContent>
{`${event.label} ${
event.sub_label ? `(${event.sub_label})` : ""
} detected with score of ${(event.data.score * 100).toFixed(0)}% ${
event.data.sub_label_score
? `(${event.data.sub_label_score * 100}%)`
: ""
}`}
</TooltipContent>
</Tooltip>
); );
} }

View File

@ -1,6 +1,7 @@
import { EventThumbnail } from "@/components/image/EventThumbnail"; import { EventThumbnail } from "@/components/image/EventThumbnail";
import LivePlayer from "@/components/player/LivePlayer"; import LivePlayer from "@/components/player/LivePlayer";
import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area"; import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area";
import { TooltipProvider } from "@/components/ui/tooltip";
import { Event as FrigateEvent } from "@/types/event"; import { Event as FrigateEvent } from "@/types/event";
import { FrigateConfig } from "@/types/frigateConfig"; import { FrigateConfig } from "@/types/frigateConfig";
import axios from "axios"; import axios from "axios";
@ -57,6 +58,7 @@ function Live() {
<> <>
{events && events.length > 0 && ( {events && events.length > 0 && (
<ScrollArea> <ScrollArea>
<TooltipProvider>
<div className="flex"> <div className="flex">
{events.map((event) => { {events.map((event) => {
return ( return (
@ -68,6 +70,7 @@ function Live() {
); );
})} })}
</div> </div>
</TooltipProvider>
<ScrollBar orientation="horizontal" /> <ScrollBar orientation="horizontal" />
</ScrollArea> </ScrollArea>
)} )}

View File

@ -16,10 +16,11 @@ export interface Event {
data: { data: {
top_score: number; top_score: number;
score: number; score: number;
sub_label_score?: number;
region: number[]; region: number[];
box: number[]; box: number[];
area: number; area: number;
ratio: number; ratio: number;
type: "object" | "audio" | "manual"; type: "object" | "audio" | "manual";
} };
} }