mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-26 18:56:39 +00:00
Add grouping by area and domain in voice assistant expose data table (#20797)
This commit is contained in:
parent
c864b34a9a
commit
be26f8bc24
@ -54,6 +54,8 @@ import { voiceAssistantTabs } from "./ha-config-voice-assistants";
|
|||||||
import { showExposeEntityDialog } from "./show-dialog-expose-entity";
|
import { showExposeEntityDialog } from "./show-dialog-expose-entity";
|
||||||
import { showVoiceSettingsDialog } from "./show-dialog-voice-settings";
|
import { showVoiceSettingsDialog } from "./show-dialog-voice-settings";
|
||||||
import { storage } from "../../../common/decorators/storage";
|
import { storage } from "../../../common/decorators/storage";
|
||||||
|
import { domainToName } from "../../../data/integration";
|
||||||
|
import { computeDomain } from "../../../common/entity/compute_domain";
|
||||||
|
|
||||||
@customElement("ha-config-voice-assistants-expose")
|
@customElement("ha-config-voice-assistants-expose")
|
||||||
export class VoiceAssistantsExpose extends LitElement {
|
export class VoiceAssistantsExpose extends LitElement {
|
||||||
@ -96,6 +98,12 @@ export class VoiceAssistantsExpose extends LitElement {
|
|||||||
})
|
})
|
||||||
private _activeSorting?: SortingChangedEvent;
|
private _activeSorting?: SortingChangedEvent;
|
||||||
|
|
||||||
|
@storage({ key: "devices-table-grouping", state: false, subscribe: false })
|
||||||
|
private _activeGrouping?: string;
|
||||||
|
|
||||||
|
@storage({ key: "devices-table-collapsed", state: false, subscribe: false })
|
||||||
|
private _activeCollapsed?: string;
|
||||||
|
|
||||||
@query("hass-tabs-subpage-data-table", true)
|
@query("hass-tabs-subpage-data-table", true)
|
||||||
private _dataTable!: HaTabsSubpageDataTable;
|
private _dataTable!: HaTabsSubpageDataTable;
|
||||||
|
|
||||||
@ -136,9 +144,19 @@ export class VoiceAssistantsExpose extends LitElement {
|
|||||||
<div class="secondary">${entry.entity_id}</div>
|
<div class="secondary">${entry.entity_id}</div>
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
|
domain: {
|
||||||
|
title: localize(
|
||||||
|
"ui.panel.config.voice_assistants.expose.headers.domain"
|
||||||
|
),
|
||||||
|
sortable: false,
|
||||||
|
hidden: true,
|
||||||
|
filterable: true,
|
||||||
|
groupable: true,
|
||||||
|
},
|
||||||
area: {
|
area: {
|
||||||
title: localize("ui.panel.config.voice_assistants.expose.headers.area"),
|
title: localize("ui.panel.config.voice_assistants.expose.headers.area"),
|
||||||
sortable: true,
|
sortable: true,
|
||||||
|
groupable: true,
|
||||||
hidden: narrow,
|
hidden: narrow,
|
||||||
filterable: true,
|
filterable: true,
|
||||||
width: "15%",
|
width: "15%",
|
||||||
@ -252,6 +270,7 @@ export class VoiceAssistantsExpose extends LitElement {
|
|||||||
|
|
||||||
private _filteredEntities = memoize(
|
private _filteredEntities = memoize(
|
||||||
(
|
(
|
||||||
|
localize: LocalizeFunc,
|
||||||
entities: Record<string, ExtEntityRegistryEntry>,
|
entities: Record<string, ExtEntityRegistryEntry>,
|
||||||
exposedEntities: Record<string, ExposeEntitySettings>,
|
exposedEntities: Record<string, ExposeEntitySettings>,
|
||||||
devices: HomeAssistant["devices"],
|
devices: HomeAssistant["devices"],
|
||||||
@ -332,6 +351,7 @@ export class VoiceAssistantsExpose extends LitElement {
|
|||||||
this.hass.localize(
|
this.hass.localize(
|
||||||
"ui.panel.config.entities.picker.unnamed_entity"
|
"ui.panel.config.entities.picker.unnamed_entity"
|
||||||
),
|
),
|
||||||
|
domain: domainToName(localize, computeDomain(entityState.entity_id)),
|
||||||
area: area ? area.name : "—",
|
area: area ? area.name : "—",
|
||||||
assistants: Object.keys(
|
assistants: Object.keys(
|
||||||
exposedEntities?.[entityState.entity_id]
|
exposedEntities?.[entityState.entity_id]
|
||||||
@ -479,6 +499,7 @@ export class VoiceAssistantsExpose extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const filteredEntities = this._filteredEntities(
|
const filteredEntities = this._filteredEntities(
|
||||||
|
this.hass.localize,
|
||||||
this._extEntities,
|
this._extEntities,
|
||||||
this.exposedEntities,
|
this.exposedEntities,
|
||||||
this.hass.devices,
|
this.hass.devices,
|
||||||
@ -515,8 +536,12 @@ export class VoiceAssistantsExpose extends LitElement {
|
|||||||
.selected=${this._selectedEntities.length}
|
.selected=${this._selectedEntities.length}
|
||||||
clickable
|
clickable
|
||||||
.initialSorting=${this._activeSorting}
|
.initialSorting=${this._activeSorting}
|
||||||
|
.initialGroupColumn=${this._activeGrouping}
|
||||||
|
.initialCollapsedGroups=${this._activeCollapsed}
|
||||||
@sorting-changed=${this._handleSortingChanged}
|
@sorting-changed=${this._handleSortingChanged}
|
||||||
@selection-changed=${this._handleSelectionChanged}
|
@selection-changed=${this._handleSelectionChanged}
|
||||||
|
@grouping-changed=${this._handleGroupingChanged}
|
||||||
|
@collapsed-changed=${this._handleCollapseChanged}
|
||||||
@clear-filter=${this._clearFilter}
|
@clear-filter=${this._clearFilter}
|
||||||
@search-changed=${this._handleSearchChange}
|
@search-changed=${this._handleSearchChange}
|
||||||
@row-click=${this._openEditEntry}
|
@row-click=${this._openEditEntry}
|
||||||
@ -711,6 +736,14 @@ export class VoiceAssistantsExpose extends LitElement {
|
|||||||
this._activeSorting = ev.detail;
|
this._activeSorting = ev.detail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private _handleGroupingChanged(ev: CustomEvent) {
|
||||||
|
this._activeGrouping = ev.detail.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _handleCollapseChanged(ev: CustomEvent) {
|
||||||
|
this._activeCollapsed = ev.detail.value;
|
||||||
|
}
|
||||||
|
|
||||||
static get styles(): CSSResultGroup {
|
static get styles(): CSSResultGroup {
|
||||||
return [
|
return [
|
||||||
haStyle,
|
haStyle,
|
||||||
|
@ -2650,6 +2650,7 @@
|
|||||||
"headers": {
|
"headers": {
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"area": "Area",
|
"area": "Area",
|
||||||
|
"domain": "Domain",
|
||||||
"assistants": "Assistants",
|
"assistants": "Assistants",
|
||||||
"aliases": "Aliases"
|
"aliases": "Aliases"
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user