From e32c33211058de39f982b9c99c6ae68166b215b4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 1 Jul 2018 19:51:19 -0400 Subject: [PATCH] Add foundation for lovelace docs --- _config.yml | 2 + .../_includes/asides/lovelace_navigation.html | 22 ++++ source/_includes/site/sidebar.html | 4 +- source/_lovelace/glance.markdown | 26 +++++ .../lovelace/lovelace-ui-comparison.png | Bin 0 -> 11136 bytes source/lovelace/index.markdown | 107 ++++++++++++++++++ 6 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 source/_includes/asides/lovelace_navigation.html create mode 100644 source/_lovelace/glance.markdown create mode 100644 source/images/lovelace/lovelace-ui-comparison.png create mode 100644 source/lovelace/index.markdown diff --git a/_config.yml b/_config.yml index 08612e54735..1bb5a20bd4a 100644 --- a/_config.yml +++ b/_config.yml @@ -76,6 +76,8 @@ collections: output: true faq: output: true + lovelace: + output: true # ----------------------- # # 3rd Party Settings # diff --git a/source/_includes/asides/lovelace_navigation.html b/source/_includes/asides/lovelace_navigation.html new file mode 100644 index 00000000000..fd19a6462df --- /dev/null +++ b/source/_includes/asides/lovelace_navigation.html @@ -0,0 +1,22 @@ +
+ + {% assign cards = site.lovelace | sort: 'title' %} + +
+

Lovelace UI

+ +
+ +
+

Cards

+ +
+
diff --git a/source/_includes/site/sidebar.html b/source/_includes/site/sidebar.html index 6ee8aaf444b..81abe7cd946 100644 --- a/source/_includes/site/sidebar.html +++ b/source/_includes/site/sidebar.html @@ -2,8 +2,10 @@ {% assign url_parts = page.url | split: '/' %} {% if url_parts[1] == 'components' %} {% include asides/component_navigation.html | compact_newlines %} - {% elsif url_parts[1] == 'cookbook' %} + {% elsif url_parts[1] == 'cookbook' %} {% include asides/cookbook_navigation.html | compact_newlines %} + {% elsif url_parts[1] == 'lovelace' %} + {% include asides/lovelace_navigation.html | compact_newlines %} {% elsif url_parts[1] == 'developers' or url_parts[1] == 'help' %} {% include asides/help_navigation.html | compact_newlines %} {% elsif url_parts[1] == 'getting-started' %} diff --git a/source/_lovelace/glance.markdown b/source/_lovelace/glance.markdown new file mode 100644 index 00000000000..9d2511eada0 --- /dev/null +++ b/source/_lovelace/glance.markdown @@ -0,0 +1,26 @@ +--- +layout: page +title: "Glance Card" +sidebar_label: Glance +description: "The Glance card allows you to see a list of entities at a glance." +date: 2018-07-01 10:28 +00:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +A card that allows you to see see a list of entities at a glance. + +| Name | Type | Default | Description +| ---- | ---- | ------- | ----------- +| type | string | **Required** | `glance` +| entities | list | **Required** | Entity id's +| title | string | Optional | Card title + +Each entry in the list of entities is either an entity ID or an entity option object. The entity option object can have the following options: + +| Name | Type | Default | Description +| ---- | ---- | ------- | ----------- +| entity | entity id | **Required** | The ID of the entity to show. +| title | string | Optional | The title to use instead of the entity name. diff --git a/source/images/lovelace/lovelace-ui-comparison.png b/source/images/lovelace/lovelace-ui-comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..1d79d98716ba67749c5f9d14dfd28bcffbc5656c GIT binary patch literal 11136 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 Mp|4)`&?e%)0n1N>oB#j- literal 0 HcmV?d00001 diff --git a/source/lovelace/index.markdown b/source/lovelace/index.markdown new file mode 100644 index 00000000000..f2b626a3dc3 --- /dev/null +++ b/source/lovelace/index.markdown @@ -0,0 +1,107 @@ +--- +layout: page +title: "Lovelace UI" +description: "The Lovelace UI is a powerful and configurable interface for Home Assistant." +date: 2018-07-01 10:28 +00:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +

+This is an experimental feature. Configuration might change in future versions. +

+ +Starting with Home Assistant 0.72, we're experimenting with a new way of defining your interface. We're calling it the Lovelace UI. + +The Lovelace UI is: + + - **Extremely fast**. We create the user interface when the UI configuration changes. When a state changes, we just make the UI represent the current state. + - **Extremely customizable**. We have a new file for just configuration. In the past, we declined UI specific options because they did not fit in the state machine. They will fit in a configuration file for a user interface. + - **Extremely extensible**. It's based on the web standard [custom elements](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements). Don't like the built-in cards? Make your own! Custom cards are treated the same as built-in cards and are configured the same way. [Check the docs.](lovelace_custom_card.md) + - **Making the backend faster**. With Lovelace, the backend will no longer need to maintain entities like groups for the sole purpose of showing them on the frontend. + +## How it works + +The old user interface relied solely on the state machine. This caused trouble as it meant that the state machine was now not only the source for device states, but also for user interface configuration. With Lovelace, we're taking a completely different approach. All user interface configuration will live in a seperate file, controlled by the user. + +

+Diagram showing how states no longer contain UI configuration. +Visual comparison of old configuration versus new configuration +

+ + + +## Trying it out + +Create a new file `/ui-lovelace.yaml` and add the following content: + +```yaml +title: My Awesome Home +views: + # View tab title. + - title: Example + # Optional unique id for direct access /lovelace/${id} + id: example + # Each view can have a different theme applied. Theme should be defined in the frontend. + theme: dark-mode + # The cards to show on this view. + cards: + # The entities card will take a list of entities and show their state. + - type: entities + # Title of the entities card + title: Example + # The entities here will be shown in the same order as specified. + entities: + - input_boolean.switch_ac_kitchen + - input_boolean.switch_ac_livingroom + - input_boolean.switch_tv + + # The filter card will filter available entities for certain criteria + # and render it as type 'entities'. + - type: entity-filter + # Filter criteria. They are all optional. + filter: + - domain: input_boolean + state: 'on' + # This config will be passed to the card rendering the filter results + card_config: + title: Input booleans that are on + + # Specify a tab icon if you want the view tab to be an icon. + - icon: mdi:home-assistant + # Title of the view. Will be used as the tooltip for tab icon + title: Second view + cards: + - type: entities + title: Lots of Kitchen AC + entities: + # It is totally possible to render duplicates. + - input_boolean.switch_ac_kitchen + - input_boolean.switch_ac_kitchen + - input_boolean.switch_ac_kitchen + - input_boolean.switch_ac_kitchen + - input_boolean.switch_ac_kitchen + - input_boolean.switch_ac_kitchen +``` + +Add to your `configuration.yaml`: + +```yaml +input_boolean: + switch_ac_kitchen: + name: AC kitchen + switch_ac_livingroom: + name: AC living room + switch_tv: + name: TV +``` + +Now restart Home Assistant, navigate to `/lovelace`. When you make changes to `ui-lovelace.yaml`, you don't have to restart Home Assistant or refresh the page. Just hit the refresh button at the top of the UI. + +## Current limitations + +This is the very very early version aimed at gathering feedback. Discussion and suggestions are welcome in the [ui-schema repository](https://github.com/home-assistant/ui-schema).