Allow camera capabilities to be configured.

This commit is contained in:
Dermot Duffy
2024-03-26 21:00:15 -07:00
parent 0c7260d95a
commit 95c44adcf1
63 changed files with 2308 additions and 1447 deletions
+12 -5
View File
@@ -1,6 +1,6 @@
import { ViewContext } from 'view';
import { CameraManager } from '../camera-manager/manager';
import { MediaQuery } from '../camera-manager/types';
import { CapabilitySearchOptions, MediaQuery } from '../camera-manager/types';
import { dispatchFrigateCardErrorEvent } from '../components/message';
import { CardWideConfig, FrigateCardView } from '../config/types';
import { MEDIA_CHUNK_SIZE_DEFAULT } from '../const';
@@ -30,9 +30,16 @@ export const changeViewToRecentEventsForCameraAndDependents = async (
useCache?: boolean;
},
): Promise<void> => {
const capabilitySearch: CapabilitySearchOptions =
!options?.eventsMediaType || options?.eventsMediaType === 'all'
? {
anyCapabilities: ['clips', 'snapshots'],
}
: options.eventsMediaType;
const cameraIDs = options?.allCameras
? cameraManager.getStore().getVisibleCameraIDs()
: cameraManager.getStore().getAllDependentCameras(view.camera);
? cameraManager.getStore().getCameraIDsWithCapability(capabilitySearch)
: cameraManager.getStore().getAllDependentCameras(view.camera, capabilitySearch);
if (!cameraIDs.size) {
return;
}
@@ -99,8 +106,8 @@ export const changeViewToRecentRecordingForCameraAndDependents = async (
},
): Promise<void> => {
const cameraIDs = options?.allCameras
? cameraManager.getStore().getVisibleCameraIDs()
: cameraManager.getStore().getAllDependentCameras(view.camera);
? cameraManager.getStore().getCameraIDsWithCapability('recordings')
: cameraManager.getStore().getAllDependentCameras(view.camera, 'recordings');
if (!cameraIDs.size) {
return;
}
+8 -3
View File
@@ -1,8 +1,8 @@
import { CameraManagerCameraCapabilities } from '../camera-manager/types';
import { Capabilities } from '../camera-manager/capabilities';
import { FrigateCardPTZConfig, PTZ_CONTROL_ACTIONS } from '../config/types';
export const hasUsablePTZ = (
capabilities: CameraManagerCameraCapabilities | null,
capabilities: Capabilities | null,
config: FrigateCardPTZConfig,
): boolean => {
for (const actionName of PTZ_CONTROL_ACTIONS) {
@@ -10,5 +10,10 @@ export const hasUsablePTZ = (
return true;
}
}
return !!capabilities?.ptz;
const ptzCapabilities = capabilities?.getPTZCapabilities();
return (
!!ptzCapabilities?.panTilt?.length ||
!!ptzCapabilities?.zoom?.length ||
!!ptzCapabilities?.presets?.length
);
};