Add autoplay clip configuration.

This commit is contained in:
Dermot Duffy
2021-08-20 21:37:22 -07:00
parent 2cf3fc21db
commit eecb1a2a6c
3 changed files with 23 additions and 6 deletions
+8 -5
View File
@@ -205,6 +205,13 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor
.configValue=${'view_timeout'} .configValue=${'view_timeout'}
@value-changed=${this._valueChanged} @value-changed=${this._valueChanged}
></paper-input> ></paper-input>
<ha-formfield .label=${`Autoplay clip`}>
<ha-switch
.checked=${this._config?.autoplay_clip !== false}
.configValue=${'autoplay_clip'}
@change=${this._valueChanged}
></ha-switch>
</ha-formfield>
</div>` </div>`
: ''} : ''}
<div class="option" @click=${this._toggleOption} .option=${'advanced'}> <div class="option" @click=${this._toggleOption} .option=${'advanced'}>
@@ -309,8 +316,6 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor
} }
const target = ev.target; const target = ev.target;
let key: string = target.configValue; let key: string = target.configValue;
console.log(target);
console.log(target.value);
if (!key) { if (!key) {
return; return;
@@ -329,10 +334,8 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor
objectTarget = newConfig[configName]; objectTarget = newConfig[configName];
key = parts[1]; key = parts[1];
} }
//console.log(`Value is: ${target.value}`);
//return;
if (objectTarget[key] === target.value) { if (target.value !== undefined && objectTarget[key] === target.value) {
return; return;
} else if (target.value === '') { } else if (target.value === '') {
delete objectTarget[key]; delete objectTarget[key];
+14 -1
View File
@@ -543,6 +543,7 @@ export class FrigateCard extends LitElement {
// Render the player for a saved clip. // Render the player for a saved clip.
protected async _renderClipPlayer(): Promise<TemplateResult> { protected async _renderClipPlayer(): Promise<TemplateResult> {
let event: FrigateEvent, events: FrigateGetEventsResponse; let event: FrigateEvent, events: FrigateGetEventsResponse;
let autoplay = true;
if (this._viewEvent) { if (this._viewEvent) {
event = this._viewEvent; event = this._viewEvent;
} else { } else {
@@ -558,10 +559,22 @@ export class FrigateCard extends LitElement {
return this._renderAttentionIcon('mdi:camera-off', 'No recent clip'); return this._renderAttentionIcon('mdi:camera-off', 'No recent clip');
} }
event = events[0]; event = events[0];
// In this block, no clip has been manually selected, so this is loading
// the most recent clip on card load. In this mode, autoplay of the clip
// may be disabled by configuration. If does not make sense to disable
// autoplay when the user has explicitly picked an event to play in the
// gallery.
autoplay = this.config.autoplay_clip;
} }
this._heading = this._getEventTitle(event); this._heading = this._getEventTitle(event);
const url = `${this.config.frigate_url}/clips/` + `${event.camera}-${event.id}.mp4`; const url = `${this.config.frigate_url}/clips/` + `${event.camera}-${event.id}.mp4`;
return html` <video class="frigate-card-viewer" autoplay muted controls> return html` <video
class="frigate-card-viewer"
muted
controls
?autoplay="${autoplay}"
>
<source src="${url}" type="video/mp4" /> <source src="${url}" type="video/mp4" />
</video>`; </video>`;
} }
+1
View File
@@ -44,6 +44,7 @@ export const frigateCardConfigSchema = z.object({
webrtc: z.object({}).passthrough().optional(), webrtc: z.object({}).passthrough().optional(),
label: z.string().optional(), label: z.string().optional(),
zone: z.string().optional(), zone: z.string().optional(),
autoplay_clip: z.boolean().default(true),
// Stock lovelace card config. // Stock lovelace card config.
type: z.string(), type: z.string(),