Also filter tracked object list on camera page

This commit is contained in:
Nick Mowen 2023-06-23 14:57:16 -06:00
parent e1e4160663
commit 28bae6ddbf
2 changed files with 12 additions and 5 deletions

View File

@ -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:
if camera:
events = Event.select(Event.label).where(Event.camera == camera).distinct()
else:
events = Event.select(Event.label).distinct() 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)

View File

@ -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}