Use state as mode for alarm mode tile feature (#16045

* Use state as mode for alarm mode tile feature

* reorder modes
This commit is contained in:
Paul Bottein 2023-04-03 20:56:54 +02:00 committed by GitHub
parent 890be2c177
commit 6068d5e5cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 31 additions and 40 deletions

View File

@ -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<AlarmMode, AlarmConfig> = {
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,
},
};

View File

@ -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;

View File

@ -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;

View File

@ -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%]"
}
},