From 68baeb83cb19736f5bb43e01c24f94298ce35170 Mon Sep 17 00:00:00 2001 From: Zack Arnett Date: Wed, 19 Feb 2020 04:19:57 -0500 Subject: [PATCH] Media Card Seek Functionality (#4907) * Seek function * Remove a testing section * reviews --- src/data/media-player.ts | 1 + .../lovelace/cards/hui-media-control-card.ts | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/data/media-player.ts b/src/data/media-player.ts index ddf024ac98..6a23e8d5ec 100644 --- a/src/data/media-player.ts +++ b/src/data/media-player.ts @@ -3,6 +3,7 @@ import { HomeAssistant } from "../types"; import { timeCachePromiseFunc } from "../common/util/time-cache-function-promise"; export const SUPPORT_PAUSE = 1; +export const SUPPORT_SEEK = 2; export const SUPPORT_VOLUME_SET = 4; export const SUPPORT_VOLUME_MUTE = 8; export const SUPPORT_PREVIOUS_TRACK = 16; diff --git a/src/panels/lovelace/cards/hui-media-control-card.ts b/src/panels/lovelace/cards/hui-media-control-card.ts index 6a319b4122..236eb8517e 100644 --- a/src/panels/lovelace/cards/hui-media-control-card.ts +++ b/src/panels/lovelace/cards/hui-media-control-card.ts @@ -26,6 +26,7 @@ import { SUPPORTS_PLAY, fetchMediaPlayerThumbnailWithCache, SUPPORT_STOP, + SUPPORT_SEEK, } from "../../../data/media-player"; import { hasConfigOrEntityChanged } from "../common/has-changed"; import { HomeAssistant, MediaEntity } from "../../../types"; @@ -118,7 +119,10 @@ export class HuiMediaControlCard extends LitElement implements LovelaceCard { this._handleSeek(e, stateObj)} > `}
@@ -273,6 +277,20 @@ export class HuiMediaControlCard extends LitElement implements LovelaceCard { }); } + private _handleSeek(e: MouseEvent, stateObj: MediaEntity): void { + if (!supportsFeature(stateObj, SUPPORT_SEEK)) { + return; + } + + const percent = e.offsetX / this.offsetWidth; + const position = (e.currentTarget! as any).max * percent; + + this.hass!.callService("media_player", "media_seek", { + entity_id: this._config!.entity, + seek_position: position, + }); + } + static get styles(): CSSResult { return css` .ratio { @@ -383,6 +401,10 @@ export class HuiMediaControlCard extends LitElement implements LovelaceCard { --paper-progress-active-color: var(--accent-color); --paper-progress-container-color: rgba(200, 200, 200, 0.5); } + + .seek:hover { + --paper-progress-height: 8px; + } `; } }