Make clear that automation run button skips conditions + remove word "execute" from UI (#8259)

* Do not skip conditions when triggering an automation

* Remove usage of word "execute"

* More concise function names
This commit is contained in:
Philip Allgaier 2021-02-25 14:17:31 +01:00 committed by GitHub
parent 81f96de2bd
commit 32ba8f4731
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 52 additions and 44 deletions

View File

@ -205,9 +205,13 @@ export type Condition =
| DeviceCondition | DeviceCondition
| LogicalCondition; | LogicalCondition;
export const triggerAutomation = (hass: HomeAssistant, entityId: string) => { export const triggerAutomationActions = (
hass: HomeAssistant,
entityId: string
) => {
hass.callService("automation", "trigger", { hass.callService("automation", "trigger", {
entity_id: entityId, entity_id: entityId,
skip_condition: true,
}); });
}; };

View File

@ -117,7 +117,7 @@ export const triggerScript = (
variables?: Record<string, unknown> variables?: Record<string, unknown>
) => hass.callService("script", computeObjectId(entityId), variables); ) => hass.callService("script", computeObjectId(entityId), variables);
export const canExcecute = (state: ScriptEntity) => { export const canRun = (state: ScriptEntity) => {
if (state.state === "off") { if (state.state === "off") {
return true; return true;
} }

View File

@ -10,7 +10,7 @@ import {
TemplateResult, TemplateResult,
} from "lit-element"; } from "lit-element";
import "../../../components/ha-relative-time"; import "../../../components/ha-relative-time";
import { triggerAutomation } from "../../../data/automation"; import { triggerAutomationActions } from "../../../data/automation";
import { UNAVAILABLE_STATES } from "../../../data/entity"; import { UNAVAILABLE_STATES } from "../../../data/entity";
import { HomeAssistant } from "../../../types"; import { HomeAssistant } from "../../../types";
@ -36,7 +36,7 @@ class MoreInfoAutomation extends LitElement {
<div class="actions"> <div class="actions">
<mwc-button <mwc-button
@click=${this.handleAction} @click=${this._runActions}
.disabled=${UNAVAILABLE_STATES.includes(this.stateObj!.state)} .disabled=${UNAVAILABLE_STATES.includes(this.stateObj!.state)}
> >
${this.hass.localize("ui.card.automation.trigger")} ${this.hass.localize("ui.card.automation.trigger")}
@ -45,8 +45,8 @@ class MoreInfoAutomation extends LitElement {
`; `;
} }
private handleAction() { private _runActions() {
triggerAutomation(this.hass, this.stateObj!.entity_id); triggerAutomationActions(this.hass, this.stateObj!.entity_id);
} }
static get styles(): CSSResult { static get styles(): CSSResult {

View File

@ -21,7 +21,7 @@ import "../../../components/ha-selector/ha-selector";
import "../../../components/ha-settings-row"; import "../../../components/ha-settings-row";
import { import {
BlueprintAutomationConfig, BlueprintAutomationConfig,
triggerAutomation, triggerAutomationActions,
} from "../../../data/automation"; } from "../../../data/automation";
import { import {
BlueprintOrError, BlueprintOrError,
@ -105,7 +105,7 @@ export class HaBlueprintAutomationEditor extends LitElement {
)} )}
</div> </div>
<mwc-button <mwc-button
@click=${this._excuteAutomation} @click=${this._runActions}
.stateObj=${this.stateObj} .stateObj=${this.stateObj}
> >
${this.hass.localize("ui.card.automation.trigger")} ${this.hass.localize("ui.card.automation.trigger")}
@ -197,8 +197,8 @@ export class HaBlueprintAutomationEditor extends LitElement {
this._blueprints = await fetchBlueprints(this.hass, "automation"); this._blueprints = await fetchBlueprints(this.hass, "automation");
} }
private _excuteAutomation(ev: Event) { private _runActions(ev: Event) {
triggerAutomation(this.hass, (ev.target as any).stateObj.entity_id); triggerAutomationActions(this.hass, (ev.target as any).stateObj.entity_id);
} }
private _blueprintChanged(ev) { private _blueprintChanged(ev) {

View File

@ -38,7 +38,7 @@ import {
deleteAutomation, deleteAutomation,
getAutomationEditorInitData, getAutomationEditorInitData,
showAutomationEditor, showAutomationEditor,
triggerAutomation, triggerAutomationActions,
} from "../../../data/automation"; } from "../../../data/automation";
import { import {
showAlertDialog, showAlertDialog,
@ -256,7 +256,7 @@ export class HaAutomationEditor extends KeyboardShortcutMixin(LitElement) {
)} )}
</div> </div>
<mwc-button <mwc-button
@click=${this._excuteAutomation} @click=${this._runActions}
.stateObj=${stateObj} .stateObj=${stateObj}
> >
${this.hass.localize( ${this.hass.localize(
@ -381,8 +381,8 @@ export class HaAutomationEditor extends KeyboardShortcutMixin(LitElement) {
this._errors = undefined; this._errors = undefined;
} }
private _excuteAutomation(ev: Event) { private _runActions(ev: Event) {
triggerAutomation(this.hass, (ev.target as any).stateObj.entity_id); triggerAutomationActions(this.hass, (ev.target as any).stateObj.entity_id);
} }
private _preprocessYaml() { private _preprocessYaml() {

View File

@ -20,7 +20,10 @@ import { DataTableColumnContainer } from "../../../components/data-table/ha-data
import "../../../components/entity/ha-entity-toggle"; import "../../../components/entity/ha-entity-toggle";
import "../../../components/ha-fab"; import "../../../components/ha-fab";
import "../../../components/ha-svg-icon"; import "../../../components/ha-svg-icon";
import { AutomationEntity, triggerAutomation } from "../../../data/automation"; import {
AutomationEntity,
triggerAutomationActions,
} from "../../../data/automation";
import { UNAVAILABLE_STATES } from "../../../data/entity"; import { UNAVAILABLE_STATES } from "../../../data/entity";
import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box"; import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box";
import "../../../layouts/hass-tabs-subpage-data-table"; import "../../../layouts/hass-tabs-subpage-data-table";
@ -88,12 +91,12 @@ class HaAutomationPicker extends LitElement {
}, },
}; };
if (!narrow) { if (!narrow) {
columns.execute = { columns.trigger = {
title: "", title: "",
template: (_info, automation: any) => html` template: (_info, automation: any) => html`
<mwc-button <mwc-button
.automation=${automation} .automation=${automation}
@click=${(ev) => this._execute(ev)} @click=${(ev) => this._runActions(ev)}
.disabled=${UNAVAILABLE_STATES.includes(automation.state)} .disabled=${UNAVAILABLE_STATES.includes(automation.state)}
> >
${this.hass.localize("ui.card.automation.trigger")} ${this.hass.localize("ui.card.automation.trigger")}
@ -210,9 +213,9 @@ class HaAutomationPicker extends LitElement {
}); });
} }
private _execute(ev) { private _runActions(ev) {
const entityId = ev.currentTarget.automation.entity_id; const entityId = ev.currentTarget.automation.entity_id;
triggerAutomation(this.hass, entityId); triggerAutomationActions(this.hass, entityId);
} }
private _createNew() { private _createNew() {

View File

@ -18,7 +18,7 @@ import {
Condition, Condition,
ManualAutomationConfig, ManualAutomationConfig,
Trigger, Trigger,
triggerAutomation, triggerAutomationActions,
} from "../../../data/automation"; } from "../../../data/automation";
import { Action, MODES, MODES_MAX } from "../../../data/script"; import { Action, MODES, MODES_MAX } from "../../../data/script";
import { haStyle } from "../../../resources/styles"; import { haStyle } from "../../../resources/styles";
@ -140,7 +140,7 @@ export class HaManualAutomationEditor extends LitElement {
)} )}
</div> </div>
<mwc-button <mwc-button
@click=${this._excuteAutomation} @click=${this._runActions}
.stateObj=${this.stateObj} .stateObj=${this.stateObj}
> >
${this.hass.localize("ui.card.automation.trigger")} ${this.hass.localize("ui.card.automation.trigger")}
@ -240,8 +240,8 @@ export class HaManualAutomationEditor extends LitElement {
</ha-config-section>`; </ha-config-section>`;
} }
private _excuteAutomation(ev: Event) { private _runActions(ev: Event) {
triggerAutomation(this.hass, (ev.target as any).stateObj.entity_id); triggerAutomationActions(this.hass, (ev.target as any).stateObj.entity_id);
} }
private _valueChanged(ev: CustomEvent) { private _valueChanged(ev: CustomEvent) {

View File

@ -299,12 +299,12 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) {
<mwc-button <mwc-button
@click=${this._runScript} @click=${this._runScript}
title="${this.hass.localize( title="${this.hass.localize(
"ui.panel.config.script.picker.activate_script" "ui.panel.config.script.picker.run_script"
)}" )}"
?disabled=${this._dirty} ?disabled=${this._dirty}
> >
${this.hass.localize( ${this.hass.localize(
"ui.card.script.execute" "ui.panel.config.script.picker.run_script"
)} )}
</mwc-button> </mwc-button>
</div> </div>
@ -375,11 +375,13 @@ export class HaScriptEditor extends KeyboardShortcutMixin(LitElement) {
<mwc-button <mwc-button
@click=${this._runScript} @click=${this._runScript}
title="${this.hass.localize( title="${this.hass.localize(
"ui.panel.config.script.picker.activate_script" "ui.panel.config.script.picker.run_script"
)}" )}"
?disabled=${this._dirty} ?disabled=${this._dirty}
> >
${this.hass.localize("ui.card.script.execute")} ${this.hass.localize(
"ui.panel.config.script.picker.run_script"
)}
</mwc-button> </mwc-button>
</div> </div>
` `

View File

@ -11,7 +11,7 @@ import {
TemplateResult, TemplateResult,
} from "lit-element"; } from "lit-element";
import { UNAVAILABLE_STATES } from "../../../data/entity"; import { UNAVAILABLE_STATES } from "../../../data/entity";
import { canExcecute, ScriptEntity } from "../../../data/script"; import { canRun, ScriptEntity } from "../../../data/script";
import { HomeAssistant } from "../../../types"; import { HomeAssistant } from "../../../types";
import { hasConfigOrEntityChanged } from "../common/has-changed"; import { hasConfigOrEntityChanged } from "../common/has-changed";
import "../components/hui-generic-entity-row"; import "../components/hui-generic-entity-row";
@ -66,12 +66,12 @@ class HuiScriptEntityRow extends LitElement implements LovelaceRow {
: ""} : ""}
${stateObj.state === "off" || stateObj.attributes.max ${stateObj.state === "off" || stateObj.attributes.max
? html`<mwc-button ? html`<mwc-button
@click=${this._executeScript} @click=${this._runScript}
.disabled=${UNAVAILABLE_STATES.includes(stateObj.state) || .disabled=${UNAVAILABLE_STATES.includes(stateObj.state) ||
!canExcecute(stateObj)} !canRun(stateObj)}
> >
${this._config.action_name || ${this._config.action_name ||
this.hass!.localize("ui.card.script.execute")} this.hass!.localize("ui.card.script.run")}
</mwc-button>` </mwc-button>`
: ""} : ""}
</hui-generic-entity-row> </hui-generic-entity-row>
@ -91,7 +91,7 @@ class HuiScriptEntityRow extends LitElement implements LovelaceRow {
this._callService("turn_off"); this._callService("turn_off");
} }
private _executeScript(ev): void { private _runScript(ev): void {
ev.stopPropagation(); ev.stopPropagation();
this._callService("turn_on"); this._callService("turn_on");
} }

