mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-26 02:36:37 +00:00
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:
parent
890be2c177
commit
6068d5e5cd
@ -53,53 +53,46 @@ export const callAlarmAction = (
|
|||||||
};
|
};
|
||||||
|
|
||||||
export type AlarmMode =
|
export type AlarmMode =
|
||||||
| "away"
|
| "armed_home"
|
||||||
| "home"
|
| "armed_away"
|
||||||
| "night"
|
| "armed_night"
|
||||||
| "vacation"
|
| "armed_vacation"
|
||||||
| "custom_bypass"
|
| "armed_custom_bypass"
|
||||||
| "disarmed";
|
| "disarmed";
|
||||||
|
|
||||||
type AlarmConfig = {
|
type AlarmConfig = {
|
||||||
service: string;
|
service: string;
|
||||||
feature?: AlarmControlPanelEntityFeature;
|
feature?: AlarmControlPanelEntityFeature;
|
||||||
state: string;
|
|
||||||
path: string;
|
path: string;
|
||||||
};
|
};
|
||||||
export const ALARM_MODES: Record<AlarmMode, AlarmConfig> = {
|
export const ALARM_MODES: Record<AlarmMode, AlarmConfig> = {
|
||||||
away: {
|
armed_home: {
|
||||||
feature: AlarmControlPanelEntityFeature.ARM_AWAY,
|
|
||||||
service: "alarm_arm_away",
|
|
||||||
state: "armed_away",
|
|
||||||
path: mdiLock,
|
|
||||||
},
|
|
||||||
home: {
|
|
||||||
feature: AlarmControlPanelEntityFeature.ARM_HOME,
|
feature: AlarmControlPanelEntityFeature.ARM_HOME,
|
||||||
service: "alarm_arm_home",
|
service: "alarm_arm_home",
|
||||||
state: "armed_home",
|
|
||||||
path: mdiHome,
|
path: mdiHome,
|
||||||
},
|
},
|
||||||
custom_bypass: {
|
armed_away: {
|
||||||
feature: AlarmControlPanelEntityFeature.ARM_CUSTOM_BYPASS,
|
feature: AlarmControlPanelEntityFeature.ARM_AWAY,
|
||||||
service: "alarm_arm_custom_bypass",
|
service: "alarm_arm_away",
|
||||||
state: "armed_custom_bypass",
|
path: mdiLock,
|
||||||
path: mdiShield,
|
|
||||||
},
|
},
|
||||||
night: {
|
armed_night: {
|
||||||
feature: AlarmControlPanelEntityFeature.ARM_NIGHT,
|
feature: AlarmControlPanelEntityFeature.ARM_NIGHT,
|
||||||
service: "alarm_arm_night",
|
service: "alarm_arm_night",
|
||||||
state: "armed_night",
|
|
||||||
path: mdiMoonWaningCrescent,
|
path: mdiMoonWaningCrescent,
|
||||||
},
|
},
|
||||||
vacation: {
|
armed_vacation: {
|
||||||
feature: AlarmControlPanelEntityFeature.ARM_VACATION,
|
feature: AlarmControlPanelEntityFeature.ARM_VACATION,
|
||||||
service: "alarm_arm_vacation",
|
service: "alarm_arm_vacation",
|
||||||
state: "armed_vacation",
|
|
||||||
path: mdiAirplane,
|
path: mdiAirplane,
|
||||||
},
|
},
|
||||||
|
armed_custom_bypass: {
|
||||||
|
feature: AlarmControlPanelEntityFeature.ARM_CUSTOM_BYPASS,
|
||||||
|
service: "alarm_arm_custom_bypass",
|
||||||
|
path: mdiShield,
|
||||||
|
},
|
||||||
disarmed: {
|
disarmed: {
|
||||||
service: "alarm_disarm",
|
service: "alarm_disarm",
|
||||||
state: "disarmed",
|
|
||||||
path: mdiShieldOff,
|
path: mdiShieldOff,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -40,9 +40,7 @@ export class HaMoreInfoAlarmControlPanelModes extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _getCurrentMode(stateObj: AlarmControlPanelEntity) {
|
private _getCurrentMode(stateObj: AlarmControlPanelEntity) {
|
||||||
return this._modes(stateObj).find(
|
return this._modes(stateObj).find((mode) => mode === stateObj.state);
|
||||||
(mode) => ALARM_MODES[mode].state === stateObj.state
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _setMode(mode: AlarmMode) {
|
private async _setMode(mode: AlarmMode) {
|
||||||
@ -86,7 +84,7 @@ export class HaMoreInfoAlarmControlPanelModes extends LitElement {
|
|||||||
private async _valueChanged(ev: CustomEvent) {
|
private async _valueChanged(ev: CustomEvent) {
|
||||||
const mode = (ev.detail as any).value as AlarmMode;
|
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!);
|
const oldMode = this._getCurrentMode(this.stateObj!);
|
||||||
this._currentMode = mode;
|
this._currentMode = mode;
|
||||||
|
@ -95,14 +95,14 @@ class HuiAlarmModeTileFeature
|
|||||||
|
|
||||||
private _getCurrentMode(stateObj: AlarmControlPanelEntity) {
|
private _getCurrentMode(stateObj: AlarmControlPanelEntity) {
|
||||||
return this._modes(stateObj, this._config?.modes).find(
|
return this._modes(stateObj, this._config?.modes).find(
|
||||||
(mode) => ALARM_MODES[mode].state === stateObj.state
|
(mode) => mode === stateObj.state
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _valueChanged(ev: CustomEvent) {
|
private async _valueChanged(ev: CustomEvent) {
|
||||||
const mode = (ev.detail as any).value as AlarmMode;
|
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!);
|
const oldMode = this._getCurrentMode(this.stateObj!);
|
||||||
this._currentMode = mode;
|
this._currentMode = mode;
|
||||||
|
@ -931,11 +931,11 @@
|
|||||||
"alarm_control_panel": {
|
"alarm_control_panel": {
|
||||||
"modes_label": "Modes",
|
"modes_label": "Modes",
|
||||||
"modes": {
|
"modes": {
|
||||||
"away": "Away",
|
"armed_away": "Away",
|
||||||
"home": "Home",
|
"armed_home": "Home",
|
||||||
"night": "Night",
|
"armed_night": "Night",
|
||||||
"vacation": "Vacation",
|
"armed_vacation": "Vacation",
|
||||||
"custom_bypass": "Custom",
|
"armed_custom_bypass": "Custom",
|
||||||
"disarmed": "Disarmed"
|
"disarmed": "Disarmed"
|
||||||
},
|
},
|
||||||
"disarm_title": "Disarm",
|
"disarm_title": "Disarm",
|
||||||
@ -4467,11 +4467,11 @@
|
|||||||
"label": "Alarm modes",
|
"label": "Alarm modes",
|
||||||
"modes": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes_label%]",
|
"modes": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes_label%]",
|
||||||
"modes_list": {
|
"modes_list": {
|
||||||
"away": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::away%]",
|
"armed_away": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::armed_away%]",
|
||||||
"home": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::home%]",
|
"armed_home": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::armed_home%]",
|
||||||
"night": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::night%]",
|
"armed_night": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::armed_night%]",
|
||||||
"vacation": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::vacation%]",
|
"armed_vacation": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::armed_vacation%]",
|
||||||
"custom_bypass": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::custom_bypass%]",
|
"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%]"
|
"disarmed": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::disarmed%]"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user