From a841e287e57175dede4c9b2fc5bd7ea7e2df7a57 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 14 Mar 2021 07:05:13 -0700 Subject: [PATCH] Add basic action descriptions in traces (#8639) --- src/components/trace/hat-trace.ts | 4 +++- src/data/script.ts | 39 +++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/components/trace/hat-trace.ts b/src/components/trace/hat-trace.ts index 9ea68eef3e..1b1aeba857 100644 --- a/src/components/trace/hat-trace.ts +++ b/src/components/trace/hat-trace.ts @@ -24,6 +24,7 @@ import { mdiStopCircleOutline, } from "@mdi/js"; import { LogbookEntry } from "../../data/logbook"; +import { Action, describeAction } from "../../data/script"; const pathToName = (path: string) => path.split("/").join(" "); @@ -194,9 +195,10 @@ export class HaAutomationTracer extends LitElement { } private _renderActionTrace(path: string, _value: ActionTrace[]) { + const action = getConfigFromPath(this.trace!.config, path) as Action; return html` - ${getConfigFromPath(this.trace!.config, path).alias || pathToName(path)} + ${action.alias || describeAction(action, this.hass.localize)} `; } diff --git a/src/data/script.ts b/src/data/script.ts index ff598dcf76..db6ce920ed 100644 --- a/src/data/script.ts +++ b/src/data/script.ts @@ -5,6 +5,7 @@ import { } from "home-assistant-js-websocket"; import { computeObjectId } from "../common/entity/compute_object_id"; import { navigate } from "../common/navigate"; +import { LocalizeFunc } from "../common/translations/localize"; import { HomeAssistant } from "../types"; import { Condition, Trigger } from "./automation"; @@ -158,3 +159,41 @@ export const getScriptEditorInitData = () => { inititialScriptEditorData = undefined; return data; }; + +export const describeAction = (action: Action, _localize: LocalizeFunc) => { + // Check based on config_validation.py#determine_script_action + if ("delay" in action) { + return "Delay"; + } + if ("wait_template" in action) { + return "Wait"; + } + if ("condition" in action) { + return "Check condition"; + } + if ("event" in action) { + return "Fire event"; + } + if ("device_id" in action) { + return "Run Device Action"; + } + if ("scene" in action) { + return "Activate a scene"; + } + if ("repeat" in action) { + return "Repeat an action multiple times"; + } + if ("choose" in action) { + return "Choose an action"; + } + if ("wait_for_trigger" in action) { + return "Wait for a trigger"; + } + if ("variables" in action) { + return "Define variables"; + } + if ("service" in action) { + return "Call service"; + } + return "Unknown action"; +};