diff --git a/gallery/src/data/traces/basic_trace.ts b/gallery/src/data/traces/basic_trace.ts index 6375b7ff5c..ca1ef68b3c 100644 --- a/gallery/src/data/traces/basic_trace.ts +++ b/gallery/src/data/traces/basic_trace.ts @@ -2,7 +2,6 @@ import { DemoTrace } from "./types"; export const basicTrace: DemoTrace = { trace: { - automation_id: "1615419646544", last_action: "action/0/choose/0/sequence/0", last_condition: "condition/0", run_id: "0", @@ -12,7 +11,8 @@ export const basicTrace: DemoTrace = { finish: "2021-03-22T19:17:09.556129+00:00", }, trigger: "state of input_boolean.toggle_1", - unique_id: "1615419646544", + domain: "automation", + item_id: "1615419646544", action_trace: { "action/0": [ { diff --git a/gallery/src/data/traces/motion-light-trace.ts b/gallery/src/data/traces/motion-light-trace.ts index 623f135d66..0c6e1cfdc9 100644 --- a/gallery/src/data/traces/motion-light-trace.ts +++ b/gallery/src/data/traces/motion-light-trace.ts @@ -2,7 +2,6 @@ import { DemoTrace } from "./types"; export const motionLightTrace: DemoTrace = { trace: { - automation_id: "", last_action: "action/3", last_condition: null, run_id: "1", @@ -12,7 +11,8 @@ export const motionLightTrace: DemoTrace = { finish: "2021-03-14T06:07:53.287525+00:00", }, trigger: "state of binary_sensor.pauluss_macbook_pro_camera_in_use", - unique_id: "1614732497392", + domain: "automation", + item_id: "1614732497392", action_trace: { "action/0": [ { diff --git a/gallery/src/data/traces/types.ts b/gallery/src/data/traces/types.ts index 11ccf0e36e..eb99350ebf 100644 --- a/gallery/src/data/traces/types.ts +++ b/gallery/src/data/traces/types.ts @@ -1,4 +1,4 @@ -import { AutomationTraceExtended } from "../../../../src/data/automation_debug"; +import { AutomationTraceExtended } from "../../../../src/data/trace"; import { LogbookEntry } from "../../../../src/data/logbook"; export interface DemoTrace { diff --git a/src/components/trace/hat-trace.ts b/src/components/trace/hat-trace.ts index 402b57b704..e4c2378d6e 100644 --- a/src/components/trace/hat-trace.ts +++ b/src/components/trace/hat-trace.ts @@ -12,7 +12,7 @@ import { AutomationTraceExtended, ChooseActionTrace, getDataFromPath, -} from "../../data/automation_debug"; +} from "../../data/trace"; import { HomeAssistant } from "../../types"; import "./ha-timeline"; import { @@ -288,7 +288,7 @@ class ActionRenderer { } // Render choice - for (; i < this.keys.length; i++) { + while (i < this.keys.length) { const path = this.keys[i]; const parts = path.split("/"); @@ -299,7 +299,7 @@ class ActionRenderer { // We know it's an action sequence, so force the type like that // for rendering. - this._renderItem(i, getActionType(this._getDataFromPath(path))); + i = this._renderItem(i, getActionType(this._getDataFromPath(path))); } return i; diff --git a/src/data/automation_debug.ts b/src/data/trace.ts similarity index 73% rename from src/data/automation_debug.ts rename to src/data/trace.ts index f5fca26c84..3211d01266 100644 --- a/src/data/automation_debug.ts +++ b/src/data/trace.ts @@ -41,8 +41,8 @@ export type ActionTrace = | ChooseChoiceActionTrace; export interface AutomationTrace { - automation_id: string; - unique_id: string; + domain: string; + item_id: string; last_action: string | null; last_condition: string | null; run_id: string; @@ -62,38 +62,51 @@ export interface AutomationTraceExtended extends AutomationTrace { config: AutomationConfig; } -export const loadAutomationTrace = ( +interface TraceTypes { + automation: { + short: AutomationTrace; + extended: AutomationTraceExtended; + }; +} + +export const loadTrace = ( hass: HomeAssistant, - automation_id: string, + domain: T, + item_id: string, run_id: string -): Promise => +): Promise => hass.callWS({ - type: "automation/trace/get", - automation_id, + type: "trace/get", + domain, + item_id, run_id, }); -export const loadAutomationTraces = ( +export const loadTraces = ( hass: HomeAssistant, - automation_id?: string -): Promise => + domain: T, + item_id: string +): Promise> => hass.callWS({ - type: "automation/trace/list", - automation_id, + type: "trace/list", + domain, + item_id, }); -export type AutomationTraceContexts = Record< +export type TraceContexts = Record< string, - { run_id: string; automation_id: string } + { run_id: string; domain: string; item_id: string } >; -export const loadAutomationTraceContexts = ( +export const loadTraceContexts = ( hass: HomeAssistant, - automation_id?: string -): Promise => + domain?: string, + item_id?: string +): Promise => hass.callWS({ - type: "automation/trace/contexts", - automation_id, + type: "trace/contexts", + domain, + item_id, }); export const getDataFromPath = ( diff --git a/src/dialogs/more-info/ha-more-info-logbook.ts b/src/dialogs/more-info/ha-more-info-logbook.ts index 56919a3001..397dc10fc4 100644 --- a/src/dialogs/more-info/ha-more-info-logbook.ts +++ b/src/dialogs/more-info/ha-more-info-logbook.ts @@ -14,10 +14,7 @@ import { computeStateDomain } from "../../common/entity/compute_state_domain"; import { throttle } from "../../common/util/throttle"; import "../../components/ha-circular-progress"; import "../../components/state-history-charts"; -import { - AutomationTraceContexts, - loadAutomationTraceContexts, -} from "../../data/automation_debug"; +import { TraceContexts, loadTraceContexts } from "../../data/trace"; import { getLogbookData, LogbookEntry } from "../../data/logbook"; import "../../panels/logbook/ha-logbook"; import { haStyle, haStyleScrollbar } from "../../resources/styles"; @@ -31,7 +28,7 @@ export class MoreInfoLogbook extends LitElement { @internalProperty() private _logbookEntries?: LogbookEntry[]; - @internalProperty() private _traceContexts?: AutomationTraceContexts; + @internalProperty() private _traceContexts?: TraceContexts; @internalProperty() private _persons = {}; @@ -136,7 +133,7 @@ export class MoreInfoLogbook extends LitElement { this.entityId, true ), - loadAutomationTraceContexts(this.hass), + loadTraceContexts(this.hass), ]); this._logbookEntries = this._logbookEntries ? [...newEntries, ...this._logbookEntries] diff --git a/src/panels/config/automation/trace/ha-automation-trace.ts b/src/panels/config/automation/trace/ha-automation-trace.ts index a85196c144..f1ab98ad14 100644 --- a/src/panels/config/automation/trace/ha-automation-trace.ts +++ b/src/panels/config/automation/trace/ha-automation-trace.ts @@ -12,9 +12,9 @@ import { AutomationEntity } from "../../../../data/automation"; import { AutomationTrace, AutomationTraceExtended, - loadAutomationTrace, - loadAutomationTraces, -} from "../../../../data/automation_debug"; + loadTrace, + loadTraces, +} from "../../../../data/trace"; import "../../../../components/ha-card"; import "../../../../components/trace/hat-trace"; import { haStyle } from "../../../../resources/styles"; @@ -165,7 +165,7 @@ export class HaAutomationTrace extends LitElement { } private async _loadTraces(runId?: string) { - this._traces = await loadAutomationTraces(this.hass, this.automationId); + this._traces = await loadTraces(this.hass, "automation", this.automationId); // Newest will be on top. this._traces.reverse(); @@ -203,8 +203,9 @@ export class HaAutomationTrace extends LitElement { } private async _loadTrace() { - const trace = await loadAutomationTrace( + const trace = await loadTrace( this.hass, + "automation", this.automationId, this._runId! ); diff --git a/src/panels/logbook/ha-logbook.ts b/src/panels/logbook/ha-logbook.ts index 2b5b23814c..514b838f0e 100644 --- a/src/panels/logbook/ha-logbook.ts +++ b/src/panels/logbook/ha-logbook.ts @@ -22,7 +22,7 @@ import { computeRTL, emitRTLDirection } from "../../common/util/compute_rtl"; import "../../components/entity/state-badge"; import "../../components/ha-circular-progress"; import "../../components/ha-relative-time"; -import { AutomationTraceContexts } from "../../data/automation_debug"; +import { TraceContexts } from "../../data/trace"; import { LogbookEntry } from "../../data/logbook"; import { haStyle, haStyleScrollbar } from "../../resources/styles"; import { HomeAssistant } from "../../types"; @@ -34,7 +34,7 @@ class HaLogbook extends LitElement { @property({ attribute: false }) public userIdToName = {}; @property({ attribute: false }) - public traceContexts: AutomationTraceContexts = {}; + public traceContexts: TraceContexts = {}; @property({ attribute: false }) public entries: LogbookEntry[] = []; @@ -218,7 +218,7 @@ class HaLogbook extends LitElement { -