View File

@ -10,7 +10,7 @@ import {
import "../components/entity/ha-entity-toggle"; import "../components/entity/ha-entity-toggle";
import "../components/entity/state-info"; import "../components/entity/state-info";
import { UNAVAILABLE_STATES } from "../data/entity"; import { UNAVAILABLE_STATES } from "../data/entity";
import { canExcecute, ScriptEntity } from "../data/script"; import { canRun, ScriptEntity } from "../data/script";
import { haStyle } from "../resources/styles"; import { haStyle } from "../resources/styles";
import { HomeAssistant } from "../types"; import { HomeAssistant } from "../types";
@ -45,11 +45,11 @@ export class StateCardScript extends LitElement {
: ""} : ""}
${stateObj.state === "off" || stateObj.attributes.max ${stateObj.state === "off" || stateObj.attributes.max
? html`<mwc-button ? html`<mwc-button
@click=${this._executeScript} @click=${this._runScript}
.disabled=${UNAVAILABLE_STATES.includes(stateObj.state) || .disabled=${UNAVAILABLE_STATES.includes(stateObj.state) ||
!canExcecute(stateObj)} !canRun(stateObj)}
> >
${this.hass!.localize("ui.card.script.execute")} ${this.hass!.localize("ui.card.script.run")}
</mwc-button>` </mwc-button>`
: ""} : ""}
</div> </div>
@ -61,7 +61,7 @@ export class StateCardScript extends LitElement {
this._callService("turn_off"); this._callService("turn_off");
} }
private _executeScript(ev: Event) { private _runScript(ev: Event) {
ev.stopPropagation(); ev.stopPropagation();
this._callService("turn_on"); this._callService("turn_on");
} }

