mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-06-21 03:41:55 +03:00
Miscellaneous fixes (#23217)
Some checks are pending
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
Some checks are pending
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
* fix hardcoded leading-slash hrefs to respect FRIGATE_BASE_PATH * update docs for default detector
This commit is contained in:
parent
7413ce08d4
commit
32daf6f494
@ -72,7 +72,7 @@ This does not affect using hardware for accelerating other tasks such as [semant
|
|||||||
|
|
||||||
# Officially Supported Detectors
|
# Officially Supported Detectors
|
||||||
|
|
||||||
Frigate provides a number of builtin detector types. By default, Frigate will use a single OpenVINO detector running on the CPU. Other detectors may require additional configuration as described below. When using multiple detectors they will run in dedicated processes, but pull from a common queue of detection requests from across all cameras.
|
Frigate provides a number of builtin detector types. By default, Frigate will use a single CPU detector. Other detectors may require additional configuration as described below. When using multiple detectors they will run in dedicated processes, but pull from a common queue of detection requests from across all cameras.
|
||||||
|
|
||||||
## Edge TPU Detector
|
## Edge TPU Detector
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import {
|
|||||||
isRedirectingToLogin,
|
isRedirectingToLogin,
|
||||||
setRedirectingToLogin,
|
setRedirectingToLogin,
|
||||||
} from "@/api/auth-redirect";
|
} from "@/api/auth-redirect";
|
||||||
|
import { baseUrl } from "@/api/baseUrl";
|
||||||
|
|
||||||
export default function ProtectedRoute({
|
export default function ProtectedRoute({
|
||||||
requiredRoles,
|
requiredRoles,
|
||||||
@ -24,7 +25,7 @@ export default function ProtectedRoute({
|
|||||||
!isRedirectingToLogin()
|
!isRedirectingToLogin()
|
||||||
) {
|
) {
|
||||||
setRedirectingToLogin(true);
|
setRedirectingToLogin(true);
|
||||||
window.location.href = "/login";
|
window.location.href = `${baseUrl}login`;
|
||||||
}
|
}
|
||||||
}, [auth.isLoading, auth.isAuthenticated, auth.user]);
|
}, [auth.isLoading, auth.isAuthenticated, auth.user]);
|
||||||
|
|
||||||
|
|||||||
@ -94,7 +94,11 @@ export default function ReviewCard({
|
|||||||
toast.success(t("export.toast.success"), {
|
toast.success(t("export.toast.success"), {
|
||||||
position: "top-center",
|
position: "top-center",
|
||||||
action: (
|
action: (
|
||||||
<a href="/export" target="_blank" rel="noopener noreferrer">
|
<a
|
||||||
|
href={`${baseUrl}export`}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
<Button>{t("export.toast.view")}</Button>
|
<Button>{t("export.toast.view")}</Button>
|
||||||
</a>
|
</a>
|
||||||
),
|
),
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { useApiHost } from "@/api";
|
import { useApiHost } from "@/api";
|
||||||
|
import { baseUrl } from "@/api/baseUrl";
|
||||||
import { useCameraFriendlyName } from "@/hooks/use-camera-friendly-name";
|
import { useCameraFriendlyName } from "@/hooks/use-camera-friendly-name";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
@ -79,7 +80,7 @@ export function ChatAttachmentChip({
|
|||||||
<Tooltip>
|
<Tooltip>
|
||||||
<TooltipTrigger asChild>
|
<TooltipTrigger asChild>
|
||||||
<a
|
<a
|
||||||
href={`/explore?event_id=${eventId}`}
|
href={`${baseUrl}explore?event_id=${eventId}`}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className={cn(
|
className={cn(
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { useApiHost } from "@/api";
|
import { useApiHost } from "@/api";
|
||||||
|
import { baseUrl } from "@/api/baseUrl";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { LuExternalLink } from "react-icons/lu";
|
import { LuExternalLink } from "react-icons/lu";
|
||||||
import {
|
import {
|
||||||
@ -54,7 +55,7 @@ export function ChatEventThumbnailsRow({
|
|||||||
<Tooltip>
|
<Tooltip>
|
||||||
<TooltipTrigger asChild>
|
<TooltipTrigger asChild>
|
||||||
<a
|
<a
|
||||||
href={`/explore?event_id=${event.id}`}
|
href={`${baseUrl}explore?event_id=${event.id}`}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
onClick={(e) => e.stopPropagation()}
|
onClick={(e) => e.stopPropagation()}
|
||||||
|
|||||||
@ -116,7 +116,11 @@ export default function SearchResultActions({
|
|||||||
closeButton: true,
|
closeButton: true,
|
||||||
dismissible: false,
|
dismissible: false,
|
||||||
action: (
|
action: (
|
||||||
<a href="/replay" target="_blank" rel="noopener noreferrer">
|
<a
|
||||||
|
href={`${baseUrl}replay`}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
<Button>
|
<Button>
|
||||||
{t("dialog.toast.goToReplay", { ns: "views/replay" })}
|
{t("dialog.toast.goToReplay", { ns: "views/replay" })}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { useCallback, useState } from "react";
|
import { useCallback, useState } from "react";
|
||||||
|
import { baseUrl } from "@/api/baseUrl";
|
||||||
import {
|
import {
|
||||||
Dialog,
|
Dialog,
|
||||||
DialogContent,
|
DialogContent,
|
||||||
@ -227,7 +228,11 @@ export default function DebugReplayDialog({
|
|||||||
closeButton: true,
|
closeButton: true,
|
||||||
dismissible: false,
|
dismissible: false,
|
||||||
action: (
|
action: (
|
||||||
<a href="/replay" target="_blank" rel="noopener noreferrer">
|
<a
|
||||||
|
href={`${baseUrl}replay`}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
<Button>{t("dialog.toast.goToReplay")}</Button>
|
<Button>{t("dialog.toast.goToReplay")}</Button>
|
||||||
</a>
|
</a>
|
||||||
),
|
),
|
||||||
|
|||||||
@ -163,7 +163,11 @@ export default function ExportDialog({
|
|||||||
toast.success(t("export.toast.queued"), {
|
toast.success(t("export.toast.queued"), {
|
||||||
position: "top-center",
|
position: "top-center",
|
||||||
action: (
|
action: (
|
||||||
<a href="/export" target="_blank" rel="noopener noreferrer">
|
<a
|
||||||
|
href={`${baseUrl}export`}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
<Button>{t("export.toast.view")}</Button>
|
<Button>{t("export.toast.view")}</Button>
|
||||||
</a>
|
</a>
|
||||||
),
|
),
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { useCallback, useState } from "react";
|
import { useCallback, useState } from "react";
|
||||||
|
import { baseUrl } from "@/api/baseUrl";
|
||||||
import { Drawer, DrawerContent, DrawerTrigger } from "../ui/drawer";
|
import { Drawer, DrawerContent, DrawerTrigger } from "../ui/drawer";
|
||||||
import { Button } from "../ui/button";
|
import { Button } from "../ui/button";
|
||||||
import { FaArrowDown, FaCalendarAlt, FaCog, FaFilter } from "react-icons/fa";
|
import { FaArrowDown, FaCalendarAlt, FaCog, FaFilter } from "react-icons/fa";
|
||||||
@ -190,7 +191,11 @@ export default function MobileReviewSettingsDrawer({
|
|||||||
toast.success(t("export.toast.queued", { ns: "components/dialog" }), {
|
toast.success(t("export.toast.queued", { ns: "components/dialog" }), {
|
||||||
position: "top-center",
|
position: "top-center",
|
||||||
action: (
|
action: (
|
||||||
<a href="/export" target="_blank" rel="noopener noreferrer">
|
<a
|
||||||
|
href={`${baseUrl}export`}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
<Button>
|
<Button>
|
||||||
{t("export.toast.view", { ns: "components/dialog" })}
|
{t("export.toast.view", { ns: "components/dialog" })}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import {
|
|||||||
} from "@/components/ui/dropdown-menu";
|
} from "@/components/ui/dropdown-menu";
|
||||||
import { HiDotsHorizontal } from "react-icons/hi";
|
import { HiDotsHorizontal } from "react-icons/hi";
|
||||||
import { useApiHost } from "@/api";
|
import { useApiHost } from "@/api";
|
||||||
|
import { baseUrl } from "@/api/baseUrl";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { Event } from "@/types/event";
|
import { Event } from "@/types/event";
|
||||||
@ -79,7 +80,11 @@ export default function EventMenu({
|
|||||||
closeButton: true,
|
closeButton: true,
|
||||||
dismissible: false,
|
dismissible: false,
|
||||||
action: (
|
action: (
|
||||||
<a href="/replay" target="_blank" rel="noopener noreferrer">
|
<a
|
||||||
|
href={`${baseUrl}replay`}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
<Button>
|
<Button>
|
||||||
{t("dialog.toast.goToReplay", { ns: "views/replay" })}
|
{t("dialog.toast.goToReplay", { ns: "views/replay" })}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@ -49,6 +49,7 @@ import { FiMoreVertical } from "react-icons/fi";
|
|||||||
import { IoMdArrowRoundBack } from "react-icons/io";
|
import { IoMdArrowRoundBack } from "react-icons/io";
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
import MotionReviewTimeline from "@/components/timeline/MotionReviewTimeline";
|
import MotionReviewTimeline from "@/components/timeline/MotionReviewTimeline";
|
||||||
|
import { baseUrl } from "@/api/baseUrl";
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import BlurredIconButton from "@/components/button/BlurredIconButton";
|
import BlurredIconButton from "@/components/button/BlurredIconButton";
|
||||||
import {
|
import {
|
||||||
@ -284,7 +285,11 @@ export default function EventView({
|
|||||||
{
|
{
|
||||||
position: "top-center",
|
position: "top-center",
|
||||||
action: (
|
action: (
|
||||||
<a href="/export" target="_blank" rel="noopener noreferrer">
|
<a
|
||||||
|
href={`${baseUrl}export`}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
<Button>
|
<Button>
|
||||||
{t("export.toast.view", { ns: "components/dialog" })}
|
{t("export.toast.view", { ns: "components/dialog" })}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import { useTranslation } from "react-i18next";
|
|||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { isDesktop, isMobile } from "react-device-detect";
|
import { isDesktop, isMobile } from "react-device-detect";
|
||||||
|
import { baseUrl } from "@/api/baseUrl";
|
||||||
import Logo from "@/components/Logo";
|
import Logo from "@/components/Logo";
|
||||||
import { FrigateConfig } from "@/types/frigateConfig";
|
import { FrigateConfig } from "@/types/frigateConfig";
|
||||||
import { TimeRange } from "@/types/timeline";
|
import { TimeRange } from "@/types/timeline";
|
||||||
@ -363,7 +364,11 @@ export default function MotionSearchView({
|
|||||||
{
|
{
|
||||||
position: "top-center",
|
position: "top-center",
|
||||||
action: (
|
action: (
|
||||||
<a href="/export" target="_blank" rel="noopener noreferrer">
|
<a
|
||||||
|
href={`${baseUrl}export`}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
<Button>
|
<Button>
|
||||||
{t("export.toast.view", { ns: "components/dialog" })}
|
{t("export.toast.view", { ns: "components/dialog" })}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user