From 6068d5e5cd96e743f1779c24065e51d8f27978cc Mon Sep 17 00:00:00 2001 From: Paul Bottein Date: Mon, 3 Apr 2023 20:56:54 +0200 Subject: [PATCH] Use state as mode for alarm mode tile feature (#16045 * Use state as mode for alarm mode tile feature * reorder modes --- src/data/alarm_control_panel.ts | 41 ++++++++----------- .../ha-more-info-alarm_control_panel-modes.ts | 6 +-- .../hui-alarm-modes-tile-feature.ts | 4 +- src/translations/en.json | 20 ++++----- 4 files changed, 31 insertions(+), 40 deletions(-) diff --git a/src/data/alarm_control_panel.ts b/src/data/alarm_control_panel.ts index d5f59d595d..2c1a8ea489 100644 --- a/src/data/alarm_control_panel.ts +++ b/src/data/alarm_control_panel.ts @@ -53,53 +53,46 @@ export const callAlarmAction = ( }; export type AlarmMode = - | "away" - | "home" - | "night" - | "vacation" - | "custom_bypass" + | "armed_home" + | "armed_away" + | "armed_night" + | "armed_vacation" + | "armed_custom_bypass" | "disarmed"; type AlarmConfig = { service: string; feature?: AlarmControlPanelEntityFeature; - state: string; path: string; }; export const ALARM_MODES: Record = { - away: { - feature: AlarmControlPanelEntityFeature.ARM_AWAY, - service: "alarm_arm_away", - state: "armed_away", - path: mdiLock, - }, - home: { + armed_home: { feature: AlarmControlPanelEntityFeature.ARM_HOME, service: "alarm_arm_home", - state: "armed_home", path: mdiHome, }, - custom_bypass: { - feature: AlarmControlPanelEntityFeature.ARM_CUSTOM_BYPASS, - service: "alarm_arm_custom_bypass", - state: "armed_custom_bypass", - path: mdiShield, + armed_away: { + feature: AlarmControlPanelEntityFeature.ARM_AWAY, + service: "alarm_arm_away", + path: mdiLock, }, - night: { + armed_night: { feature: AlarmControlPanelEntityFeature.ARM_NIGHT, service: "alarm_arm_night", - state: "armed_night", path: mdiMoonWaningCrescent, }, - vacation: { + armed_vacation: { feature: AlarmControlPanelEntityFeature.ARM_VACATION, service: "alarm_arm_vacation", - state: "armed_vacation", path: mdiAirplane, }, + armed_custom_bypass: { + feature: AlarmControlPanelEntityFeature.ARM_CUSTOM_BYPASS, + service: "alarm_arm_custom_bypass", + path: mdiShield, + }, disarmed: { service: "alarm_disarm", - state: "disarmed", path: mdiShieldOff, }, }; diff --git a/src/dialogs/more-info/components/alarm_control_panel/ha-more-info-alarm_control_panel-modes.ts b/src/dialogs/more-info/components/alarm_control_panel/ha-more-info-alarm_control_panel-modes.ts index 4e3ade78e1..ea8881c5b5 100644 --- a/src/dialogs/more-info/components/alarm_control_panel/ha-more-info-alarm_control_panel-modes.ts +++ b/src/dialogs/more-info/components/alarm_control_panel/ha-more-info-alarm_control_panel-modes.ts @@ -40,9 +40,7 @@ export class HaMoreInfoAlarmControlPanelModes extends LitElement { } private _getCurrentMode(stateObj: AlarmControlPanelEntity) { - return this._modes(stateObj).find( - (mode) => ALARM_MODES[mode].state === stateObj.state - ); + return this._modes(stateObj).find((mode) => mode === stateObj.state); } private async _setMode(mode: AlarmMode) { @@ -86,7 +84,7 @@ export class HaMoreInfoAlarmControlPanelModes extends LitElement { private async _valueChanged(ev: CustomEvent) { const mode = (ev.detail as any).value as AlarmMode; - if (ALARM_MODES[mode].state === this.stateObj!.state) return; + if (mode === this.stateObj!.state) return; const oldMode = this._getCurrentMode(this.stateObj!); this._currentMode = mode; diff --git a/src/panels/lovelace/tile-features/hui-alarm-modes-tile-feature.ts b/src/panels/lovelace/tile-features/hui-alarm-modes-tile-feature.ts index 3fee95942b..d6641b5d38 100644 --- a/src/panels/lovelace/tile-features/hui-alarm-modes-tile-feature.ts +++ b/src/panels/lovelace/tile-features/hui-alarm-modes-tile-feature.ts @@ -95,14 +95,14 @@ class HuiAlarmModeTileFeature private _getCurrentMode(stateObj: AlarmControlPanelEntity) { return this._modes(stateObj, this._config?.modes).find( - (mode) => ALARM_MODES[mode].state === stateObj.state + (mode) => mode === stateObj.state ); } private async _valueChanged(ev: CustomEvent) { const mode = (ev.detail as any).value as AlarmMode; - if (ALARM_MODES[mode].state === this.stateObj!.state) return; + if (mode === this.stateObj!.state) return; const oldMode = this._getCurrentMode(this.stateObj!); this._currentMode = mode; diff --git a/src/translations/en.json b/src/translations/en.json index 0aa5c93408..1255298cec 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -931,11 +931,11 @@ "alarm_control_panel": { "modes_label": "Modes", "modes": { - "away": "Away", - "home": "Home", - "night": "Night", - "vacation": "Vacation", - "custom_bypass": "Custom", + "armed_away": "Away", + "armed_home": "Home", + "armed_night": "Night", + "armed_vacation": "Vacation", + "armed_custom_bypass": "Custom", "disarmed": "Disarmed" }, "disarm_title": "Disarm", @@ -4467,11 +4467,11 @@ "label": "Alarm modes", "modes": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes_label%]", "modes_list": { - "away": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::away%]", - "home": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::home%]", - "night": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::night%]", - "vacation": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::vacation%]", - "custom_bypass": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::custom_bypass%]", + "armed_away": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::armed_away%]", + "armed_home": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::armed_home%]", + "armed_night": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::armed_night%]", + "armed_vacation": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::armed_vacation%]", + "armed_custom_bypass": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::armed_custom_bypass%]", "disarmed": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::disarmed%]" } },