View File

@ -120,7 +120,7 @@
}, },
"automation": { "automation": {
"last_triggered": "Last triggered", "last_triggered": "Last triggered",
"trigger": "Execute" "trigger": "Run Actions"
}, },
"camera": { "camera": {
"not_available": "Image not available" "not_available": "Image not available"
@ -199,7 +199,7 @@
"activate": "Activate" "activate": "Activate"
}, },
"script": { "script": {
"execute": "Execute", "run": "[%key:ui::card::service::run%]",
"cancel": "Cancel", "cancel": "Cancel",
"cancel_multiple": "Cancel {number}" "cancel_multiple": "Cancel {number}"
}, },
@ -1337,7 +1337,7 @@
"conditions": { "conditions": {
"name": "Condition", "name": "Condition",
"header": "Conditions", "header": "Conditions",
"introduction": "Conditions are optional and will prevent further execution unless all conditions are satisfied.", "introduction": "Conditions are optional and will prevent the automation from running unless all conditions are satisfied.",
"learn_more": "Learn more about conditions", "learn_more": "Learn more about conditions",
"add": "Add condition", "add": "Add condition",
"duplicate": "[%key:ui::panel::config::automation::editor::triggers::duplicate%]", "duplicate": "[%key:ui::panel::config::automation::editor::triggers::duplicate%]",
@ -1553,7 +1553,6 @@
"no_scripts": "We couldnt find any editable scripts", "no_scripts": "We couldnt find any editable scripts",
"add_script": "Add script", "add_script": "Add script",
"show_info": "Show info about script", "show_info": "Show info about script",
"trigger_script": "Trigger script",
"run_script": "Run script", "run_script": "Run script",
"edit_script": "Edit script", "edit_script": "Edit script",
"headers": { "headers": {
@ -1568,7 +1567,7 @@
"id": "Entity ID", "id": "Entity ID",
"id_already_exists_save_error": "You can't save this script because the ID is not unique, pick another ID or leave it blank to automatically generate one.", "id_already_exists_save_error": "You can't save this script because the ID is not unique, pick another ID or leave it blank to automatically generate one.",
"id_already_exists": "This ID already exists", "id_already_exists": "This ID already exists",
"introduction": "Use scripts to execute a sequence of actions.", "introduction": "Use scripts to run a sequence of actions.",
"header": "Script: {name}", "header": "Script: {name}",
"default_name": "New Script", "default_name": "New Script",
"modes": { "modes": {
@ -2559,12 +2558,12 @@
"cards": { "cards": {
"confirm_delete": "Are you sure you want to delete this card?", "confirm_delete": "Are you sure you want to delete this card?",
"actions": { "actions": {
"action_confirmation": "Are you sure you want to execute action \"{action}\"?", "action_confirmation": "Are you sure you want to run action \"{action}\"?",
"no_entity_more_info": "No entity provided for more info dialog", "no_entity_more_info": "No entity provided for more info dialog",
"no_entity_toggle": "No entity provided to toggle", "no_entity_toggle": "No entity provided to toggle",
"no_navigation_path": "No navigation path specified", "no_navigation_path": "No navigation path specified",
"no_url": "No URL to open specified", "no_url": "No URL to open specified",
"no_service": "No service for execution specified" "no_service": "No service to run specified"
}, },
"empty_state": { "empty_state": {
"title": "Welcome Home", "title": "Welcome Home",