Ensure timeline menu buttons shows up when it should.

This commit is contained in:
Dermot Duffy
2024-03-09 19:57:14 -08:00
parent e4783681d6
commit 6ed1c90554
7 changed files with 1208 additions and 1070 deletions
+2 -7
View File
@@ -3,7 +3,6 @@ import {
ActionsConfig,
ActionType,
FrigateCardCustomAction,
FRIGATE_CARD_VIEW_DEFAULT,
} from '../config/types.js';
import {
convertActionToFrigateCardCustomAction,
@@ -177,14 +176,10 @@ export class ActionsManager {
const viewOnCameraSelect = config?.view.camera_select ?? 'current';
const targetViewName =
viewOnCameraSelect === 'current' ? view.view : viewOnCameraSelect;
const verifiedViewName = this._api
.getViewManager()
.isViewSupportedByCamera(selectCameraID, targetViewName)
? targetViewName
: FRIGATE_CARD_VIEW_DEFAULT;
this._api.getViewManager().setViewByParameters({
viewName: verifiedViewName,
viewName: targetViewName,
cameraID: selectCameraID,
failSafe: true,
});
}
break;
+20 -8
View File
@@ -190,7 +190,17 @@ export class ViewManager {
}
public isViewSupportedByCamera(cameraID: string, view: FrigateCardView): boolean {
const capabilities = this._api.getCameraManager().getCameraCapabilities(cameraID);
const dependentCamerasCapabilities = this._api
.getCameraManager()
.getAggregateCameraCapabilities(
this._api.getCameraManager().getStore().getAllDependentCameras(cameraID),
);
const allCamerasCapabilities = this._api
.getCameraManager()
.getAggregateCameraCapabilities(
this._api.getCameraManager().getStore().getCameraIDs(),
);
switch (view) {
case 'live':
case 'image':
@@ -198,20 +208,22 @@ export class ViewManager {
return true;
case 'clip':
case 'clips':
return !!capabilities?.supportsClips;
return !!dependentCamerasCapabilities?.supportsClips;
case 'snapshot':
case 'snapshots':
return !!capabilities?.supportsSnapshots;
return !!dependentCamerasCapabilities?.supportsSnapshots;
case 'recording':
case 'recordings':
return !!capabilities?.supportsRecordings;
return !!dependentCamerasCapabilities?.supportsRecordings;
case 'timeline':
return !!capabilities?.supportsTimeline;
// Show the timeline if any camera supports it, even cameras unrelated
// to the currently selected camera.
return !!allCamerasCapabilities?.supportsTimeline;
case 'media':
return (
!!capabilities?.supportsClips ||
!!capabilities?.supportsSnapshots ||
!!capabilities?.supportsRecordings
!!dependentCamerasCapabilities?.supportsClips ||
!!dependentCamerasCapabilities?.supportsSnapshots ||
!!dependentCamerasCapabilities?.supportsRecordings
);
}
}