From 3090087e73ec846a808f75078824771494d47e06 Mon Sep 17 00:00:00 2001 From: Dermot Duffy Date: Wed, 18 May 2022 21:34:13 -0700 Subject: [PATCH] Add editor support. --- src/const.ts | 4 ++++ src/editor.ts | 44 ++++++++++++++++++++++++++++++++++ src/localize/languages/en.json | 8 ++++++- src/scss/editor.scss | 2 +- 4 files changed, 56 insertions(+), 2 deletions(-) diff --git a/src/const.ts b/src/const.ts index e61138ac..f38a81ac 100644 --- a/src/const.ts +++ b/src/const.ts @@ -33,6 +33,10 @@ export const CONF_VIEW_UPDATE_CYCLE_CAMERA = `${CONF_VIEW}.update_cycle_camera` export const CONF_VIEW_UPDATE_FORCE = `${CONF_VIEW}.update_force` as const; export const CONF_VIEW_UPDATE_ENTITIES = `${CONF_VIEW}.update_entities` as const; export const CONF_VIEW_UPDATE_SECONDS = `${CONF_VIEW}.update_seconds` as const; +export const CONF_VIEW_SCAN = `${CONF_VIEW}.scan` as const; +export const CONF_VIEW_SCAN_ENABLED = `${CONF_VIEW_SCAN}.enabled` as const; +export const CONF_VIEW_SCAN_TRIGGER_MIN_SECONDS = `${CONF_VIEW_SCAN}.trigger_min_seconds` as const; +export const CONF_VIEW_SCAN_TRIGGER_SHOW_BORDER = `${CONF_VIEW_SCAN}.trigger_show_border` as const; export const CONF_EVENT_GALLERY = 'event_gallery' as const; export const CONF_EVENT_GALLERY_CONTROLS_THUMBNAILS_SHOW_DETAILS = diff --git a/src/editor.ts b/src/editor.ts index df36a05b..edb2812c 100644 --- a/src/editor.ts +++ b/src/editor.ts @@ -81,6 +81,10 @@ import { CONF_VIEW_CAMERA_SELECT, CONF_VIEW_DARK_MODE, CONF_VIEW_DEFAULT, + CONF_VIEW_SCAN, + CONF_VIEW_SCAN_ENABLED, + CONF_VIEW_SCAN_TRIGGER_MIN_SECONDS, + CONF_VIEW_SCAN_TRIGGER_SHOW_BORDER, CONF_VIEW_TIMEOUT_SECONDS, CONF_VIEW_UPDATE_CYCLE_CAMERA, CONF_VIEW_UPDATE_FORCE, @@ -104,6 +108,7 @@ import { sideLoadHomeAssistantElements } from './utils/ha'; const MENU_BUTTONS = 'buttons'; const MENU_CAMERAS = 'cameras'; const MENU_OPTIONS = 'options'; +const MENU_VIEW_SCAN = 'scan'; interface EditorOptionsSet { icon: string; @@ -601,6 +606,44 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor ); } + protected _renderViewScanMenu(): TemplateResult { + return html` + + ${this._expandedMenus[MENU_VIEW_SCAN] + ? html`
+ ${this._renderSwitch( + CONF_VIEW_SCAN_ENABLED, + frigateCardConfigDefaults.view.scan.enabled ?? true, + { + label: localize('config.view.scan.enabled'), + }, + )} + ${this._renderSwitch( + CONF_VIEW_SCAN_TRIGGER_SHOW_BORDER, + frigateCardConfigDefaults.view.scan.trigger_show_border ?? true, + { + label: localize('config.view.scan.trigger_show_border'), + }, + )} + ${this._renderNumberInput(CONF_VIEW_SCAN_TRIGGER_MIN_SECONDS, { + default: frigateCardConfigDefaults.view.scan.trigger_min_seconds, + label: localize('config.view.scan.trigger_min_seconds'), + })} +
` + : ''} + `; + } + /** * Render an editor menu for the card menu buttons. * @param button The name of the button. @@ -985,6 +1028,7 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor CONF_VIEW_UPDATE_CYCLE_CAMERA, defaults.view.update_cycle_camera, )} + ${this._renderViewScanMenu()} ` : ''} diff --git a/src/localize/languages/en.json b/src/localize/languages/en.json index 20d1b7bd..3ef558c6 100644 --- a/src/localize/languages/en.json +++ b/src/localize/languages/en.json @@ -65,7 +65,13 @@ "timeout_seconds": "Reset to default view X seconds after user action (0=never)", "update_cycle_camera": "Cycle through cameras when default view updates", "update_force": "Force card updates (ignore user interaction)", - "update_seconds": "Refresh default view every X seconds (0=never)" + "update_seconds": "Refresh default view every X seconds (0=never)", + "scan": { + "scan_mode": "Scan mode", + "enabled": "Scan mode enabled", + "trigger_min_seconds": "Minimum seconds to trigger for", + "trigger_show_border": "Show pulsing border when triggered" + } }, "event_gallery": { "controls": { diff --git a/src/scss/editor.scss b/src/scss/editor.scss index c965f9a9..5ddfa307 100644 --- a/src/scss/editor.scss +++ b/src/scss/editor.scss @@ -42,7 +42,7 @@ div.upgrade span { .submenu-header { display: flex; - margin-top: 4px; + margin-top: 10px; cursor: pointer; }