From 3120184d63d7ab787bddb327b0f35be9b687e7eb Mon Sep 17 00:00:00 2001 From: Wendelin <12148533+wendevlin@users.noreply.github.com> Date: Thu, 28 Nov 2024 12:23:53 +0100 Subject: [PATCH] Add internal, legacy to IQS (#23040) --- src/data/integration.ts | 11 +-- src/data/integration_quality_scale.ts | 39 ++++++++++ .../ha-config-integration-page.ts | 75 +++++++++++-------- src/translations/en.json | 2 + 4 files changed, 91 insertions(+), 36 deletions(-) create mode 100644 src/data/integration_quality_scale.ts diff --git a/src/data/integration.ts b/src/data/integration.ts index 846751e07c..c293dfc540 100644 --- a/src/data/integration.ts +++ b/src/data/integration.ts @@ -40,12 +40,13 @@ export interface IntegrationManifest { loggers?: string[]; quality_scale?: | "bronze" - | "gold" - | "internal" - | "platinum" | "silver" - | "custom" - | "no_score"; + | "gold" + | "platinum" + | "no_score" + | "internal" + | "legacy" + | "custom"; iot_class: | "assumed_state" | "cloud_polling" diff --git a/src/data/integration_quality_scale.ts b/src/data/integration_quality_scale.ts new file mode 100644 index 0000000000..e49bbc835d --- /dev/null +++ b/src/data/integration_quality_scale.ts @@ -0,0 +1,39 @@ +import { mdiContentSave, mdiMedal, mdiTrophy } from "@mdi/js"; +import { mdiHomeAssistant } from "../resources/home-assistant-logo-svg"; +import type { LocalizeKeys } from "../common/translations/localize"; + +/** + * Map integration quality scale to icon and translation key. + */ +export const QUALITY_SCALE_MAP: Record< + string, + { icon: string; translationKey: LocalizeKeys } +> = { + bronze: { + icon: mdiMedal, + translationKey: "ui.panel.config.integrations.config_entry.bronze_quality", + }, + silver: { + icon: mdiMedal, + translationKey: "ui.panel.config.integrations.config_entry.silver_quality", + }, + gold: { + icon: mdiMedal, + translationKey: "ui.panel.config.integrations.config_entry.gold_quality", + }, + platinum: { + icon: mdiTrophy, + translationKey: + "ui.panel.config.integrations.config_entry.platinum_quality", + }, + internal: { + icon: mdiHomeAssistant, + translationKey: + "ui.panel.config.integrations.config_entry.internal_integration", + }, + legacy: { + icon: mdiContentSave, + translationKey: + "ui.panel.config.integrations.config_entry.legacy_integration", + }, +}; diff --git a/src/panels/config/integrations/ha-config-integration-page.ts b/src/panels/config/integrations/ha-config-integration-page.ts index 5251a7a94d..f44a03b00f 100644 --- a/src/panels/config/integrations/ha-config-integration-page.ts +++ b/src/panels/config/integrations/ha-config-integration-page.ts @@ -13,7 +13,6 @@ import { mdiDownload, mdiFileCodeOutline, mdiHandExtendedOutline, - mdiMedal, mdiOpenInNew, mdiPackageVariant, mdiPlayCircleOutline, @@ -23,7 +22,6 @@ import { mdiRenameBox, mdiShapeOutline, mdiStopCircleOutline, - mdiTrophy, mdiWeb, mdiWrench, } from "@mdi/js"; @@ -107,9 +105,7 @@ import { documentationUrl } from "../../../util/documentation-url"; import { fileDownload } from "../../../util/file_download"; import type { DataEntryFlowProgressExtended } from "./ha-config-integrations"; import { showAddIntegrationDialog } from "./show-add-integration-dialog"; - -type MedalColor = "gold" | "silver" | "bronze" | "platinum"; -const MEDAL_COLORS = ["bronze", "silver", "gold", "platinum"]; +import { QUALITY_SCALE_MAP } from "../../../data/integration_quality_scale"; export const renderConfigEntryError = ( hass: HomeAssistant, @@ -344,29 +340,30 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) { ? html`