Allow continue_on_error in the UI action editor (#16834)

This commit is contained in:
karwosts 2023-06-20 07:53:13 -07:00 committed by GitHub
parent 13b864e261
commit 1cf24ffc8d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 7 deletions

View File

@ -33,6 +33,7 @@ export const isMaxMode = arrayLiteralIncludes(MODES_MAX);
export const baseActionStruct = object({ export const baseActionStruct = object({
alias: optional(string()), alias: optional(string()),
continue_on_error: optional(boolean()),
enabled: optional(boolean()), enabled: optional(boolean()),
}); });
@ -99,6 +100,7 @@ export interface BlueprintScriptConfig extends ManualScriptConfig {
interface BaseAction { interface BaseAction {
alias?: string; alias?: string;
continue_on_error?: boolean;
enabled?: boolean; enabled?: boolean;
} }
@ -230,14 +232,10 @@ interface UnknownAction extends BaseAction {
[key: string]: unknown; [key: string]: unknown;
} }
export type Action = export type NonConditionAction =
| EventAction | EventAction
| DeviceAction | DeviceAction
| ServiceAction | ServiceAction
| Condition
| ShorthandAndCondition
| ShorthandOrCondition
| ShorthandNotCondition
| DelayAction | DelayAction
| SceneAction | SceneAction
| WaitAction | WaitAction
@ -251,6 +249,13 @@ export type Action =
| ParallelAction | ParallelAction
| UnknownAction; | UnknownAction;
export type Action =
| NonConditionAction
| Condition
| ShorthandAndCondition
| ShorthandOrCondition
| ShorthandNotCondition;
export interface ActionTypes { export interface ActionTypes {
delay: DelayAction; delay: DelayAction;
wait_template: WaitAction; wait_template: WaitAction;

View File

@ -1,6 +1,7 @@
import { ActionDetail } from "@material/mwc-list/mwc-list-foundation"; import { ActionDetail } from "@material/mwc-list/mwc-list-foundation";
import "@material/mwc-list/mwc-list-item"; import "@material/mwc-list/mwc-list-item";
import { import {
mdiAlertCircleCheck,
mdiCheck, mdiCheck,
mdiContentDuplicate, mdiContentDuplicate,
mdiContentCopy, mdiContentCopy,
@ -14,7 +15,14 @@ import {
mdiStopCircleOutline, mdiStopCircleOutline,
} from "@mdi/js"; } from "@mdi/js";
import { UnsubscribeFunc } from "home-assistant-js-websocket"; import { UnsubscribeFunc } from "home-assistant-js-websocket";
import { css, CSSResultGroup, html, LitElement, PropertyValues } from "lit"; import {
css,
CSSResultGroup,
html,
LitElement,
nothing,
PropertyValues,
} from "lit";
import { customElement, property, query, state } from "lit/decorators"; import { customElement, property, query, state } from "lit/decorators";
import { classMap } from "lit/directives/class-map"; import { classMap } from "lit/directives/class-map";
import { dynamicElement } from "../../../../common/dom/dynamic-element-directive"; import { dynamicElement } from "../../../../common/dom/dynamic-element-directive";
@ -34,7 +42,11 @@ import {
subscribeEntityRegistry, subscribeEntityRegistry,
} from "../../../../data/entity_registry"; } from "../../../../data/entity_registry";
import { Clipboard } from "../../../../data/automation"; import { Clipboard } from "../../../../data/automation";
import { Action, getActionType } from "../../../../data/script"; import {
Action,
NonConditionAction,
getActionType,
} from "../../../../data/script";
import { describeAction } from "../../../../data/script_i18n"; import { describeAction } from "../../../../data/script_i18n";
import { callExecuteScript } from "../../../../data/service"; import { callExecuteScript } from "../../../../data/service";
import { import {
@ -184,6 +196,17 @@ export default class HaAutomationActionRow extends LitElement {
</h3> </h3>
<slot name="icons" slot="icons"></slot> <slot name="icons" slot="icons"></slot>
${type !== "condition" &&
(this.action as NonConditionAction).continue_on_error === true
? html`<div slot="icons">
<ha-svg-icon .path=${mdiAlertCircleCheck}></ha-svg-icon>
<simple-tooltip animation-delay="0">
${this.hass.localize(
"ui.panel.config.automation.editor.actions.continue_on_error"
)}
</simple-tooltip>
</div> `
: nothing}
${this.hideMenu ${this.hideMenu
? "" ? ""
: html` : html`

View File

@ -2501,6 +2501,7 @@
"delete_confirm_text": "[%key:ui::panel::config::automation::editor::triggers::delete_confirm_text%]", "delete_confirm_text": "[%key:ui::panel::config::automation::editor::triggers::delete_confirm_text%]",
"unsupported_action": "No visual editor support for action: {action}", "unsupported_action": "No visual editor support for action: {action}",
"type_select": "Action type", "type_select": "Action type",
"continue_on_error": "Continue on error",
"type": { "type": {
"service": { "service": {
"label": "Call service" "label": "Call service"