Reset query when changing to non-grid .

This commit is contained in:
Dermot Duffy
2023-08-12 09:46:47 -07:00
parent cc77caa96d
commit 8a0ba11fa9
4 changed files with 12 additions and 9 deletions
+8 -4
View File
@@ -1248,9 +1248,9 @@ class FrigateCard extends LitElement {
});
const generateNewQuery =
newView?.isGrid() &&
newView.query &&
(newView.query.getQueryCameraIDs()?.size ?? 0) <= 1;
newView?.query &&
((newView.isGrid() && (newView.query.getQueryCameraIDs()?.size ?? 0) <= 1) ||
(!newView.isGrid() && (newView.query.getQueryCameraIDs()?.size ?? 0) > 1));
if (generateNewQuery && newView && newView.query) {
// If the user requests a grid but the current query does not have a
@@ -1264,7 +1264,11 @@ class FrigateCard extends LitElement {
newView,
newView.query
.clone()
.setQueryCameraIDs(this._cameraManager.getStore().getVisibleCameraIDs()),
.setQueryCameraIDs(
newView.isGrid()
? this._cameraManager.getStore().getVisibleCameraIDs()
: newView.camera,
),
).then((view) => view && this._changeView({ view: view }));
} else {
this._changeView({ view: newView });
-2
View File
@@ -1,8 +1,6 @@
// TODO: Performance of video scanning (pause/play?)
// TODO: Investigate query spam during a grid load
// TODO: Do I need column max?
// TODO: What thumbnails do I show in the live drawer?
import {
CSSResultGroup,
+3 -2
View File
@@ -2,6 +2,7 @@ import cloneDeep from 'lodash-es/cloneDeep.js';
import isEqual from 'lodash-es/isEqual.js';
import uniqWith from 'lodash-es/uniqWith.js';
import { EventQuery, MediaQuery, RecordingQuery } from '../camera-manager/types.js';
import { setify } from '../utils/basic.js';
export type MediaQueries = EventMediaQueries | RecordingMediaQueries;
@@ -38,13 +39,13 @@ class MediaQueriesBase<T extends MediaQuery> {
return cameraIDs;
}
public setQueryCameraIDs(cameraIDs: Set<string>): this {
public setQueryCameraIDs(cameraIDs: string | Set<string>): this {
if (!this._queries) {
return this;
}
const rewrittenQueries: T[] = [];
this._queries.forEach((query) =>
rewrittenQueries.push({ ...query, cameraIDs: cameraIDs }),
rewrittenQueries.push({ ...query, cameraIDs: setify(cameraIDs) }),
);
this._queries = uniqWith(rewrittenQueries, isEqual);
return this;
+1 -1
View File
@@ -427,7 +427,7 @@ describe('View.adoptFromViewIfAppropriate', () => {
});
it('should determine if view supports multiple display modes', () => {
expect(createView({ view: 'live' }).supportsMultipleDisplayModes()).toBeFalsy();
expect(createView({ view: 'live' }).supportsMultipleDisplayModes()).toBeTruthy();
expect(createView({ view: 'media' }).supportsMultipleDisplayModes()).toBeTruthy();
expect(createView({ view: 'clip' }).supportsMultipleDisplayModes()).toBeTruthy();
expect(createView({ view: 'snapshot' }).supportsMultipleDisplayModes()).toBeTruthy();