From ca20c2d2923feef33781e97f81c0019c3b2d4af0 Mon Sep 17 00:00:00 2001 From: Wendelin <12148533+wendevlin@users.noreply.github.com> Date: Wed, 23 Oct 2024 13:07:00 +0200 Subject: [PATCH] Config logs streaming (#22172) * Add logs follow for error-log-card WIP * Add stream config logs * Add new logs indicator to error-log-card * Add number of lines select for error-log-card * Add improvements and nr of lines to error-log-card * Fix error-log-card linter issue * Use error-log-card in addon views * Remove unused hassio-addon-logs * Add backwards compatibility for error-log-card * Remove version test flag in error-log-card * Add recovery mode support to error-log-card * Add search highlight for error-log-card * Add search, add additional lines to ha-ansi-to-html * Add infinity load older logs in error-log-card * Fix hassio-supervisor-log using fetchHassioLogs * Fix colored lines in ha-ansi-to-html * Fix search and prevent empty parts in ha-ansi-to-html * Fix load old logs initially in error-log-card * Add download log lines dialog * Fix load logs without stream in error-log-card * Fix ha-ansi-to-html search * Add debounce scroll for core provider in error-log-card * Add hass.callApiRaw * Fix variable naming for dialog-download-logs * Improve scroll down wording in error-log-card --- .../src/addon-view/hassio-addon-dashboard.ts | 8 +- .../addon-view/log/hassio-addon-log-tab.ts | 49 +- .../src/addon-view/log/hassio-addon-logs.ts | 90 --- hassio/src/system/hassio-supervisor-log.ts | 4 +- src/components/ha-ansi-to-html.ts | 159 ++++- src/data/hassio/supervisor.ts | 35 +- .../config/logs/dialog-download-logs.ts | 146 +++++ src/panels/config/logs/error-log-card.ts | 588 ++++++++++++++---- src/panels/config/logs/ha-config-logs.ts | 1 + .../config/logs/show-dialog-download-logs.ts | 18 + src/state/connection-mixin.ts | 6 +- src/translations/en.json | 4 + src/types.ts | 7 + src/util/hass-call-api.ts | 25 + 14 files changed, 881 insertions(+), 259 deletions(-) delete mode 100644 hassio/src/addon-view/log/hassio-addon-logs.ts create mode 100644 src/panels/config/logs/dialog-download-logs.ts create mode 100644 src/panels/config/logs/show-dialog-download-logs.ts diff --git a/hassio/src/addon-view/hassio-addon-dashboard.ts b/hassio/src/addon-view/hassio-addon-dashboard.ts index 6c6ec8f12b..e4b0c5f3a7 100644 --- a/hassio/src/addon-view/hassio-addon-dashboard.ts +++ b/hassio/src/addon-view/hassio-addon-dashboard.ts @@ -37,7 +37,6 @@ import "./config/hassio-addon-config"; import "./config/hassio-addon-network"; import "./hassio-addon-router"; import "./info/hassio-addon-info"; -import "./log/hassio-addon-logs"; @customElement("hassio-addon-dashboard") class HassioAddonDashboard extends LitElement { @@ -161,16 +160,11 @@ class HassioAddonDashboard extends LitElement { margin-bottom: 24px; width: 600px; } - hassio-addon-logs { - max-width: calc(100% - 8px); - min-width: 600px; - } @media only screen and (max-width: 600px) { hassio-addon-info, hassio-addon-network, hassio-addon-audio, - hassio-addon-config, - hassio-addon-logs { + hassio-addon-config { max-width: 100%; min-width: 100%; } diff --git a/hassio/src/addon-view/log/hassio-addon-log-tab.ts b/hassio/src/addon-view/log/hassio-addon-log-tab.ts index df727abad0..04ce803dfc 100644 --- a/hassio/src/addon-view/log/hassio-addon-log-tab.ts +++ b/hassio/src/addon-view/log/hassio-addon-log-tab.ts @@ -1,12 +1,14 @@ import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; -import { customElement, property } from "lit/decorators"; +import { customElement, property, state } from "lit/decorators"; import "../../../../src/components/ha-circular-progress"; import { HassioAddonDetails } from "../../../../src/data/hassio/addon"; import { Supervisor } from "../../../../src/data/supervisor/supervisor"; import { haStyle } from "../../../../src/resources/styles"; import { HomeAssistant } from "../../../../src/types"; import { hassioStyle } from "../../resources/hassio-style"; -import "./hassio-addon-logs"; +import "../../../../src/panels/config/logs/error-log-card"; +import "../../../../src/components/search-input"; +import { extractSearchParam } from "../../../../src/common/url/search-params"; @customElement("hassio-addon-log-tab") class HassioAddonLogDashboard extends LitElement { @@ -16,6 +18,8 @@ class HassioAddonLogDashboard extends LitElement { @property({ attribute: false }) public addon?: HassioAddonDetails; + @state() private _filter = extractSearchParam("filter") || ""; + protected render(): TemplateResult { if (!this.addon) { return html` @@ -23,16 +27,31 @@ class HassioAddonLogDashboard extends LitElement { `; } return html` -