Skip to content

Commit

Permalink
Add typings
Browse files Browse the repository at this point in the history
  • Loading branch information
piitaya committed Sep 19, 2023
1 parent 662a9d6 commit 965618a
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 25 deletions.
9 changes: 3 additions & 6 deletions src/data/lovelace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ export interface LovelacePanelConfig {
mode: "yaml" | "storage";
}

export interface LovelaceStrategyConfig {
export interface LovelaceStrategyConfig<S = Record<string, unknown>> {
type: string;
options?: Record<string, unknown>;
options?: S;
}

export interface LovelaceConfig {
Expand Down Expand Up @@ -83,10 +83,7 @@ export interface LovelaceViewConfig {
index?: number;
title?: string;
type?: string;
strategy?: {
type: string;
options?: Record<string, unknown>;
};
strategy?: LovelaceStrategyConfig;
badges?: Array<string | LovelaceBadgeConfig>;
cards?: LovelaceCardConfig[];
path?: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
import { customElement } from "lit/decorators";
import { LovelaceConfig } from "../../../../data/lovelace";
import {
getLovelaceStrategy,
LovelaceDashboardStrategy,
type LovelaceDashboardStrategyEditor,
} from "../../strategies/get-strategy";
import { getLovelaceStrategy } from "../../strategies/get-strategy";
import { LovelaceStrategyEditor } from "../../strategies/types";
import { HuiElementEditor } from "../hui-element-editor";

@customElement("hui-dashboard-strategy-element-editor")
export class HuiDashboardStrategyElementEditor extends HuiElementEditor<LovelaceConfig> {
protected async getConfigElement(): Promise<
LovelaceDashboardStrategyEditor | undefined
LovelaceStrategyEditor | undefined
> {
const elClass = await getLovelaceStrategy<LovelaceDashboardStrategy>(
const elClass = await getLovelaceStrategy(
"dashboard",
this.configElementType!
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ import type {
HaFormSchema,
SchemaUnion,
} from "../../../../components/ha-form/types";
import { LovelaceStrategyConfig } from "../../../../data/lovelace";
import type { LovelaceStrategyConfig } from "../../../../data/lovelace";
import type { HomeAssistant } from "../../../../types";
import { LovelaceDashboardStrategyEditor } from "../../strategies/get-strategy";
import { OriginalStatesDashboardStrategyOptions } from "../../strategies/original-states-dashboard-strategy";
import { LovelaceStrategyEditor } from "../../strategies/types";

const SCHEMA = [
{
Expand All @@ -20,15 +21,18 @@ const SCHEMA = [
] as const satisfies readonly HaFormSchema[];

@customElement("hui-original-states-dashboard-strategy-editor")
export class HuiSensorCardEditor
export class HuiOriginalStatesDashboarStrategyEditor
extends LitElement
implements LovelaceDashboardStrategyEditor
implements LovelaceStrategyEditor
{
@property({ attribute: false }) public hass?: HomeAssistant;

@state() private _config?: LovelaceStrategyConfig;
@state()
private _config?: LovelaceStrategyConfig<OriginalStatesDashboardStrategyOptions>;

public setConfig(config: LovelaceStrategyConfig): void {
public setConfig(
config: LovelaceStrategyConfig<OriginalStatesDashboardStrategyOptions>
): void {
this._config = config;
}

Expand Down Expand Up @@ -72,6 +76,6 @@ export class HuiSensorCardEditor

declare global {
interface HTMLElementTagNameMap {
"hui-original-states-dashboard-strategy-editor": HuiSensorCardEditor;
"hui-original-states-dashboard-strategy-editor": HuiOriginalStatesDashboarStrategyEditor;
}
}
2 changes: 1 addition & 1 deletion src/panels/lovelace/strategies/get-strategy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ type StrategyConfig<T extends LovelaceStrategyConfigType> = AsyncReturnType<
Strategies[T]["generate"]
>;

const getLovelaceStrategy = async <T extends LovelaceStrategyConfigType>(
export const getLovelaceStrategy = async <T extends LovelaceStrategyConfigType>(
configType: T,
strategyType: string
): Promise<LovelaceStrategy> => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,22 @@ import { LovelaceConfig } from "../../../data/lovelace";
import { HomeAssistant } from "../../../types";
import { LovelaceStrategyConfig, LovelaceStrategyParams } from "./types";

export type OriginalStatesDashboardStrategyOptions = {
no_area_group?: boolean;
};

@customElement("original-states-dashboard-strategy")
export class OriginalStatesDashboardStrategy extends ReactiveElement {
static async generate(
_config: LovelaceStrategyConfig,
config: LovelaceStrategyConfig<OriginalStatesDashboardStrategyOptions>,
hass: HomeAssistant,
_params?: LovelaceStrategyParams
): Promise<LovelaceConfig> {
return {
title: hass.config.location_name,
views: [
{
strategy: { type: "original-states" },
strategy: { type: "original-states", options: config.options },
},
],
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,14 @@ import { HomeAssistant } from "../../../types";
import { generateDefaultViewConfig } from "../common/generate-lovelace-config";
import { LovelaceStrategyConfig, LovelaceStrategyParams } from "./types";

export type OriginalStatesViewStrategyOptions = {
no_area_group?: boolean;
};

@customElement("original-states-view-strategy")
export class OriginalStatesViewStrategy extends ReactiveElement {
static async generate(
_config: LovelaceStrategyConfig,
config: LovelaceStrategyConfig<OriginalStatesViewStrategyOptions>,
hass: HomeAssistant,
_params?: LovelaceStrategyParams
): Promise<LovelaceViewConfig> {
Expand All @@ -38,7 +42,7 @@ export class OriginalStatesViewStrategy extends ReactiveElement {
// User can override default view. If they didn't, we will add one
// that contains all entities.
const view = generateDefaultViewConfig(
info.view.strategy?.options?.no_area_group ? {} : hass.areas,
config.options?.no_area_group ? {} : hass.areas,
hass.devices,
hass.entities,
hass.states,
Expand Down
1 change: 1 addition & 0 deletions src/panels/lovelace/strategies/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export type LovelaceStrategy<T = any> = {
hass: HomeAssistant,
params?: LovelaceStrategyParams
): Promise<T>;
getConfigElement?: () => LovelaceStrategyEditor;
};

export interface LovelaceDashboardStrategy
Expand Down

0 comments on commit 965618a

Please sign in to comment.