Files
frigate/web/src/components/card/SearchThumbnailFooter.tsx
T

70 lines
2.1 KiB
TypeScript
Raw Normal View History

2024-10-15 08:24:47 -05:00
import TimeAgo from "../dynamic/TimeAgo";
import useSWR from "swr";
import { FrigateConfig } from "@/types/frigateConfig";
2026-03-29 14:03:07 -05:00
import { useFormattedTimestamp, use24HourTime } from "@/hooks/use-date-utils";
2024-10-15 08:24:47 -05:00
import { SearchResult } from "@/types/search";
2024-10-22 09:01:01 -05:00
import ActivityIndicator from "../indicators/activity-indicator";
import SearchResultActions from "../menu/SearchResultActions";
2024-10-17 06:30:52 -05:00
import { cn } from "@/lib/utils";
import { useTranslation } from "react-i18next";
2024-10-15 08:24:47 -05:00
type SearchThumbnailProps = {
searchResult: SearchResult;
2024-10-17 06:30:52 -05:00
columns: number;
2024-10-15 08:24:47 -05:00
findSimilar: () => void;
refreshResults: () => void;
2025-10-26 13:12:20 -05:00
showTrackingDetails: () => void;
2025-07-07 09:03:57 -05:00
addTrigger: () => void;
2024-10-15 08:24:47 -05:00
};
export default function SearchThumbnailFooter({
searchResult,
2024-10-17 06:30:52 -05:00
columns,
2024-10-15 08:24:47 -05:00
findSimilar,
refreshResults,
2025-10-26 13:12:20 -05:00
showTrackingDetails,
2025-07-07 09:03:57 -05:00
addTrigger,
2024-10-15 08:24:47 -05:00
}: SearchThumbnailProps) {
const { t } = useTranslation(["views/search"]);
2024-10-15 08:24:47 -05:00
const { data: config } = useSWR<FrigateConfig>("config");
// date
2026-03-29 14:03:07 -05:00
const is24Hour = use24HourTime(config);
2024-10-15 08:24:47 -05:00
const formattedDate = useFormattedTimestamp(
searchResult.start_time,
2026-03-29 14:03:07 -05:00
is24Hour
2025-04-22 16:50:21 -05:00
? t("time.formattedTimestampMonthDayHourMinute.24hour", { ns: "common" })
: t("time.formattedTimestampMonthDayHourMinute.12hour", { ns: "common" }),
2024-10-15 08:24:47 -05:00
config?.ui.timezone,
);
return (
2024-10-22 09:01:01 -05:00
<div
className={cn(
2025-10-24 12:08:59 -05:00
"flex w-full flex-row items-center justify-between gap-2 text-white",
2024-10-29 08:06:19 -05:00
columns > 4 && "items-start sm:flex-col lg:flex-row lg:items-center",
2024-10-22 09:01:01 -05:00
)}
>
2025-10-24 12:08:59 -05:00
<div className="flex flex-col items-start text-xs text-white/90 drop-shadow-lg">
2024-10-22 09:01:01 -05:00
{searchResult.end_time ? (
<TimeAgo time={searchResult.start_time * 1000} dense />
) : (
<div>
<ActivityIndicator size={14} />
</div>
2024-10-15 08:24:47 -05:00
)}
2024-10-22 09:01:01 -05:00
{formattedDate}
2024-10-15 08:24:47 -05:00
</div>
2024-10-29 08:06:19 -05:00
<div className="flex flex-row items-center justify-end gap-5 md:gap-4">
2024-10-22 09:01:01 -05:00
<SearchResultActions
searchResult={searchResult}
findSimilar={findSimilar}
refreshResults={refreshResults}
2025-10-26 13:12:20 -05:00
showTrackingDetails={showTrackingDetails}
2025-07-07 09:03:57 -05:00
addTrigger={addTrigger}
2024-10-22 09:01:01 -05:00
/>
</div>
</div>
2024-10-15 08:24:47 -05:00
);
}