Dedup same cameras with different zones.

This commit is contained in:
Dermot Duffy
2022-10-02 19:30:16 -07:00
parent 33e0c0da40
commit 72dca1b712
6 changed files with 83 additions and 39 deletions
+11 -7
View File
@@ -6,13 +6,13 @@ import { CameraConfig, ExtendedHomeAssistant, FrigateBrowseMediaSource } from '.
import { View } from '../view';
import { formatDateAndTime, prettifyTitle } from './basic';
import { getRecordingMediaContentID } from './frigate';
import { createChild, createEventParentForChildren } from './ha/browse-media';
import { createChild, createEventParentForChildren, sortYoungestToOldest } from './ha/browse-media';
import {
RecordingSegmentsItem,
sortSegmentsOldestToYoungest,
sortOldestToYoungest,
TimelineDataManager,
} from './timeline-data-manager';
import { getAllDependentCameras } from './camera.js';
import { getAllDependentCameras, getTrueCameras } from './camera.js';
/**
* Change the view to a recent recording.
@@ -132,8 +132,10 @@ const createRecordingChildren = (
): FrigateBrowseMediaSource[] => {
const children: FrigateBrowseMediaSource[] = [];
for (const cameraID of cameraIDs) {
const config = cameras.get(cameraID);
for (const cameraID of getTrueCameras(
cameras, cameraIDs
)) {
const config = cameras.get(cameraID) ?? null;
const recordingSummary = dataManager.getRecordingSummaryForCamera(cameraID);
if (!config?.frigate.camera_name || !recordingSummary) {
continue;
@@ -175,7 +177,9 @@ const createRecordingChildren = (
}
}
}
return children;
// Sort the events by time (to align recordings for different cameras at the
// same time).
return children.sort(sortYoungestToOldest);
};
/**
@@ -208,7 +212,7 @@ export const generateMediaViewerContextForChildren = (
segment.cameraID === child.frigate?.cameraID &&
segment.start >= start &&
segment.end <= end,
order: sortSegmentsOldestToYoungest,
order: sortOldestToYoungest,
});
seekSeconds = getSeekTimeInSegments(
// Recordings start from the top of the hour.