Scrubbing performance improvements.

This commit is contained in:
Dermot Duffy
2023-08-19 19:51:16 -07:00
parent 89c16b58c5
commit 3c23894c6d
2 changed files with 14 additions and 11 deletions
+10 -7
View File
@@ -333,11 +333,18 @@ export class FrigateCardThumbnailDetailsRecording extends LitElement {
@customElement('frigate-card-thumbnail')
export class FrigateCardThumbnail extends LitElement {
// HomeAssistant object may be required for thumbnail signing (for Frigate
// events).
@property({ attribute: false })
// Performance: During timeline scrubbing, hass may be updated
// continuously. As it is not needed for the thumbnail rendering itself, it
// does not trigger a re-render. The HomeAssistant object may be required for
// thumbnail signing (after initial signing the thumbnail is stored in a data
// URL, so the signing will not expire).
public hass?: ExtendedHomeAssistant;
// Performance: During timeline scrubbing, the view will be updated
// continuously. As it is not needed for the thumbnail rendering itself, it
// does not trigger a re-render.
public view?: Readonly<View>;
@property({ attribute: false })
public cameraManager?: CameraManager;
@@ -359,9 +366,6 @@ export class FrigateCardThumbnail extends LitElement {
@property({ attribute: false })
public seek?: Date;
@property({ attribute: false })
public view?: Readonly<View>;
/**
* Render the element.
* @returns A template to display to the user.
@@ -381,7 +385,6 @@ export class FrigateCardThumbnail extends LitElement {
const shouldShowTimelineControl =
this.show_timeline_control &&
this.view &&
(!ViewMediaClassifier.isRecording(this.media) ||
// Only show timeline control if the recording has a start & end time.
(this.media.getStartTime() && this.media.getEndTime()));
+4 -4
View File
@@ -13,14 +13,14 @@ div.control-surround {
padding-top: $drawer-padding-extend;
padding-bottom: $drawer-padding-extend;
}
:host([location=left]) div.control-surround {
:host([location='left']) div.control-surround {
@if $drawer-icon-size < 32 {
// Ensure the clickable area is at least 32px wide.
padding-right: calc(32px - $drawer-icon-size);
}
left: 100%;
}
:host([location=right]) div.control-surround {
:host([location='right']) div.control-surround {
@if $drawer-icon-size < 32 {
// See note above.
padding-left: calc(32px - $drawer-icon-size);
@@ -54,12 +54,12 @@ ha-icon.control {
background-color: black;
}
:host([location=left]) ha-icon.control {
:host([location='left']) ha-icon.control {
border-top-right-radius: $drawer-icon-size;
border-bottom-right-radius: $drawer-icon-size;
}
:host([location=right]) ha-icon.control {
:host([location='right']) ha-icon.control {
border-top-left-radius: $drawer-icon-size;
border-bottom-left-radius: $drawer-icon-size;
}