Scrubbing performance improvements.
This commit is contained in:
@@ -333,11 +333,18 @@ export class FrigateCardThumbnailDetailsRecording extends LitElement {
|
|||||||
|
|
||||||
@customElement('frigate-card-thumbnail')
|
@customElement('frigate-card-thumbnail')
|
||||||
export class FrigateCardThumbnail extends LitElement {
|
export class FrigateCardThumbnail extends LitElement {
|
||||||
// HomeAssistant object may be required for thumbnail signing (for Frigate
|
// Performance: During timeline scrubbing, hass may be updated
|
||||||
// events).
|
// continuously. As it is not needed for the thumbnail rendering itself, it
|
||||||
@property({ attribute: false })
|
// 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;
|
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 })
|
@property({ attribute: false })
|
||||||
public cameraManager?: CameraManager;
|
public cameraManager?: CameraManager;
|
||||||
|
|
||||||
@@ -359,9 +366,6 @@ export class FrigateCardThumbnail extends LitElement {
|
|||||||
@property({ attribute: false })
|
@property({ attribute: false })
|
||||||
public seek?: Date;
|
public seek?: Date;
|
||||||
|
|
||||||
@property({ attribute: false })
|
|
||||||
public view?: Readonly<View>;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Render the element.
|
* Render the element.
|
||||||
* @returns A template to display to the user.
|
* @returns A template to display to the user.
|
||||||
@@ -381,7 +385,6 @@ export class FrigateCardThumbnail extends LitElement {
|
|||||||
|
|
||||||
const shouldShowTimelineControl =
|
const shouldShowTimelineControl =
|
||||||
this.show_timeline_control &&
|
this.show_timeline_control &&
|
||||||
this.view &&
|
|
||||||
(!ViewMediaClassifier.isRecording(this.media) ||
|
(!ViewMediaClassifier.isRecording(this.media) ||
|
||||||
// Only show timeline control if the recording has a start & end time.
|
// Only show timeline control if the recording has a start & end time.
|
||||||
(this.media.getStartTime() && this.media.getEndTime()));
|
(this.media.getStartTime() && this.media.getEndTime()));
|
||||||
|
|||||||
@@ -13,14 +13,14 @@ div.control-surround {
|
|||||||
padding-top: $drawer-padding-extend;
|
padding-top: $drawer-padding-extend;
|
||||||
padding-bottom: $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 {
|
@if $drawer-icon-size < 32 {
|
||||||
// Ensure the clickable area is at least 32px wide.
|
// Ensure the clickable area is at least 32px wide.
|
||||||
padding-right: calc(32px - $drawer-icon-size);
|
padding-right: calc(32px - $drawer-icon-size);
|
||||||
}
|
}
|
||||||
left: 100%;
|
left: 100%;
|
||||||
}
|
}
|
||||||
:host([location=right]) div.control-surround {
|
:host([location='right']) div.control-surround {
|
||||||
@if $drawer-icon-size < 32 {
|
@if $drawer-icon-size < 32 {
|
||||||
// See note above.
|
// See note above.
|
||||||
padding-left: calc(32px - $drawer-icon-size);
|
padding-left: calc(32px - $drawer-icon-size);
|
||||||
@@ -54,12 +54,12 @@ ha-icon.control {
|
|||||||
background-color: black;
|
background-color: black;
|
||||||
}
|
}
|
||||||
|
|
||||||
:host([location=left]) ha-icon.control {
|
:host([location='left']) ha-icon.control {
|
||||||
border-top-right-radius: $drawer-icon-size;
|
border-top-right-radius: $drawer-icon-size;
|
||||||
border-bottom-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-top-left-radius: $drawer-icon-size;
|
||||||
border-bottom-left-radius: $drawer-icon-size;
|
border-bottom-left-radius: $drawer-icon-size;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user