Fix controls issue.

This commit is contained in:
Dermot Duffy
2023-08-09 21:26:12 -07:00
parent d9b2b4d4d8
commit 330f927fdb
4 changed files with 11 additions and 6 deletions
+4 -1
View File
@@ -53,7 +53,10 @@ class ActionHandler extends HTMLElement implements ActionHandler {
}); });
} }
public bind(element: ActionHandlerElement, options): void { public bind(
element: ActionHandlerElement,
options: FrigateCardActionHandlerOptions,
): void {
if (element.actionHandlerOptions) { if (element.actionHandlerOptions) {
// Reset the options on an existing actionHandler. // Reset the options on an existing actionHandler.
element.actionHandlerOptions = options; element.actionHandlerOptions = options;
+1 -2
View File
@@ -1,10 +1,9 @@
// TODO: Performance of video scanning (pause/play?) // TODO: Performance of video scanning (pause/play?)
// TODO: Investigate query spam during a grid load // TODO: Investigate query spam during a grid load
// TODO: Test live pre-load
// TODO: Is the query reset in card.ts correct for media filter multi-camera queries that are not all cameras? // TODO: Is the query reset in card.ts correct for media filter multi-camera queries that are not all cameras?
// TODO: Do I need column max? // TODO: Do I need column max?
// TODO: test changing tabs in a dashboard (to trigger disconnect, do I still receive media loads from media that was already loaded)?
// TODO: Can SELECT_CHILD_EVENTS only be 'click' and it still work on Android? // TODO: Can SELECT_CHILD_EVENTS only be 'click' and it still work on Android?
// TODO: With live autoplay off only white frames appear?
import { import {
CSSResultGroup, CSSResultGroup,
+2 -2
View File
@@ -46,7 +46,7 @@ export class MediaGridController {
() => this._masonry?.layout?.(), () => this._masonry?.layout?.(),
// Throttle layout calls to larger than the masonry.js transitionDuration // Throttle layout calls to larger than the masonry.js transitionDuration
// value specified below. // value specified below.
500, 300,
{ trailing: true, leading: false }, { trailing: true, leading: false },
); );
@@ -251,7 +251,7 @@ export class MediaGridController {
columnWidth: this._getColumnSize(), columnWidth: this._getColumnSize(),
initLayout: false, initLayout: false,
percentPosition: true, percentPosition: true,
transitionDuration: '0.3s', transitionDuration: '0.2s',
}); });
this._masonry.addItems?.([...this._gridContents.values()]); this._masonry.addItems?.([...this._gridContents.values()]);
this._throttledLayout(); this._throttledLayout();
+4 -1
View File
@@ -9,6 +9,7 @@ const MEDIA_SEEK_CONTROLS_HIDE_SECONDS = 1;
export type FrigateCardHTMLVideoElement = HTMLVideoElement & { export type FrigateCardHTMLVideoElement = HTMLVideoElement & {
_controlsHideTimer?: Timer; _controlsHideTimer?: Timer;
_controlsOriginalValue?: boolean;
}; };
/** /**
@@ -24,6 +25,7 @@ export const setControlsOnVideo = (
if (video._controlsHideTimer) { if (video._controlsHideTimer) {
video._controlsHideTimer.stop(); video._controlsHideTimer.stop();
delete video._controlsHideTimer; delete video._controlsHideTimer;
delete video._controlsOriginalValue;
} }
video.controls = value; video.controls = value;
}; };
@@ -38,9 +40,10 @@ export const hideMediaControlsTemporarily = (
video: FrigateCardHTMLVideoElement, video: FrigateCardHTMLVideoElement,
seconds = MEDIA_SEEK_CONTROLS_HIDE_SECONDS, seconds = MEDIA_SEEK_CONTROLS_HIDE_SECONDS,
): void => { ): void => {
const oldValue = video.controls; const oldValue = video._controlsOriginalValue ?? video.controls;
setControlsOnVideo(video, false); setControlsOnVideo(video, false);
video._controlsHideTimer ??= new Timer(); video._controlsHideTimer ??= new Timer();
video._controlsOriginalValue = oldValue;
video._controlsHideTimer.start(seconds, () => { video._controlsHideTimer.start(seconds, () => {
setControlsOnVideo(video, oldValue); setControlsOnVideo(video, oldValue);
}); });