mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-11 13:45:25 +03:00
Add setting for default playback rate
This commit is contained in:
parent
00b5cd8db2
commit
616815e2f4
@ -9,6 +9,17 @@ import { Button } from "../ui/button";
|
|||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
import { FrigateConfig } from "@/types/frigateConfig";
|
import { FrigateConfig } from "@/types/frigateConfig";
|
||||||
import { del as delData } from "idb-keyval";
|
import { del as delData } from "idb-keyval";
|
||||||
|
import { usePersistence } from "@/hooks/use-persistence";
|
||||||
|
import {
|
||||||
|
DropdownMenu,
|
||||||
|
DropdownMenuContent,
|
||||||
|
DropdownMenuRadioGroup,
|
||||||
|
DropdownMenuRadioItem,
|
||||||
|
DropdownMenuTrigger,
|
||||||
|
} from "../ui/dropdown-menu";
|
||||||
|
import { isSafari } from "react-device-detect";
|
||||||
|
|
||||||
|
const PLAYBACK_RATE_DEFAULT = isSafari ? [0.5, 1, 2] : [0.5, 1, 2, 4, 8, 16];
|
||||||
|
|
||||||
export default function General() {
|
export default function General() {
|
||||||
const { data: config } = useSWR<FrigateConfig>("config");
|
const { data: config } = useSWR<FrigateConfig>("config");
|
||||||
@ -38,6 +49,8 @@ export default function General() {
|
|||||||
document.title = "General Settings - Frigate";
|
document.title = "General Settings - Frigate";
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
const [playbackRate, setPlaybackRate] = usePersistence("playbackRate", 1);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="flex flex-col md:flex-row size-full">
|
<div className="flex flex-col md:flex-row size-full">
|
||||||
@ -64,6 +77,35 @@ export default function General() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Separator className="flex my-2 bg-secondary" />
|
<Separator className="flex my-2 bg-secondary" />
|
||||||
|
<div className="mt-2 space-y-6">
|
||||||
|
<div className="space-y-0.5">
|
||||||
|
<div className="text-md">Default Playback Rate</div>
|
||||||
|
<div className="text-sm text-muted-foreground my-2">
|
||||||
|
<p>Default playback rate for recordings playback.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<DropdownMenu>
|
||||||
|
<DropdownMenuTrigger asChild>
|
||||||
|
<Button className="w-20">{`${playbackRate}x`}</Button>
|
||||||
|
</DropdownMenuTrigger>
|
||||||
|
<DropdownMenuContent>
|
||||||
|
<DropdownMenuRadioGroup
|
||||||
|
onValueChange={(rate) => setPlaybackRate(parseFloat(rate))}
|
||||||
|
>
|
||||||
|
{PLAYBACK_RATE_DEFAULT.map((rate) => (
|
||||||
|
<DropdownMenuRadioItem
|
||||||
|
key={rate}
|
||||||
|
className="cursor-pointer"
|
||||||
|
value={rate.toString()}
|
||||||
|
>
|
||||||
|
{rate}x
|
||||||
|
</DropdownMenuRadioItem>
|
||||||
|
))}
|
||||||
|
</DropdownMenuRadioGroup>
|
||||||
|
</DropdownMenuContent>
|
||||||
|
</DropdownMenu>
|
||||||
|
<Separator className="flex my-2 bg-secondary" />
|
||||||
<div className="mt-2 space-y-6">
|
<div className="mt-2 space-y-6">
|
||||||
<div className="space-y-0.5">
|
<div className="space-y-0.5">
|
||||||
<div className="text-md">Low Data Mode</div>
|
<div className="text-md">Low Data Mode</div>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user