diff --git a/src/layouts/partial-panel-resolver.ts b/src/layouts/partial-panel-resolver.ts index fd5d0ecc37..233ace7fb1 100644 --- a/src/layouts/partial-panel-resolver.ts +++ b/src/layouts/partial-panel-resolver.ts @@ -33,7 +33,7 @@ const COMPONENTS = { "media-browser": () => import("../panels/media-browser/ha-panel-media-browser"), light: () => import("../panels/light/ha-panel-light"), - safety: () => import("../panels/safety/ha-panel-safety"), + security: () => import("../panels/security/ha-panel-security"), climate: () => import("../panels/climate/ha-panel-climate"), }; diff --git a/src/panels/config/lovelace/dashboards/ha-config-lovelace-dashboards.ts b/src/panels/config/lovelace/dashboards/ha-config-lovelace-dashboards.ts index c2ebbb0640..59664bdf5d 100644 --- a/src/panels/config/lovelace/dashboards/ha-config-lovelace-dashboards.ts +++ b/src/panels/config/lovelace/dashboards/ha-config-lovelace-dashboards.ts @@ -332,13 +332,13 @@ export class HaConfigLovelaceDashboards extends LitElement { }); } - if (this.hass.panels.safety) { + if (this.hass.panels.security) { result.push({ icon: "mdi:security", - title: this.hass.localize("panel.safety"), + title: this.hass.localize("panel.security"), show_in_sidebar: false, mode: "storage", - url_path: "safety", + url_path: "security", filename: "", default: false, require_admin: false, @@ -470,13 +470,13 @@ export class HaConfigLovelaceDashboards extends LitElement { } private _canDelete(urlPath: string) { - return !["lovelace", "energy", "light", "safety", "climate"].includes( + return !["lovelace", "energy", "light", "security", "climate"].includes( urlPath ); } private _canEdit(urlPath: string) { - return !["light", "safety", "climate"].includes(urlPath); + return !["light", "security", "climate"].includes(urlPath); } private _handleDelete = async (item: DataTableItem) => { diff --git a/src/panels/lovelace/cards/hui-home-summary-card.ts b/src/panels/lovelace/cards/hui-home-summary-card.ts index 709ea77f3b..e7981dccbb 100644 --- a/src/panels/lovelace/cards/hui-home-summary-card.ts +++ b/src/panels/lovelace/cards/hui-home-summary-card.ts @@ -33,7 +33,7 @@ import type { HomeSummaryCard } from "./types"; const COLORS: Record = { light: "amber", climate: "deep-orange", - safety: "blue-grey", + security: "blue-grey", media_players: "blue", }; @@ -142,20 +142,20 @@ export class HuiHomeSummaryCard extends LitElement implements LovelaceCard { ? `${formattedMinTemp}°` : `${formattedMinTemp} - ${formattedMaxTemp}°`; } - case "safety": { + case "security": { // Alarm and lock status - const safetyFilters = HOME_SUMMARIES_FILTERS.safety.map((filter) => + const securityFilters = HOME_SUMMARIES_FILTERS.security.map((filter) => generateEntityFilter(this.hass!, filter) ); - const safetyEntities = findEntities(allEntities, safetyFilters); + const securityEntities = findEntities(allEntities, securityFilters); - const locks = safetyEntities.filter((entityId) => { + const locks = securityEntities.filter((entityId) => { const domain = computeDomain(entityId); return domain === "lock"; }); - const alarms = safetyEntities.filter((entityId) => { + const alarms = securityEntities.filter((entityId) => { const domain = computeDomain(entityId); return domain === "alarm_control_panel"; }); diff --git a/src/panels/lovelace/strategies/get-strategy.ts b/src/panels/lovelace/strategies/get-strategy.ts index 80a4cb3ed8..cf2615bf0a 100644 --- a/src/panels/lovelace/strategies/get-strategy.ts +++ b/src/panels/lovelace/strategies/get-strategy.ts @@ -48,7 +48,7 @@ const STRATEGIES: Record> = { import("./home/home-media-players-view-strategy"), "home-area": () => import("./home/home-area-view-strategy"), light: () => import("../../light/strategies/light-view-strategy"), - safety: () => import("../../safety/strategies/safety-view-strategy"), + security: () => import("../../security/strategies/security-view-strategy"), climate: () => import("../../climate/strategies/climate-view-strategy"), }, section: { diff --git a/src/panels/lovelace/strategies/home/helpers/home-summaries.ts b/src/panels/lovelace/strategies/home/helpers/home-summaries.ts index 27d6dcb2b6..5f3c9557a1 100644 --- a/src/panels/lovelace/strategies/home/helpers/home-summaries.ts +++ b/src/panels/lovelace/strategies/home/helpers/home-summaries.ts @@ -2,12 +2,12 @@ import type { EntityFilter } from "../../../../../common/entity/entity_filter"; import type { LocalizeFunc } from "../../../../../common/translations/localize"; import { climateEntityFilters } from "../../../../climate/strategies/climate-view-strategy"; import { lightEntityFilters } from "../../../../light/strategies/light-view-strategy"; -import { safetyEntityFilters } from "../../../../safety/strategies/safety-view-strategy"; +import { securityEntityFilters } from "../../../../security/strategies/security-view-strategy"; export const HOME_SUMMARIES = [ "light", "climate", - "safety", + "security", "media_players", ] as const; @@ -16,14 +16,14 @@ export type HomeSummary = (typeof HOME_SUMMARIES)[number]; export const HOME_SUMMARIES_ICONS: Record = { light: "mdi:lamps", climate: "mdi:home-thermometer", - safety: "mdi:security", + security: "mdi:security", media_players: "mdi:multimedia", }; export const HOME_SUMMARIES_FILTERS: Record = { light: lightEntityFilters, climate: climateEntityFilters, - safety: safetyEntityFilters, + security: securityEntityFilters, media_players: [{ domain: "media_player", entity_category: "none" }], }; @@ -31,7 +31,7 @@ export const getSummaryLabel = ( localize: LocalizeFunc, summary: HomeSummary ) => { - if (summary === "light" || summary === "climate" || summary === "safety") { + if (summary === "light" || summary === "climate" || summary === "security") { return localize(`panel.${summary}`); } return localize(`ui.panel.lovelace.strategy.home.summary_list.${summary}`); diff --git a/src/panels/lovelace/strategies/home/home-area-view-strategy.ts b/src/panels/lovelace/strategies/home/home-area-view-strategy.ts index 1c8a5372b4..414fef4c62 100644 --- a/src/panels/lovelace/strategies/home/home-area-view-strategy.ts +++ b/src/panels/lovelace/strategies/home/home-area-view-strategy.ts @@ -104,7 +104,7 @@ export class HomeAreaViewStrategy extends ReactiveElement { const { light, climate, - safety, + security, media_players: mediaPlayers, } = entitiesBySummary; @@ -136,16 +136,16 @@ export class HomeAreaViewStrategy extends ReactiveElement { }); } - if (safety.length > 0) { + if (security.length > 0) { sections.push({ type: "grid", cards: [ computeHeadingCard( - getSummaryLabel(hass.localize, "safety"), - HOME_SUMMARIES_ICONS.safety, - "/safety?historyBack=1" + getSummaryLabel(hass.localize, "security"), + HOME_SUMMARIES_ICONS.security, + "/security?historyBack=1" ), - ...safety.map(computeTileCard), + ...security.map(computeTileCard), ], }); } diff --git a/src/panels/lovelace/strategies/home/home-main-view-strategy.ts b/src/panels/lovelace/strategies/home/home-main-view-strategy.ts index caf2bde2b9..23acca02c5 100644 --- a/src/panels/lovelace/strategies/home/home-main-view-strategy.ts +++ b/src/panels/lovelace/strategies/home/home-main-view-strategy.ts @@ -162,7 +162,7 @@ export class HomeMainViewStrategy extends ReactiveElement { generateEntityFilter(hass, filter) ); - const safetyFilters = HOME_SUMMARIES_FILTERS.safety.map((filter) => + const securityFilters = HOME_SUMMARIES_FILTERS.security.map((filter) => generateEntityFilter(hass, filter) ); @@ -170,7 +170,7 @@ export class HomeMainViewStrategy extends ReactiveElement { const hasMediaPlayers = findEntities(allEntities, mediaPlayerFilter).length > 0; const hasClimate = findEntities(allEntities, climateFilters).length > 0; - const hasSafety = findEntities(allEntities, safetyFilters).length > 0; + const hasSecurity = findEntities(allEntities, securityFilters).length > 0; const summaryCards: LovelaceCardConfig[] = [ hasLights && @@ -201,14 +201,14 @@ export class HomeMainViewStrategy extends ReactiveElement { columns: 4, }, } satisfies HomeSummaryCard), - hasSafety && + hasSecurity && ({ type: "home-summary", - summary: "safety", + summary: "security", vertical: true, tap_action: { action: "navigate", - navigation_path: "/safety?historyBack=1", + navigation_path: "/security?historyBack=1", }, grid_options: { rows: 2, diff --git a/src/panels/safety/ha-panel-safety.ts b/src/panels/security/ha-panel-security.ts similarity index 98% rename from src/panels/safety/ha-panel-safety.ts rename to src/panels/security/ha-panel-security.ts index 00bf20071b..154104d0ea 100644 --- a/src/panels/safety/ha-panel-safety.ts +++ b/src/panels/security/ha-panel-security.ts @@ -20,8 +20,8 @@ const SECURITY_LOVELACE_VIEW_CONFIG: LovelaceStrategyViewConfig = { }, }; -@customElement("ha-panel-safety") -class PanelSafety extends LitElement { +@customElement("ha-panel-security") +class PanelSecurity extends LitElement { @property({ attribute: false }) public hass!: HomeAssistant; @property({ type: Boolean, reflect: true }) public narrow = false; @@ -146,7 +146,7 @@ class PanelSafety extends LitElement { config: config, rawConfig: rawConfig, editMode: false, - urlPath: "safety", + urlPath: "security", mode: "generated", locale: this.hass.locale, enableFullEditMode: () => undefined, @@ -248,6 +248,6 @@ class PanelSafety extends LitElement { declare global { interface HTMLElementTagNameMap { - "ha-panel-safety": PanelSafety; + "ha-panel-security": PanelSecurity; } } diff --git a/src/panels/safety/strategies/safety-view-strategy.ts b/src/panels/security/strategies/security-view-strategy.ts similarity index 85% rename from src/panels/safety/strategies/safety-view-strategy.ts rename to src/panels/security/strategies/security-view-strategy.ts index 829c0c93ea..18cb22b184 100644 --- a/src/panels/safety/strategies/safety-view-strategy.ts +++ b/src/panels/security/strategies/security-view-strategy.ts @@ -17,11 +17,11 @@ import { } from "../../lovelace/strategies/areas/helpers/areas-strategy-helper"; import { getHomeStructure } from "../../lovelace/strategies/home/helpers/home-structure"; -export interface SafetyViewStrategyConfig { - type: "safety"; +export interface SecurityViewStrategyConfig { + type: "security"; } -export const safetyEntityFilters: EntityFilter[] = [ +export const securityEntityFilters: EntityFilter[] = [ { domain: "camera", entity_category: "none", @@ -67,7 +67,7 @@ export const safetyEntityFilters: EntityFilter[] = [ }, ]; -const processAreasForSafety = ( +const processAreasForSecurity = ( areaIds: string[], hass: HomeAssistant, entities: string[] @@ -81,12 +81,12 @@ const processAreasForSafety = ( const areaFilter = generateEntityFilter(hass, { area: area.area_id, }); - const areaSafetyEntities = entities.filter(areaFilter); + const areaSecurityEntities = entities.filter(areaFilter); const areaCards: LovelaceCardConfig[] = []; const computeTileCard = computeAreaTileCardConfig(hass, "", false); - for (const entityId of areaSafetyEntities) { + for (const entityId of areaSecurityEntities) { areaCards.push(computeTileCard(entityId)); } @@ -121,10 +121,10 @@ const processUnassignedEntities = ( return areaCards; }; -@customElement("safety-view-strategy") -export class SafetyViewStrategy extends ReactiveElement { +@customElement("security-view-strategy") +export class SecurityViewStrategy extends ReactiveElement { static async generate( - _config: SafetyViewStrategyConfig, + _config: SecurityViewStrategyConfig, hass: HomeAssistant ): Promise { const areas = getAreas(hass.areas); @@ -135,11 +135,11 @@ export class SafetyViewStrategy extends ReactiveElement { const allEntities = Object.keys(hass.states); - const safetyFilters = safetyEntityFilters.map((filter) => + const securityFilters = securityEntityFilters.map((filter) => generateEntityFilter(hass, filter) ); - const entities = findEntities(allEntities, safetyFilters); + const entities = findEntities(allEntities, securityFilters); const floorCount = home.floors.length + (home.areas.length ? 1 : 0); @@ -164,7 +164,7 @@ export class SafetyViewStrategy extends ReactiveElement { ], }; - const areaCards = processAreasForSafety(areaIds, hass, entities); + const areaCards = processAreasForSecurity(areaIds, hass, entities); if (areaCards.length > 0) { section.cards!.push(...areaCards); @@ -188,7 +188,7 @@ export class SafetyViewStrategy extends ReactiveElement { ], }; - const areaCards = processAreasForSafety(home.areas, hass, entities); + const areaCards = processAreasForSecurity(home.areas, hass, entities); if (areaCards.length > 0) { section.cards!.push(...areaCards); @@ -209,9 +209,9 @@ export class SafetyViewStrategy extends ReactiveElement { heading: sections.length > 0 ? hass.localize( - "ui.panel.lovelace.strategy.safety.other_devices" + "ui.panel.lovelace.strategy.security.other_devices" ) - : hass.localize("ui.panel.lovelace.strategy.safety.devices"), + : hass.localize("ui.panel.lovelace.strategy.security.devices"), }, ...unassignedCards, ], @@ -229,6 +229,6 @@ export class SafetyViewStrategy extends ReactiveElement { declare global { interface HTMLElementTagNameMap { - "safety-view-strategy": SafetyViewStrategy; + "security-view-strategy": SecurityViewStrategy; } } diff --git a/src/translations/en.json b/src/translations/en.json index 6ae6ff6cde..e4be08ea0a 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -12,7 +12,7 @@ "media_browser": "Media", "profile": "Profile", "light": "Lights", - "safety": "Safety", + "security": "Security", "climate": "Climate" }, "state": { @@ -6955,7 +6955,7 @@ "lights": "Lights", "other_lights": "Other lights" }, - "safety": { + "security": { "devices": "Devices", "other_devices": "Other devices" },