mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-05 18:55:23 +03:00
Also filter tracked object list on camera page
This commit is contained in:
parent
e1e4160663
commit
28bae6ddbf
@ -30,7 +30,6 @@ from tzlocal import get_localzone_name
|
|||||||
|
|
||||||
from frigate.config import FrigateConfig
|
from frigate.config import FrigateConfig
|
||||||
from frigate.const import (
|
from frigate.const import (
|
||||||
ALL_ATTRIBUTE_LABELS,
|
|
||||||
CLIPS_DIR,
|
CLIPS_DIR,
|
||||||
MAX_SEGMENT_DURATION,
|
MAX_SEGMENT_DURATION,
|
||||||
RECORD_DIR,
|
RECORD_DIR,
|
||||||
@ -417,14 +416,19 @@ def set_sub_label(id):
|
|||||||
|
|
||||||
@bp.route("/labels")
|
@bp.route("/labels")
|
||||||
def get_labels():
|
def get_labels():
|
||||||
|
camera = request.args.get("camera", type=str, default="")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
events = Event.select(Event.label).distinct()
|
if camera:
|
||||||
|
events = Event.select(Event.label).where(Event.camera == camera).distinct()
|
||||||
|
else:
|
||||||
|
events = Event.select(Event.label).distinct()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return jsonify(
|
return jsonify(
|
||||||
{"success": False, "message": f"Failed to get labels: {e}"}, "404"
|
{"success": False, "message": f"Failed to get labels: {e}"}, "404"
|
||||||
)
|
)
|
||||||
|
|
||||||
labels = sorted([e.label for e in events if e.label not in ALL_ATTRIBUTE_LABELS])
|
labels = sorted([e.label for e in events])
|
||||||
return jsonify(labels)
|
return jsonify(labels)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -22,6 +22,7 @@ const emptyObject = Object.freeze({});
|
|||||||
|
|
||||||
export default function Camera({ camera }) {
|
export default function Camera({ camera }) {
|
||||||
const { data: config } = useSWR('config');
|
const { data: config } = useSWR('config');
|
||||||
|
const { data: trackedLabels } = useSWR(['labels', { camera }]);
|
||||||
const apiHost = useApiHost();
|
const apiHost = useApiHost();
|
||||||
const [showSettings, setShowSettings] = useState(false);
|
const [showSettings, setShowSettings] = useState(false);
|
||||||
const [viewMode, setViewMode] = useState('live');
|
const [viewMode, setViewMode] = useState('live');
|
||||||
@ -121,7 +122,9 @@ export default function Camera({ camera }) {
|
|||||||
<div className="max-w-5xl">
|
<div className="max-w-5xl">
|
||||||
<video-stream
|
<video-stream
|
||||||
mode="mse"
|
mode="mse"
|
||||||
src={new URL(`${baseUrl.replace(/^http/, 'ws')}live/webrtc/api/ws?src=${cameraConfig.live.stream_name}`)}
|
src={
|
||||||
|
new URL(`${baseUrl.replace(/^http/, 'ws')}live/webrtc/api/ws?src=${cameraConfig.live.stream_name}`)
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
@ -203,7 +206,7 @@ export default function Camera({ camera }) {
|
|||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
<Heading size="sm">Tracked objects</Heading>
|
<Heading size="sm">Tracked objects</Heading>
|
||||||
<div className="flex flex-wrap justify-start">
|
<div className="flex flex-wrap justify-start">
|
||||||
{cameraConfig.objects.track.map((objectType) => (
|
{trackedLabels.map((objectType) => (
|
||||||
<Card
|
<Card
|
||||||
className="mb-4 mr-4"
|
className="mb-4 mr-4"
|
||||||
key={objectType}
|
key={objectType}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user