Skip to content

Commit 4d3d05f

Browse files
✨ show entity name in editor
1 parent 026ef25 commit 4d3d05f

File tree

6 files changed

+66
-58
lines changed

6 files changed

+66
-58
lines changed

src/elements/card.ts

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,6 @@ export class TodayCard extends LitElement {
2929
return document.createElement("today-card-editor");
3030
}
3131

32-
connectedCallback(): void {
33-
super.connectedCallback();
34-
35-
if (this.refreshInterval === undefined) {
36-
this.refreshInterval = window.setInterval((): void => {
37-
this.updateEvents();
38-
}, REFRESH_INTERVAL);
39-
}
40-
}
41-
42-
disconnectedCallback(): void {
43-
window.clearInterval(this.refreshInterval);
44-
45-
super.disconnectedCallback();
46-
}
47-
4832
static getStubConfig(
4933
hass: HomeAssistant,
5034
entities: string[],
@@ -67,6 +51,22 @@ export class TodayCard extends LitElement {
6751
};
6852
}
6953

54+
connectedCallback(): void {
55+
super.connectedCallback();
56+
57+
if (this.refreshInterval === undefined) {
58+
this.refreshInterval = window.setInterval((): void => {
59+
this.updateEvents();
60+
}, REFRESH_INTERVAL);
61+
}
62+
}
63+
64+
disconnectedCallback(): void {
65+
window.clearInterval(this.refreshInterval);
66+
67+
super.disconnectedCallback();
68+
}
69+
7070
setConfig(config: CardConfig) {
7171
setHass(this.hass);
7272
assert(config, CardConfig);
@@ -91,7 +91,8 @@ export class TodayCard extends LitElement {
9191
if (events.length === 0) {
9292
eventsHtml = html`
9393
<div class="event">
94-
<div class="indicator" style="background-color: ${computeCssColor(this.config.fallback_color)}"></div>
94+
<div class="indicator"
95+
style="background-color: ${computeCssColor(this.config.fallback_color)}"></div>
9596
<div class="details">
9697
<p class="title">${localize("noEvents.title")}</p>
9798
<p class="schedule">${localize("noEvents.subtitle")}</p>

src/elements/editor.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ import styles from "bundle-text:./editor.css";
22
import {CSSResult, html, LitElement, TemplateResult, unsafeCSS} from "lit";
33
import {customElement, property, state} from "lit/decorators.js";
44
import {assert} from "superstruct";
5-
import {fireEvent, processEditorEntities} from "../functions/config";
5+
import {processEditorEntities} from "../functions/config";
66
import {loadHaComponents} from "../functions/hacks";
77
import {CardConfig, EntitiesRowConfig} from "../structs/config";
88
import {HomeAssistant} from "custom-card-helpers";
99
import {setHass} from "../globals";
1010
import localize from "../localization/localize";
11+
import {fireEvent} from "../functions/events";
1112

1213
const FORM_SCHEMA = [
1314
{

src/elements/entity-editor.ts

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@ import styles from "bundle-text:./entity-editor.css";
33
import {CSSResult, html, LitElement, TemplateResult, unsafeCSS} from "lit";
44
import {customElement, property, state} from "lit/decorators.js";
55
import {repeat} from "lit/directives/repeat";
6-
import {fireEvent} from "../functions/config";
76
import {HomeAssistant} from "custom-card-helpers";
87
import {EntitiesRowConfig} from "../structs/config";
98
import localize from "../localization/localize";
9+
import {fireEvent} from "../functions/events";
10+
import {getEntityName} from "../functions/config";
1011

1112
@customElement('today-card-entities-editor')
1213
export class TodayCardEntitiesEditor extends LitElement {
1314
@property({attribute: false}) public hass!: HomeAssistant;
14-
@state() private entities: EntitiesRowConfig[] = [];
15+
@state() public entities: EntitiesRowConfig[] = [];
1516

1617
static get styles(): CSSResult {
1718
return unsafeCSS(styles);
@@ -31,7 +32,7 @@ export class TodayCardEntitiesEditor extends LitElement {
3132
(entity, index) => html`
3233
<div class="entity">
3334
<div class="details">
34-
<span class="name">Name</span>
35+
<span class="name">${getEntityName(entity.entity)}</span>
3536
<span class="id">${entity.entity}</span>
3637
</div>
3738
<ha-color-picker
@@ -72,22 +73,18 @@ export class TodayCardEntitiesEditor extends LitElement {
7273
const value = event.detail.value;
7374

7475
const newEntities = this.entities.concat();
75-
newEntities[index] = {
76-
entity: newEntities[index].entity,
77-
color: value,
78-
};
76+
newEntities[index] = {...newEntities[index], color: value};
7977

8078
fireEvent(this, "entities-changed", {entities: newEntities});
8179
}
8280

8381
private addRow(event: Event): void {
84-
// @ts-expect-error
85-
const value = event.detail.value;
86-
if (value === "") {
82+
const entityId = event.detail.value;
83+
if (entityId === "") {
8784
return;
8885
}
8986

90-
const newEntities = this.entities.concat({entity: value, color: ""});
87+
const newEntities: EntitiesRowConfig[] = this.entities.concat({entity: entityId});
9188

9289
// @ts-expect-error
9390
event.target.value = "";

src/functions/colors.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
export const FALLBACK_COLORS: string[] = [
2-
"blue",
3-
"yellow",
4-
"red",
5-
"cyan",
6-
"deep-purple",
2+
"light-blue",
3+
"amber",
4+
"light-green",
75
"pink",
6+
"deep-purple",
7+
"deep-orange",
88
];
99

1010
export const THEME_COLORS: string[] = [

src/functions/config.ts

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,14 @@
11
import {EntitiesRowConfig} from "../structs/config";
22
import {getFallBackColor} from "./colors";
3+
import {getHass} from "../globals";
34

4-
export function fireEvent(
5-
node: HTMLElement,
6-
type: string,
7-
detail: Record<string, any> | null | undefined,
8-
options?: Record<string, any>
9-
): Event {
10-
options = options || {};
11-
detail = detail === null || detail === undefined ? {} : detail;
5+
export function getEntityName(entity: string): string {
6+
const hass = getHass();
7+
if (!hass) {
8+
return entity;
9+
}
1210

13-
const event = new Event(type, {
14-
bubbles: options.bubbles === undefined ? true : options.bubbles,
15-
cancelable: Boolean(options.cancelable),
16-
composed: options.composed === undefined ? true : options.composed,
17-
});
18-
// @ts-ignore
19-
event.detail = detail;
20-
21-
node.dispatchEvent(event);
22-
23-
return event;
11+
return hass.entities[entity]?.name ?? entity;
2412
}
2513

2614
export function processEditorEntities(
@@ -31,13 +19,13 @@ export function processEditorEntities(
3119
if (typeof entry === "string") {
3220
return {
3321
entity: entry,
34-
color: getFallBackColor(i),
22+
color: assignColors ? getFallBackColor(i): "",
3523
};
3624
}
3725

38-
// TODO: Inject color for object type entrys
39-
// TODO: Only inject colors if enabled
40-
41-
return entry;
26+
return {
27+
entity: entry.entity,
28+
color: entry.color ?? (assignColors ? getFallBackColor(i): ""),
29+
};
4230
});
4331
}

src/functions/events.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
export function fireEvent(
2+
node: HTMLElement,
3+
type: string,
4+
detail: Record<string, any> | null | undefined,
5+
options?: Record<string, any>
6+
): Event {
7+
options = options || {};
8+
detail = detail === null || detail === undefined ? {} : detail;
9+
10+
const event = new Event(type, {
11+
bubbles: options.bubbles === undefined ? true : options.bubbles,
12+
cancelable: Boolean(options.cancelable),
13+
composed: options.composed === undefined ? true : options.composed,
14+
});
15+
// @ts-ignore
16+
event.detail = detail;
17+
18+
node.dispatchEvent(event);
19+
20+
return event;
21+
}

0 commit comments

Comments
 (0)