From af26c5a0a184970cb3402fb0c9a17702df1c20dc Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Wed, 18 May 2022 20:59:00 +0200 Subject: [PATCH 01/13] tab-view controls with double_tab Give support for advanced tablet view support as can be found on behance --- .../card_templates/cards/card_battery.yaml | 7 +++++++ .../cards/card_binary_sensor.yaml | 6 ++++++ .../cards/card_binary_sensor_alert.yaml | 6 ++++++ .../card_templates/cards/card_generic.yaml | 6 ++++++ .../cards/card_generic_swap.yaml | 6 ++++++ .../cards/card_input_boolean.yaml | 6 ++++++ .../card_templates/cards/card_light.yaml | 18 ++++++++++++++++++ .../cards/card_media_player.yaml | 18 ++++++++++++++++++ .../cards/card_power_outlet.yaml | 6 ++++++ .../card_templates/cards/card_thermostat.yaml | 18 ++++++++++++++++++ 10 files changed, 97 insertions(+) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_battery.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_battery.yaml index 5c4eaeceb..797c97aaf 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_battery.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_battery.yaml @@ -4,6 +4,12 @@ card_battery: template: - "icon_info_bg" - "ulm_language_variables" + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_battery_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_battery_input_select ]]]" tap_action: action: "more-info" variables: @@ -69,6 +75,7 @@ card_battery: const battery_level = variables.ulm_card_battery_attribute !== null ? states[entity.entity_id].attributes[variables.ulm_card_battery_attribute] : states[entity.entity_id].state; + return battery_level + "%"; if(battery_level == "unknown") { return variables.ulm_unavailable; } else diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor.yaml index ca5d73a8e..2da7153f7 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor.yaml @@ -6,3 +6,9 @@ card_binary_sensor: - "blue" name: "[[[ return entity.attributes.friendly_name != '' ? entity.attributes.friendly_name : entity.entity_id ]]]" show_last_changed: true + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_binary_sensor_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_binary_sensor_input_select ]]]" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor_alert.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor_alert.yaml index f50a9b80c..fb92544f0 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor_alert.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor_alert.yaml @@ -5,3 +5,9 @@ card_binary_sensor_alert: - "icon_info_alert" name: "[[[ return entity.attributes.friendly_name != '' ? entity.attributes.friendly_name : entity.entity_id ]]]" show_last_changed: true + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_binary_senor_alert_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_binary_senor_alert_input_select ]]]" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic.yaml index 3fe29f869..cb9ea8cdc 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic.yaml @@ -4,6 +4,12 @@ card_generic: template: - "icon_info_bg" - "ulm_language_variables" + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_generic_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_generic_input_select ]]]" label: > [[[ var unit = entity.attributes.unit_of_measurement != null ? " " + entity.attributes.unit_of_measurement : "" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic_swap.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic_swap.yaml index 9a3ca0a9b..f266c3696 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic_swap.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic_swap.yaml @@ -4,6 +4,12 @@ card_generic_swap: template: - "icon_info_bg" - "ulm_language_variables" + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_generic_swap_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_generic_swap_input_select ]]]" label: > [[[ var unit = entity.attributes.unit_of_measurement != null ? " " + entity.attributes.unit_of_measurement : "" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_input_boolean.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_input_boolean.yaml index c6a7ba07c..fea3db52c 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_input_boolean.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_input_boolean.yaml @@ -5,6 +5,12 @@ card_input_boolean: - "icon_info_bg" - "ulm_language_variables" - "blue" + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_input_boolean_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_input_boolean_input_select ]]]" name: "[[[ return entity.attributes.friendly_name != '' ? entity.attributes.friendly_name : entity.entity_id ]]]" label: > [[[ diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_light.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_light.yaml index 9d40d21a4..0286f6271 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_light.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_light.yaml @@ -20,6 +20,12 @@ card_light: show_label: false tap_action: action: "toggle" + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_light_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_light_input_select ]]]" hold_action: action: > [[[ @@ -124,6 +130,12 @@ card_light: type: "custom:button-card" entity: "[[[ return entity.entity_id ]]]" icon: "[[[ return variables.ulm_card_light_icon ]]]" + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_light_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_light_input_select ]]]" hold_action: action: > [[[ @@ -177,6 +189,12 @@ card_light: type: "custom:button-card" entity: "[[[ return entity.entity_id ]]]" name: "[[[ return variables.ulm_card_light_name ]]]" + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_light_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_light_input_select ]]]" hold_action: action: > [[[ diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_media_player.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_media_player.yaml index 2642c642f..fd23a239f 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_media_player.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_media_player.yaml @@ -17,6 +17,12 @@ card_media_player: show_icon: false show_name: false show_label: false + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_media_player_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_media_player_input_select ]]]" hold_action: action: > [[[ @@ -111,6 +117,12 @@ card_media_player: - "icon_info_bg" - "ulm_language_variables" entity: "[[[ return entity.entity_id ]]]" + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_media_player_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_media_player_input_select ]]]" hold_action: action: > [[[ @@ -242,6 +254,12 @@ card_media_player: card: type: "custom:button-card" template: "list_3_items" + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_media_player_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_media_player_input_select ]]]" hold_action: action: > [[[ diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_power_outlet.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_power_outlet.yaml index d85bb2822..eb84e75c5 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_power_outlet.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_power_outlet.yaml @@ -8,6 +8,12 @@ card_power_outlet: variables: ulm_card_power_outlet_consumption_sensor: triggers_update: "all" + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_power_outlet_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_power_outlet_input_select ]]]" label: |- [[[ if (entity.state === "on" && variables.ulm_card_power_outlet_consumption_sensor !== null) { diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_thermostat.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_thermostat.yaml index 53ee4f782..fffeb25fb 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_thermostat.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_thermostat.yaml @@ -17,6 +17,12 @@ card_thermostat: show_icon: false show_name: false show_label: false + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_thermostat_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_thermostat_input_select ]]]" hold_action: action: > [[[ @@ -171,6 +177,12 @@ card_thermostat: type: "custom:button-card" entity: "[[[ return entity.entity_id ]]]" icon: "[[[ return variables.ulm_card_thermostat_icon ]]]" + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_thermostat_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_thermostat_input_select ]]]" hold_action: action: > [[[ @@ -216,6 +228,12 @@ card_thermostat: type: "custom:button-card" entity: "[[[ return entity.entity_id ]]]" name: "[[[ return variables.ulm_card_thermostat_name ]]]" + double_tap_action: + action: "call-service" + service: "input_select.select_option" + service_data: + option: "[[[ return variables.ulm_card_thermostat_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_card_thermostat_input_select ]]]" tap_action: action: "call-service" service: > From 830e9566ad260fc343d239a305bcd29feb98f529 Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Fri, 20 May 2022 11:29:50 +0200 Subject: [PATCH 02/13] Make variables uniform Easier to use with different types of cards --- .../card_templates/cards/card_battery.yaml | 4 ++-- .../card_templates/cards/card_binary_sensor.yaml | 4 ++-- .../cards/card_binary_sensor_alert.yaml | 4 ++-- .../card_templates/cards/card_generic.yaml | 4 ++-- .../card_templates/cards/card_generic_swap.yaml | 4 ++-- .../card_templates/cards/card_input_boolean.yaml | 4 ++-- .../card_templates/cards/card_light.yaml | 12 ++++++------ .../card_templates/cards/card_media_player.yaml | 12 ++++++------ .../card_templates/cards/card_power_outlet.yaml | 4 ++-- .../card_templates/cards/card_thermostat.yaml | 12 ++++++------ 10 files changed, 32 insertions(+), 32 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_battery.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_battery.yaml index 797c97aaf..85d197da9 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_battery.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_battery.yaml @@ -8,8 +8,8 @@ card_battery: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_battery_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_battery_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" tap_action: action: "more-info" variables: diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor.yaml index 2da7153f7..7319890d7 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor.yaml @@ -10,5 +10,5 @@ card_binary_sensor: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_binary_sensor_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_binary_sensor_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor_alert.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor_alert.yaml index fb92544f0..441fc20b7 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor_alert.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_binary_sensor_alert.yaml @@ -9,5 +9,5 @@ card_binary_sensor_alert: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_binary_senor_alert_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_binary_senor_alert_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic.yaml index cb9ea8cdc..3e73d1f7a 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic.yaml @@ -8,8 +8,8 @@ card_generic: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_generic_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_generic_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" label: > [[[ var unit = entity.attributes.unit_of_measurement != null ? " " + entity.attributes.unit_of_measurement : "" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic_swap.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic_swap.yaml index f266c3696..d746c025b 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic_swap.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic_swap.yaml @@ -8,8 +8,8 @@ card_generic_swap: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_generic_swap_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_generic_swap_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" label: > [[[ var unit = entity.attributes.unit_of_measurement != null ? " " + entity.attributes.unit_of_measurement : "" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_input_boolean.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_input_boolean.yaml index fea3db52c..0dbc06b66 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_input_boolean.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_input_boolean.yaml @@ -9,8 +9,8 @@ card_input_boolean: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_input_boolean_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_input_boolean_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" name: "[[[ return entity.attributes.friendly_name != '' ? entity.attributes.friendly_name : entity.entity_id ]]]" label: > [[[ diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_light.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_light.yaml index 0286f6271..52f3bcff5 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_light.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_light.yaml @@ -24,8 +24,8 @@ card_light: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_light_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_light_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" hold_action: action: > [[[ @@ -134,8 +134,8 @@ card_light: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_light_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_light_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" hold_action: action: > [[[ @@ -193,8 +193,8 @@ card_light: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_light_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_light_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" hold_action: action: > [[[ diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_media_player.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_media_player.yaml index fd23a239f..6fea84529 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_media_player.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_media_player.yaml @@ -21,8 +21,8 @@ card_media_player: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_media_player_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_media_player_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" hold_action: action: > [[[ @@ -121,8 +121,8 @@ card_media_player: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_media_player_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_media_player_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" hold_action: action: > [[[ @@ -258,8 +258,8 @@ card_media_player: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_media_player_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_media_player_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" hold_action: action: > [[[ diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_power_outlet.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_power_outlet.yaml index eb84e75c5..5c9610775 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_power_outlet.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_power_outlet.yaml @@ -12,8 +12,8 @@ card_power_outlet: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_power_outlet_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_power_outlet_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" label: |- [[[ if (entity.state === "on" && variables.ulm_card_power_outlet_consumption_sensor !== null) { diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_thermostat.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_thermostat.yaml index fffeb25fb..8339c54b2 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_thermostat.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_thermostat.yaml @@ -21,8 +21,8 @@ card_thermostat: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_thermostat_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_thermostat_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" hold_action: action: > [[[ @@ -181,8 +181,8 @@ card_thermostat: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_thermostat_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_thermostat_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" hold_action: action: > [[[ @@ -232,8 +232,8 @@ card_thermostat: action: "call-service" service: "input_select.select_option" service_data: - option: "[[[ return variables.ulm_card_thermostat_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_card_thermostat_input_select ]]]" + option: "[[[ return variables.ulm_input_select_option ]]]" + entity_id: "[[[ return variables.ulm_input_select ]]]" tap_action: action: "call-service" service: > From 0227dd301fb825b7939941647271dc997b52be53 Mon Sep 17 00:00:00 2001 From: oscfdezdz Date: Fri, 27 May 2022 17:39:11 +0200 Subject: [PATCH 03/13] Fix regression introduced by 75d42766dd8bb0b29d81785fcd13a493073d4934 in translations --- .../custom_card_paddy_welcome.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/custom_cards/custom_card_paddy_welcome/custom_card_paddy_welcome.yaml b/custom_cards/custom_card_paddy_welcome/custom_card_paddy_welcome.yaml index 456436315..7bc39030b 100644 --- a/custom_cards/custom_card_paddy_welcome/custom_card_paddy_welcome.yaml +++ b/custom_cards/custom_card_paddy_welcome/custom_card_paddy_welcome.yaml @@ -1,5 +1,7 @@ --- custom_card_paddy_welcome: + template: + - "ulm_language_variables" show_icon: false show_name: false show_label: false @@ -45,6 +47,8 @@ custom_card_paddy_welcome: } custom_card_paddy_welcome_with_weather: + template: + - "ulm_language_variables" show_icon: false show_name: false show_label: false @@ -127,6 +131,8 @@ custom_card_paddy_welcome_with_weather: } custom_card_paddy_welcome_with_news: + template: + - "ulm_language_variables" show_icon: false show_name: false show_label: false From b089170ef4e3b8ddb64328cf4ec9dc05ca629ebb Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Fri, 27 May 2022 19:18:40 +0200 Subject: [PATCH 04/13] basis for python alterations --- .../ui_lovelace_minimalist/base.py | 3 ++ .../ui_lovelace_minimalist/config_flow.py | 15 ++++++++++ .../ui_lovelace_minimalist/configure.py | 28 ++++++++++++++----- .../ui_lovelace_minimalist/const.py | 3 ++ .../ui_lovelace_minimalist/load_dashboard.py | 19 +++++++++++++ .../lovelace/advanced-dash/test.yaml | 13 +++++++++ .../translations/en.json | 6 ++++ 7 files changed, 80 insertions(+), 7 deletions(-) create mode 100644 custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/test.yaml diff --git a/custom_components/ui_lovelace_minimalist/base.py b/custom_components/ui_lovelace_minimalist/base.py index d0d69097a..72d53ad2e 100644 --- a/custom_components/ui_lovelace_minimalist/base.py +++ b/custom_components/ui_lovelace_minimalist/base.py @@ -26,6 +26,9 @@ class UlmConfiguration: sidepanel_enabled: bool = DEFAULT_SIDEPANEL_ENABLED sidepanel_icon: str = DEFAULT_SIDEPANEL_ICON sidepanel_title: str = DEFAULT_SIDEPANEL_TITLE + advanced_enabled: bool = DEFAULT_SIDEPANEL_ENABLED + advanced_icon: str = DEFAULT_SIDEPANEL_ICON + advanced_title: str = DEFAULT_SIDEPANEL_TITLE theme_path: str = DEFAULT_THEME_PATH theme: str = DEFAULT_THEME plugin_path: str = "www/community/" diff --git a/custom_components/ui_lovelace_minimalist/config_flow.py b/custom_components/ui_lovelace_minimalist/config_flow.py index 11340f798..c21268a45 100644 --- a/custom_components/ui_lovelace_minimalist/config_flow.py +++ b/custom_components/ui_lovelace_minimalist/config_flow.py @@ -13,6 +13,9 @@ CONF_INCLUDE_OTHER_CARDS, CONF_LANGUAGE, CONF_LANGUAGES, + CONF_SIDEPANEL_ADV_ENABLED, + CONF_SIDEPANEL_ADV_ICON, + CONF_SIDEPANEL_ADV_TITLE, CONF_SIDEPANEL_ENABLED, CONF_SIDEPANEL_ICON, CONF_SIDEPANEL_TITLE, @@ -54,6 +57,18 @@ def ulm_config_option_schema(options: dict = {}) -> dict: CONF_SIDEPANEL_ICON, default=options.get(CONF_SIDEPANEL_ICON, DEFAULT_SIDEPANEL_ICON), ): str, + vol.Optional( + CONF_SIDEPANEL_ADV_ENABLED, + default=options.get(CONF_SIDEPANEL_ADV_ENABLED, DEFAULT_SIDEPANEL_ENABLED), + ): bool, + vol.Optional( + CONF_SIDEPANEL_ADV_TITLE, + default=options.get(CONF_SIDEPANEL_ADV_TITLE, DEFAULT_SIDEPANEL_TITLE), + ): str, + vol.Optional( + CONF_SIDEPANEL_ADV_ICON, + default=options.get(CONF_SIDEPANEL_ADV_ICON, DEFAULT_SIDEPANEL_ICON), + ): str, vol.Optional( CONF_THEME, default=options.get(CONF_THEME, DEFAULT_THEME) ): vol.In(CONF_THEME_OPTIONS), diff --git a/custom_components/ui_lovelace_minimalist/configure.py b/custom_components/ui_lovelace_minimalist/configure.py index 34409a8a8..fca0b4d9c 100644 --- a/custom_components/ui_lovelace_minimalist/configure.py +++ b/custom_components/ui_lovelace_minimalist/configure.py @@ -56,13 +56,27 @@ def configure_cards(hass: HomeAssistant, ulm: UlmBase): language = LANGUAGES[ulm.configuration.language] # Copy example dashboard file over to user config dir if not exists - if not os.path.exists(hass.config.path(f"{DOMAIN}/dashboard/ui-lovelace.yaml")): - shutil.copy2( - hass.config.path( - f"custom_components/{DOMAIN}/lovelace/ui-lovelace.yaml" - ), - hass.config.path(f"{DOMAIN}/dashboard/ui-lovelace.yaml"), - ) + if ulm.configuration.sidepanel_enabled: + if not os.path.exists( + hass.config.path(f"{DOMAIN}/dashboard/ui-lovelace.yaml") + ): + shutil.copy2( + hass.config.path( + f"custom_components/{DOMAIN}/lovelace/ui-lovelace.yaml" + ), + hass.config.path(f"{DOMAIN}/dashboard/ui-lovelace.yaml"), + ) + # Copy advanced dashboard if not exists and is selected as option + if ulm.configuration.advanced_enabled: + if not os.path.exists( + hass.config.path(f"{DOMAIN}/dashboard/advanced-dash") + ): + shutil.copytree( + hass.config.path( + f"custom_components/{DOMAIN}/lovelace/advanced-dash" + ), + hass.config.path(f"{DOMAIN}/dashboard/advanced-dash"), + ) # Copy chosen language file over to config dir shutil.copy2( hass.config.path( diff --git a/custom_components/ui_lovelace_minimalist/const.py b/custom_components/ui_lovelace_minimalist/const.py index 2badd1cad..2cf481c01 100644 --- a/custom_components/ui_lovelace_minimalist/const.py +++ b/custom_components/ui_lovelace_minimalist/const.py @@ -31,6 +31,9 @@ CONF_SIDEPANEL_ENABLED = "sidepanel_enabled" CONF_SIDEPANEL_TITLE = "sidepanel_title" CONF_SIDEPANEL_ICON = "sidepanel_icon" +CONF_SIDEPANEL_ADV_ENABLED = "advanced_enabled" +CONF_SIDEPANEL_ADV_TITLE = "advanced_title" +CONF_SIDEPANEL_ADV_ICON = "advanced_icon" CONF_THEME = "theme" CONF_THEME_PATH = "theme_path" CONF_THEME_OPTIONS = [ diff --git a/custom_components/ui_lovelace_minimalist/load_dashboard.py b/custom_components/ui_lovelace_minimalist/load_dashboard.py index 2e2a5ad43..421fa3f97 100644 --- a/custom_components/ui_lovelace_minimalist/load_dashboard.py +++ b/custom_components/ui_lovelace_minimalist/load_dashboard.py @@ -27,6 +27,15 @@ def load_dashboard(hass: HomeAssistant, ulm: UlmBase): "require_admin": False, } + adv_dashboard_url = "advanced-dash" + adv_dashboard_config = { + "mode": "yaml", + "icon": ulm.configuration.advanced_icon, + "title": ulm.configuration.advanced_title, + "filename": "ui_lovelace_minimalist/dashboard/advanced-dash/test.yaml", + "show_in_sidebar": True, + "require_admin": False, + } # Optoinal override can be done with config_flow? # if not dashboard_url in hass.data["lovelace"]["dashboards"]: if ulm.configuration.sidepanel_enabled: @@ -38,3 +47,13 @@ def load_dashboard(hass: HomeAssistant, ulm: UlmBase): else: if dashboard_url in hass.data["lovelace"]["dashboards"]: async_remove_panel(hass, "ui-lovelace-minimalist") + + if ulm.configuration.advanced_enabled: + hass.data["lovelace"]["dashboards"][adv_dashboard_url] = LovelaceYAML( + hass, adv_dashboard_url, adv_dashboard_config + ) + + _register_panel(hass, adv_dashboard_url, "yaml", adv_dashboard_config, True) + else: + if adv_dashboard_url in hass.data["lovelace"]["dashboards"]: + async_remove_panel(hass, "ui-lovelace-minimalist") diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/test.yaml b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/test.yaml new file mode 100644 index 000000000..011a7df0d --- /dev/null +++ b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/test.yaml @@ -0,0 +1,13 @@ +--- +# this is a test file +button_card_templates: !include_dir_merge_named "../../../custom_components/ui_lovelace_minimalist/__ui_minimalist__/ulm_templates/" + +title: "UI Lovelace Minimalist" +theme: "minimalist-desktop" +background: "var(--background-image)" +# views: !include_dir_merge_list "views/" +views: + - title: "Example View" + path: 0 + icon: "mdi:flower" + cards: diff --git a/custom_components/ui_lovelace_minimalist/translations/en.json b/custom_components/ui_lovelace_minimalist/translations/en.json index 97d0efbf7..e3870fd08 100644 --- a/custom_components/ui_lovelace_minimalist/translations/en.json +++ b/custom_components/ui_lovelace_minimalist/translations/en.json @@ -10,6 +10,9 @@ "sidepanel_enabled": "Enable creation of a Dashboard entry in the Side panel.", "sidepanel_icon": "Side panel icon", "sidepanel_title": "Side panel title", + "advanced_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_title": "Advanced panel title", + "advanced_icon": "Advanced panel icon", "theme": "Theme", "include_other_cards": "Include custom card resources it's depending on." } @@ -30,6 +33,9 @@ "sidepanel_enabled": "Enable creation of a Dashboard entry in the Side panel.", "sidepanel_icon": "Side panel icon", "sidepanel_title": "Side panel title", + "advanced_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_title": "Advanced panel title", + "advanced_icon": "Advanced panel icon", "theme": "Theme", "include_other_cards": "Include custom card resources it's depending on." } From f5ce97b5a9ffdffa7ba35a3b8350fc74fef94dbd Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Mon, 30 May 2022 09:20:52 +0200 Subject: [PATCH 05/13] Backend framework --- .../ui_lovelace_minimalist/base.py | 6 +-- .../ui_lovelace_minimalist/configure.py | 2 +- .../ui_lovelace_minimalist/const.py | 6 +-- .../ui_lovelace_minimalist/load_dashboard.py | 10 ++-- .../{test.yaml => advanced-ui.yaml} | 0 .../lovelace/advanced-dash/popup/popup.yaml | 0 .../lovelace/advanced-dash/views/main.yaml | 0 .../translations/cs.json | 6 +++ .../translations/de.json | 6 +++ .../translations/en.json | 12 ++--- .../translations/it.json | 6 +++ .../translations/nl.json | 49 +++++++++++++++++++ .../translations/pl.json | 6 +++ .../translations/ru.json | 6 +++ .../translations/sk.json | 6 +++ 15 files changed, 103 insertions(+), 18 deletions(-) rename custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/{test.yaml => advanced-ui.yaml} (100%) create mode 100644 custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/popup/popup.yaml create mode 100644 custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/main.yaml create mode 100644 custom_components/ui_lovelace_minimalist/translations/nl.json diff --git a/custom_components/ui_lovelace_minimalist/base.py b/custom_components/ui_lovelace_minimalist/base.py index 72d53ad2e..a58f2ed15 100644 --- a/custom_components/ui_lovelace_minimalist/base.py +++ b/custom_components/ui_lovelace_minimalist/base.py @@ -26,9 +26,9 @@ class UlmConfiguration: sidepanel_enabled: bool = DEFAULT_SIDEPANEL_ENABLED sidepanel_icon: str = DEFAULT_SIDEPANEL_ICON sidepanel_title: str = DEFAULT_SIDEPANEL_TITLE - advanced_enabled: bool = DEFAULT_SIDEPANEL_ENABLED - advanced_icon: str = DEFAULT_SIDEPANEL_ICON - advanced_title: str = DEFAULT_SIDEPANEL_TITLE + advanced_ui_enabled: bool = DEFAULT_SIDEPANEL_ENABLED + advanced_ui_icon: str = DEFAULT_SIDEPANEL_ICON + advanced_ui_title: str = DEFAULT_SIDEPANEL_TITLE theme_path: str = DEFAULT_THEME_PATH theme: str = DEFAULT_THEME plugin_path: str = "www/community/" diff --git a/custom_components/ui_lovelace_minimalist/configure.py b/custom_components/ui_lovelace_minimalist/configure.py index fca0b4d9c..e7f83ccaa 100644 --- a/custom_components/ui_lovelace_minimalist/configure.py +++ b/custom_components/ui_lovelace_minimalist/configure.py @@ -67,7 +67,7 @@ def configure_cards(hass: HomeAssistant, ulm: UlmBase): hass.config.path(f"{DOMAIN}/dashboard/ui-lovelace.yaml"), ) # Copy advanced dashboard if not exists and is selected as option - if ulm.configuration.advanced_enabled: + if ulm.configuration.advanced_ui_enabled: if not os.path.exists( hass.config.path(f"{DOMAIN}/dashboard/advanced-dash") ): diff --git a/custom_components/ui_lovelace_minimalist/const.py b/custom_components/ui_lovelace_minimalist/const.py index 2cf481c01..b08414763 100644 --- a/custom_components/ui_lovelace_minimalist/const.py +++ b/custom_components/ui_lovelace_minimalist/const.py @@ -31,9 +31,9 @@ CONF_SIDEPANEL_ENABLED = "sidepanel_enabled" CONF_SIDEPANEL_TITLE = "sidepanel_title" CONF_SIDEPANEL_ICON = "sidepanel_icon" -CONF_SIDEPANEL_ADV_ENABLED = "advanced_enabled" -CONF_SIDEPANEL_ADV_TITLE = "advanced_title" -CONF_SIDEPANEL_ADV_ICON = "advanced_icon" +CONF_SIDEPANEL_ADV_ENABLED = "advanced_ui_enabled" +CONF_SIDEPANEL_ADV_TITLE = "advanced_ui_title" +CONF_SIDEPANEL_ADV_ICON = "advanced_ui_icon" CONF_THEME = "theme" CONF_THEME_PATH = "theme_path" CONF_THEME_OPTIONS = [ diff --git a/custom_components/ui_lovelace_minimalist/load_dashboard.py b/custom_components/ui_lovelace_minimalist/load_dashboard.py index 421fa3f97..860bf60b1 100644 --- a/custom_components/ui_lovelace_minimalist/load_dashboard.py +++ b/custom_components/ui_lovelace_minimalist/load_dashboard.py @@ -30,9 +30,9 @@ def load_dashboard(hass: HomeAssistant, ulm: UlmBase): adv_dashboard_url = "advanced-dash" adv_dashboard_config = { "mode": "yaml", - "icon": ulm.configuration.advanced_icon, - "title": ulm.configuration.advanced_title, - "filename": "ui_lovelace_minimalist/dashboard/advanced-dash/test.yaml", + "icon": ulm.configuration.advanced_ui_icon, + "title": ulm.configuration.advanced_ui_title, + "filename": "ui_lovelace_minimalist/dashboard/advanced-dash/advanced-ui.yaml", "show_in_sidebar": True, "require_admin": False, } @@ -48,7 +48,7 @@ def load_dashboard(hass: HomeAssistant, ulm: UlmBase): if dashboard_url in hass.data["lovelace"]["dashboards"]: async_remove_panel(hass, "ui-lovelace-minimalist") - if ulm.configuration.advanced_enabled: + if ulm.configuration.advanced_ui_enabled: hass.data["lovelace"]["dashboards"][adv_dashboard_url] = LovelaceYAML( hass, adv_dashboard_url, adv_dashboard_config ) @@ -56,4 +56,4 @@ def load_dashboard(hass: HomeAssistant, ulm: UlmBase): _register_panel(hass, adv_dashboard_url, "yaml", adv_dashboard_config, True) else: if adv_dashboard_url in hass.data["lovelace"]["dashboards"]: - async_remove_panel(hass, "ui-lovelace-minimalist") + async_remove_panel(hass, "advanced-dash") diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/test.yaml b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/advanced-ui.yaml similarity index 100% rename from custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/test.yaml rename to custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/advanced-ui.yaml diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/popup/popup.yaml b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/popup/popup.yaml new file mode 100644 index 000000000..e69de29bb diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/main.yaml b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/main.yaml new file mode 100644 index 000000000..e69de29bb diff --git a/custom_components/ui_lovelace_minimalist/translations/cs.json b/custom_components/ui_lovelace_minimalist/translations/cs.json index a6a8b10fe..136ec8c1a 100644 --- a/custom_components/ui_lovelace_minimalist/translations/cs.json +++ b/custom_components/ui_lovelace_minimalist/translations/cs.json @@ -10,6 +10,9 @@ "sidepanel_enabled": "Zobrazit v postranním panelu", "sidepanel_icon": "Ikona v postranním panel", "sidepanel_title": "Název v postranním panelu", + "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_ui_title": "Advanced panel title", + "advanced_ui_icon": "Advanced panel icon", "theme": "Motiv", "include_other_cards": "Do zdrojů zahrnout vlastní karty, na kterých závisí tato integrace." } @@ -30,6 +33,9 @@ "sidepanel_enabled": "Zobrazit v postranním panelu", "sidepanel_icon": "Ikona v postranním panel", "sidepanel_title": "Název v postranním panelu", + "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_ui_title": "Advanced panel title", + "advanced_ui_icon": "Advanced panel icon", "theme": "Motiv", "include_other_cards": "Do zdrojů zahrnout vlastní karty, na kterých závisí tato integrace." } diff --git a/custom_components/ui_lovelace_minimalist/translations/de.json b/custom_components/ui_lovelace_minimalist/translations/de.json index 84bc3abfb..55c759f86 100644 --- a/custom_components/ui_lovelace_minimalist/translations/de.json +++ b/custom_components/ui_lovelace_minimalist/translations/de.json @@ -10,6 +10,9 @@ "sidepanel_enabled": "Erstellung eines Eintrages in der Seitenleiste aktivieren.", "sidepanel_icon": "Icon Seitenleiste", "sidepanel_title": "Titel Seitenleiste", + "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_ui_title": "Advanced panel title", + "advanced_ui_icon": "Advanced panel icon", "theme": "Thema", "include_other_cards": "Individuelle Karten, die für die Nutzung benötigt werden, ebenfalls laden." } @@ -30,6 +33,9 @@ "sidepanel_enabled": "Erstellung eines Eintrages in der Seitenleiste aktivieren.", "sidepanel_icon": "Icon Seitenleiste", "sidepanel_title": "Titel Seitenleiste", + "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_ui_title": "Advanced panel title", + "advanced_ui_icon": "Advanced panel icon", "theme": "Thema", "include_other_cards": "Individuelle Karten, die für die Nutzung benötigt werden, ebenfalls laden." } diff --git a/custom_components/ui_lovelace_minimalist/translations/en.json b/custom_components/ui_lovelace_minimalist/translations/en.json index e3870fd08..a9b22cee7 100644 --- a/custom_components/ui_lovelace_minimalist/translations/en.json +++ b/custom_components/ui_lovelace_minimalist/translations/en.json @@ -10,9 +10,9 @@ "sidepanel_enabled": "Enable creation of a Dashboard entry in the Side panel.", "sidepanel_icon": "Side panel icon", "sidepanel_title": "Side panel title", - "advanced_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_title": "Advanced panel title", - "advanced_icon": "Advanced panel icon", + "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_ui_title": "Advanced panel title", + "advanced_ui_icon": "Advanced panel icon", "theme": "Theme", "include_other_cards": "Include custom card resources it's depending on." } @@ -33,9 +33,9 @@ "sidepanel_enabled": "Enable creation of a Dashboard entry in the Side panel.", "sidepanel_icon": "Side panel icon", "sidepanel_title": "Side panel title", - "advanced_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_title": "Advanced panel title", - "advanced_icon": "Advanced panel icon", + "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_ui_title": "Advanced panel title", + "advanced_ui_icon": "Advanced panel icon", "theme": "Theme", "include_other_cards": "Include custom card resources it's depending on." } diff --git a/custom_components/ui_lovelace_minimalist/translations/it.json b/custom_components/ui_lovelace_minimalist/translations/it.json index 5b65f14b0..f90b2ab7c 100644 --- a/custom_components/ui_lovelace_minimalist/translations/it.json +++ b/custom_components/ui_lovelace_minimalist/translations/it.json @@ -10,6 +10,9 @@ "sidepanel_enabled": "Abilita la creazione di una nuova Dashboard nel Pannello Laterale.", "sidepanel_icon": "Icona Pannello Laterale", "sidepanel_title": "Titolo Pannello Laterale", + "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_ui_title": "Advanced panel title", + "advanced_ui_icon": "Advanced panel icon", "theme": "Tema", "include_other_cards": "Inlcudere le risorse da cui dipendono le card personalizzate." } @@ -30,6 +33,9 @@ "sidepanel_enabled": "Abilita la creazione di una nuova Dashboard nel Pannello Laterale.", "sidepanel_icon": "Icona Pannello Laterale", "sidepanel_title": "Titolo Pannello Laterale", + "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_ui_title": "Advanced panel title", + "advanced_ui_icon": "Advanced panel icon", "theme": "Tema", "include_other_cards": "Inlcudere le risorse da cui dipendono le card personalizzate." } diff --git a/custom_components/ui_lovelace_minimalist/translations/nl.json b/custom_components/ui_lovelace_minimalist/translations/nl.json new file mode 100644 index 000000000..ce9f852ea --- /dev/null +++ b/custom_components/ui_lovelace_minimalist/translations/nl.json @@ -0,0 +1,49 @@ +{ + "title": "UI Lovelace Minimalist", + "config": { + "step": { + "user": { + "title": "UI Lovelace Minimalist Instellingen", + "description": "", + "data": { + "language": "Taal", + "sidepanel_enabled": "Een Dashboard aan de zijbalk toevoegen", + "sidepanel_icon": "Dashboard icon", + "sidepanel_title": "Dashboard titel", + "advanced_ui_enabled": "Een advanced Dashboard aan de zijbalk toevoegen", + "advanced_ui_title": "Advanced dashboard titel", + "advanced_ui_icon": "Advanced dashboard icon", + "theme": "Thema", + "include_other_cards": "'Frontend' repositories toevoegen die nodig zijn" + } + } + }, + "abort": { + "single_instance_allowed": "Enkel een installatie van UI Lovelace Minimalist is toegestaan.", + "not_setup": "UI Lovelace Minimalist is niet juist ingesteld." + } + }, + "options": { + "step": { + "user": { + "title": "UI Lovelace Minimalist Instellingen", + "description": "", + "data": { + "language": "Taal", + "sidepanel_enabled": "Een Dashboard aan de zijbalk toevoegen", + "sidepanel_icon": "Dashboard icon", + "sidepanel_title": "Dashboard titel", + "advanced_ui_enabled": "Een advanced Dashboard aan de zijbalk toevoegen", + "advanced_ui_title": "Advanced dashboard titel", + "advanced_ui_icon": "Advanced dashboard icon", + "theme": "Thema", + "include_other_cards": "'Frontend' repositories toevoegen die nodig zijn" + } + } + }, + "abort": { + "single_instance_allowed": "Enkel een installatie van UI Lovelace Minimalist is toegestaan.", + "not_setup": "UI Lovelace Minimalist is niet juist ingesteld." + } + } +} diff --git a/custom_components/ui_lovelace_minimalist/translations/pl.json b/custom_components/ui_lovelace_minimalist/translations/pl.json index 90a85dab8..ce872c8b5 100644 --- a/custom_components/ui_lovelace_minimalist/translations/pl.json +++ b/custom_components/ui_lovelace_minimalist/translations/pl.json @@ -10,6 +10,9 @@ "sidepanel_enabled": "Utwórz nowy Dashboard w panelu bocznym.", "sidepanel_icon": "Ikona w panelu bocznym", "sidepanel_title": "Tytuł w panelu bocznym", + "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_ui_title": "Advanced panel title", + "advanced_ui_icon": "Advanced panel icon", "theme": "Motyw", "include_other_cards": "Dołącz zasoby wymagane przez niestandardowe karty." } @@ -30,6 +33,9 @@ "sidepanel_enabled": "Utwórz nowy Dashboard w panelu bocznym.", "sidepanel_icon": "Ikona w panelu bocznym", "sidepanel_title": "Tytuł w panelu bocznym", + "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_ui_title": "Advanced panel title", + "advanced_ui_icon": "Advanced panel icon", "theme": "Motyw", "include_other_cards": "Dołącz zasoby wymagane przez niestandardowe karty." } diff --git a/custom_components/ui_lovelace_minimalist/translations/ru.json b/custom_components/ui_lovelace_minimalist/translations/ru.json index c42f9999f..a3fd04042 100644 --- a/custom_components/ui_lovelace_minimalist/translations/ru.json +++ b/custom_components/ui_lovelace_minimalist/translations/ru.json @@ -10,6 +10,9 @@ "sidepanel_enabled": "Создайте новую Панель инструментов на боковой панели.", "sidepanel_icon": "Значок боковой панели", "sidepanel_title": "Название боковой панели", + "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_ui_title": "Advanced panel title", + "advanced_ui_icon": "Advanced panel icon", "theme": "Тема", "include_other_cards": "Включите ресурсы, необходимые для пользовательских карт." } @@ -30,6 +33,9 @@ "sidepanel_enabled": "Создайте новую Панель инструментов на боковой панели.", "sidepanel_icon": "Значок боковой панели", "sidepanel_title": "Название боковой панели", + "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_ui_title": "Advanced panel title", + "advanced_ui_icon": "Advanced panel icon", "theme": "Тема", "include_other_cards": "Включите ресурсы, необходимые для пользовательских карт." } diff --git a/custom_components/ui_lovelace_minimalist/translations/sk.json b/custom_components/ui_lovelace_minimalist/translations/sk.json index 95308e05d..77a9c9d48 100644 --- a/custom_components/ui_lovelace_minimalist/translations/sk.json +++ b/custom_components/ui_lovelace_minimalist/translations/sk.json @@ -10,6 +10,9 @@ "sidepanel_enabled": "Zobraziť v postrannom paneli", "sidepanel_icon": "Ikona v postrannom paneli", "sidepanel_title": "Názov v postrannom paneli", + "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_ui_title": "Advanced panel title", + "advanced_ui_icon": "Advanced panel icon", "theme": "Téma", "include_other_cards": "Do zdrojov zahrnúť vlastné karty potrebné pre túto integráciu." } @@ -30,6 +33,9 @@ "sidepanel_enabled": "Zobraziť v postrannom paneli", "sidepanel_icon": "Ikona v postrannom paneli", "sidepanel_title": "Názov v postrannom paneli", + "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", + "advanced_ui_title": "Advanced panel title", + "advanced_ui_icon": "Advanced panel icon", "theme": "Téma", "include_other_cards": "Do zdrojov zahrnúť vlastné karty potrebné pre túto integráciu." } From 081c2994865c610cd5ff19c8baf571c64271a0a9 Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Mon, 30 May 2022 13:53:45 +0200 Subject: [PATCH 06/13] Build files for dashboard --- .../lovelace/advanced-dash/advanced-ui.yaml | 37 +++- .../lovelace/advanced-dash/popup/popup.yaml | 159 ++++++++++++++++++ .../advanced-dash/views/living_room.yaml | 34 ++++ .../lovelace/advanced-dash/views/main.yaml | 30 ++++ 4 files changed, 255 insertions(+), 5 deletions(-) create mode 100644 custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/living_room.yaml diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/advanced-ui.yaml b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/advanced-ui.yaml index 011a7df0d..dac3c0a9a 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/advanced-ui.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/advanced-ui.yaml @@ -1,13 +1,40 @@ --- -# this is a test file button_card_templates: !include_dir_merge_named "../../../custom_components/ui_lovelace_minimalist/__ui_minimalist__/ulm_templates/" title: "UI Lovelace Minimalist" theme: "minimalist-desktop" background: "var(--background-image)" -# views: !include_dir_merge_list "views/" views: - - title: "Example View" - path: 0 - icon: "mdi:flower" + - type: "custom:grid-layout" + title: "home" + icon: "mdi:home" + path: "0" + layout: + grid-template-columns: "1fr 1fr" + grid-template-rows: "min-content" + grid-template-areas: | + "main popup" + mediaquery: + "(max-width: 1100px), (orientation: portrait)": + grid-template-columns: "100%" + grid-template-areas: "main" cards: + - !include "views/main.yaml" + - !include "popup/popup-view.yaml" + + - type: "custom:grid-layout" + title: "Livingroom" + icon: "mdi:sofa" + path: "Livingroom" + layout: + grid-template-columns: "1fr 1fr" + grid-template-rows: "min-content" + grid-template-areas: | + "livingroom popup" + mediaquery: + "(max-width: 1100px), (orientation: portrait)": + grid-template-columns: "100%" + grid-template-areas: "livingroom" + cards: + - !include "views/livingroom.yaml" + - !include "popup/popup-view.yaml" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/popup/popup.yaml b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/popup/popup.yaml index e69de29bb..69615d0f4 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/popup/popup.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/popup/popup.yaml @@ -0,0 +1,159 @@ +--- +type: "custom:state-switch" +view_layout: + grid-area: "popup" + show: + mediaquery: "(min-width: 1100px)" +entity: +default: "default" +transition: "slide-down" +transition_time: 500 +states: + # Devices + ## Lights + light 1: + type: "custom:button-card" + template: "popup_light_brightness" + variables: + ulm_popup_light_entity: + light 2: + type: "custom:button-card" + template: "popup_light_brightness" + variables: + ulm_popup_light_entity: + light 3: + type: "custom:button-card" + template: "popup_light_brightness" + variables: + ulm_popup_light_entity: + light 4: + type: "custom:button-card" + template: "popup_light_brightness" + variables: + ulm_popup_light_entity: + light 5: + type: "custom:button-card" + template: "popup_light_brightness" + variables: + ulm_popup_light_entity: + light 6: + type: "custom:button-card" + template: "popup_light_brightness" + variables: + ulm_popup_light_entity: + light 7: + type: "custom:button-card" + template: "popup_light_brightness" + variables: + ulm_popup_light_entity: + light 8: + type: "custom:button-card" + template: "popup_light_brightness" + variables: + ulm_popup_light_entity: + light 9: + type: "custom:button-card" + template: "popup_light_brightness" + variables: + ulm_popup_light_entity: + light 10: + type: "custom:button-card" + template: "popup_light_brightness" + variables: + ulm_popup_light_entity: + + ## Mediaplayers + mediaplayer 1: + type: "custom:button-card" + template: "popup_media_player_infos" + variables: + ulm_popup_media_player_entity: + mediaplayer 2: + type: "custom:button-card" + template: "popup_media_player_infos" + variables: + ulm_popup_media_player_entity: + mediaplayer 3: + type: "custom:button-card" + template: "popup_media_player_infos" + variables: + ulm_popup_media_player_entity: + mediaplayer 4: + type: "custom:button-card" + template: "popup_media_player_infos" + variables: + ulm_popup_media_player_entity: + mediaplayer 5: + type: "custom:button-card" + template: "popup_media_player_infos" + variables: + ulm_popup_media_player_entity: + + ## Thermostats + climate 1: + type: "custom:button-card" + template: "popup_thermostat_temperature" + variables: + ulm_popup_thermostat_entity: + climate 2: + type: "custom:button-card" + template: "popup_thermostat_temperature" + variables: + ulm_popup_thermostat_entity: + climate 3: + type: "custom:button-card" + template: "popup_thermostat_temperature" + variables: + ulm_popup_thermostat_entity: + climate 4: + type: "custom:button-card" + template: "popup_thermostat_temperature" + variables: + ulm_popup_thermostat_entity: + climate 5: + type: "custom:button-card" + template: "popup_thermostat_temperature" + variables: + ulm_popup_thermostat_entity: + + ## Power + power 1: + type: "custom:button-card" + template: "popup_power_outlet_stats" + variables: + ulm_popup_power_outlet_entity: + ulm_popup_power_outlet_sensor1: + ulm_popup_power_outlet_sensor2: + ulm_popup_power_outlet_graph_sensor: + power 2: + type: "custom:button-card" + template: "popup_power_outlet_stats" + variables: + ulm_popup_power_outlet_entity: + ulm_popup_power_outlet_sensor1: + ulm_popup_power_outlet_sensor2: + ulm_popup_power_outlet_graph_sensor: + power 3: + type: "custom:button-card" + template: "popup_power_outlet_stats" + variables: + ulm_popup_power_outlet_entity: + ulm_popup_power_outlet_sensor1: + ulm_popup_power_outlet_sensor2: + ulm_popup_power_outlet_graph_sensor: + power 4: + type: "custom:button-card" + template: "popup_power_outlet_stats" + variables: + ulm_popup_power_outlet_entity: + ulm_popup_power_outlet_sensor1: + ulm_popup_power_outlet_sensor2: + ulm_popup_power_outlet_graph_sensor: + power 5: + type: "custom:button-card" + template: "popup_power_outlet_stats" + variables: + ulm_popup_power_outlet_entity: + ulm_popup_power_outlet_sensor1: + ulm_popup_power_outlet_sensor2: + ulm_popup_power_outlet_graph_sensor: diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/living_room.yaml b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/living_room.yaml new file mode 100644 index 000000000..b3ea58cc7 --- /dev/null +++ b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/living_room.yaml @@ -0,0 +1,34 @@ +--- +type: "custom:layout-card" +layout_type: "custom:grid-layout" +layout: + grid-template-rows: "min-content" + grid-template-columns: "1fr 1fr 1fr" + grid-template-areas: > + "title title title" + "card1 card1 card1" + "card2 card3 card4" + "card5 card6 ." + "card7 card8 card9" + "card10 card11 card12" + "card13 card14 card15" + "card16 card17 card18" + mediaquery: + # Mobile + "(max-width: 800px)": + grid-template-columns: "1fr 1fr" + grid-template-areas: | + "title title" + "card1 card1" + "card2 card3" + "card4 card5" + "card6 card7" + "card8 card9" + "card10 card11" + "card12 card13" + "card14 card15" + "card16 card17" + "card18 card19" +view_layout: + grid-area: "livingroom" +cards: diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/main.yaml b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/main.yaml index e69de29bb..869839190 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/main.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/main.yaml @@ -0,0 +1,30 @@ +--- +type: "custom:layout-card" +layout_type: "custom:grid-layout" +layout: + # Tablet portrait + grid-template-columns: "1fr 1fr 1fr 1fr 1fr 1fr" + grid-template-areas: | + "text text text weather weather weather" + "person person person weather weather weather" + "welcome welcome welcome welcome welcome welcome" + "title1 title1 title1 title1 title1 title1" + "card1 card1 card2 card2 card3 card3" + "title2 title2 title2 title2 title2 title2" + "card4 card4 card5 card5 card6 card6" + mediaquery: + # Mobile + "(max-width: 800px)": + grid-template-columns: "1fr 1fr" + grid-template-areas: | + "welcome welcome" + "person person" + "title1 title1" + "card1 card2" + "card3 card4" + "title2 title2" + "card5 card6" + "card7 card8" +view_layout: + grid-area: "main" +cards: From 34705e8dd23719400e2e0c3f4ef4fd9d2d198e41 Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Mon, 30 May 2022 14:07:30 +0200 Subject: [PATCH 07/13] Fix internal linking --- .../lovelace/advanced-dash/advanced-ui.yaml | 4 ++-- .../advanced-dash/views/{living_room.yaml => livingroom.yaml} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/{living_room.yaml => livingroom.yaml} (100%) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/advanced-ui.yaml b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/advanced-ui.yaml index dac3c0a9a..2fd0decad 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/advanced-ui.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/advanced-ui.yaml @@ -20,7 +20,7 @@ views: grid-template-areas: "main" cards: - !include "views/main.yaml" - - !include "popup/popup-view.yaml" + - !include "popup/popup.yaml" - type: "custom:grid-layout" title: "Livingroom" @@ -37,4 +37,4 @@ views: grid-template-areas: "livingroom" cards: - !include "views/livingroom.yaml" - - !include "popup/popup-view.yaml" + - !include "popup/popup.yaml" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/living_room.yaml b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/livingroom.yaml similarity index 100% rename from custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/living_room.yaml rename to custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/livingroom.yaml From 00819ed339c1cc41f5ffa1c28fd82c8a05d5d31b Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Mon, 30 May 2022 16:51:07 +0200 Subject: [PATCH 08/13] Add grid-layout examples --- .../lovelace/advanced-dash/popup/popup.yaml | 3 + .../advanced-dash/views/livingroom.yaml | 59 +++++++++++++- .../lovelace/advanced-dash/views/main.yaml | 77 ++++++++++++++++++- 3 files changed, 136 insertions(+), 3 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/popup/popup.yaml b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/popup/popup.yaml index 69615d0f4..d14d3b36a 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/popup/popup.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/popup/popup.yaml @@ -157,3 +157,6 @@ states: ulm_popup_power_outlet_sensor1: ulm_popup_power_outlet_sensor2: ulm_popup_power_outlet_graph_sensor: + + ## Rooms + livingroom: !include "../views/livingroom.yaml" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/livingroom.yaml b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/livingroom.yaml index b3ea58cc7..2f2509629 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/livingroom.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/livingroom.yaml @@ -5,7 +5,7 @@ layout: grid-template-rows: "min-content" grid-template-columns: "1fr 1fr 1fr" grid-template-areas: > - "title title title" + "title1 title1 title1" "card1 card1 card1" "card2 card3 card4" "card5 card6 ." @@ -18,7 +18,7 @@ layout: "(max-width: 800px)": grid-template-columns: "1fr 1fr" grid-template-areas: | - "title title" + "title1 title1" "card1 card1" "card2 card3" "card4 card5" @@ -32,3 +32,58 @@ layout: view_layout: grid-area: "livingroom" cards: + - view_layout: + grid-area: "title1" + type: "custom:button-card" + template: "card_title" + name: "Some title" + label: "grid-area: title1" + + - view_layout: + grid-area: "title2" + type: "custom:button-card" + template: "card_title" + name: "Some title" + label: "grid-area: title2" + + - view_layout: + grid-area: "card1" + type: "custom:button-card" + template: "card_title" + name: "Put here your
first card" + label: "grid-area: card1" + + - view_layout: + grid-area: "card2" + type: "custom:button-card" + template: "card_title" + name: "Put here your
second card" + label: "grid-area: card2" + + - view_layout: + grid-area: "card3" + type: "custom:button-card" + template: "card_title" + name: "Put here your
third card" + label: "grid-area: card3" + + - view_layout: + grid-area: "card4" + type: "custom:button-card" + template: "card_title" + name: "Put here your
fourth card" + label: "grid-area: card4" + + - view_layout: + grid-area: "card5" + type: "custom:button-card" + template: "card_title" + name: "Put here your
fifth card" + label: "grid-area: card5" + + - view_layout: + grid-area: "card6" + type: "custom:button-card" + template: "card_title" + name: "Put here your
sixth card" + label: "grid-area: card6" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/main.yaml b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/main.yaml index 869839190..90c789b47 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/main.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/main.yaml @@ -6,7 +6,6 @@ layout: grid-template-columns: "1fr 1fr 1fr 1fr 1fr 1fr" grid-template-areas: | "text text text weather weather weather" - "person person person weather weather weather" "welcome welcome welcome welcome welcome welcome" "title1 title1 title1 title1 title1 title1" "card1 card1 card2 card2 card3 card3" @@ -28,3 +27,79 @@ layout: view_layout: grid-area: "main" cards: + - view_layout: + grid-area: "text" + type: "custom:button-card" + template: "card_title" + name: "This is the advanced
dashboard provided by
UI Minimalist" + label: "Find instructions to add
cards on the wiki" + + - view_layout: + grid-area: "weather" + type: "custom:button-card" + template: "card_title" + name: "This could be your
weather card" + label: "grid-area: weather" + + - view_layout: + grid-area: "welcome" + type: "custom:button-card" + template: "card_title" + name: "This could be your
welcome/scenes card" + label: "grid-area: welcome" + + - view_layout: + grid-area: "title1" + type: "custom:button-card" + template: "card_title" + name: "Some title" + label: "grid-area: title1" + + - view_layout: + grid-area: "title2" + type: "custom:button-card" + template: "card_title" + name: "Some title" + label: "grid-area: title2" + + - view_layout: + grid-area: "card1" + type: "custom:button-card" + template: "card_title" + name: "Put here your
first card" + label: "grid-area: card1" + + - view_layout: + grid-area: "card2" + type: "custom:button-card" + template: "card_title" + name: "Put here your
second card" + label: "grid-area: card2" + + - view_layout: + grid-area: "card3" + type: "custom:button-card" + template: "card_title" + name: "Put here your
third card" + label: "grid-area: card3" + + - view_layout: + grid-area: "card4" + type: "custom:button-card" + template: "card_title" + name: "Put here your
fourth card" + label: "grid-area: card4" + + - view_layout: + grid-area: "card5" + type: "custom:button-card" + template: "card_title" + name: "Put here your
fifth card" + label: "grid-area: card5" + + - view_layout: + grid-area: "card6" + type: "custom:button-card" + template: "card_title" + name: "Put here your
sixth card" + label: "grid-area: card6" From 9a9ff6d060b6671a3d5260f277964ad897c95629 Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Thu, 2 Jun 2022 11:26:25 +0200 Subject: [PATCH 09/13] Add documentation --- .../img/setup/hacs_advanced_dashboard.png | Bin 0 -> 93704 bytes docs/setup/advanced_dash.md | 241 ++++++++++++++++++ mkdocs.yml | 1 + 3 files changed, 242 insertions(+) create mode 100644 docs/assets/img/setup/hacs_advanced_dashboard.png create mode 100644 docs/setup/advanced_dash.md diff --git a/docs/assets/img/setup/hacs_advanced_dashboard.png b/docs/assets/img/setup/hacs_advanced_dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..5958d977b0f15a71ce8fd9d7783d9df24c968333 GIT binary patch literal 93704 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 +###### insert image/gif here + +## Add advanced Dashboard + +To get full use of your Minimalist themed HA you need to setup some more custom_components (see requirements below).
+This dashboard automatically changes based on the device/screen size your are using. You can also alter the cards showing on the right-side by double-tapping a card. (Steps to configure this are described below) + +### Additional Requirements + +This dashboard make extensive use of `state-switch` and `layout-card`. These are available through HACS or as manual install from Github. + +| Additional lovelace resources | +| ----------------------------------------------------------------------- | +| [`layout-card`](https://github.com/thomasloven/lovelace-layout-card) | +| [`state-switch`](https://github.com/thomasloven/lovelace-state-switch) | + +You need also configure an `input_select` with options for each popup_card and view you have configured. This `input_select` controls the cards showing on the right-side of the screen when in fullscreen mode. + +!!! note "Popups" + + Not all device types do have Minimalist UI themed popups. + Currently supported devices are: `lights`, `mediaplayers`, `thermostats`, `sensors`. + +You can setup an `input_select` either via the GUI or in YAML. + +```yaml +# Example configuration.yaml entry +input_select: + minimalist_ui_switch: + name: Select popup/view + options: + - light 1 + - light 2 + - mediaplayer 1 + - mediaplayer 2 + - climate 1 + - climate 2 + - power 1 + - power 2 + - livingroom +``` + +## Setup + +To enable the advanced dashboard you need to select the right option in the integration configuration menu. + +![hacs_advanced_dashboard](../assets/img/setup/hacs_advanced_dashboard.png){ width="300" } + +Once setup you should see another dashboard in your sidebar. This dashboard is filled with `card_title` template cards as placeholders. + +We have also added a folder with all needed files to customizing your new dashboard: + +```yaml +config +└── ui_lovelace_minimalist + ├── custom_cards + └── dashboard + └── ui-lovelace.yaml + └── advanced-dash + └── advanced-ui.yaml + └── popup + └── popup.yaml + └── views + └── livingroom.yaml + └── main.yaml +``` + +## Customizing + +The best place to start adding your personal cards is in `advanced-dash/views/main.yaml`. + +!!! tip "Grid-Layout" + + All files use CSS grids. By giving each card an own grid-area we can control there place in the dashboard. For more information on how `grid-areas` do work check this [amazing guide](https://css-tricks.com/snippets/css/complete-guide-grid/). + +When you are familiar with CSS grids you can start to alter the `grid-template-areas` to your personal perference. + +### Adding Cards + +You can assign cards to a certain `grid-area` by adding this to your card configuration. We already have put in this config for some cards and titles. + +```yaml +view_layout: + grid-area: "card1" +``` + +To put card_light to the area: `card1`; you have to paste in the code as in your normal Minimalist UI dashboard on the place of the placeholder. + +```yaml +# Placeholder for card1 in main.yaml +- view_layout: + grid-area: "card1" + type: "custom:button-card" + template: "card_title" + name: "Put here your
first card" + label: "grid-area: card1" +``` + +```yaml +# Example of a card_light assiged to area card1 +- view_layout: + grid-area: "card1" + type: "custom:button-card" + template: "card_light" + entity: "light.your_light" + variables: + ulm_card_light_enable_color: true + ulm_card_light_enable_slider: true + ulm_card_light_enable_popup: true +``` + +Do this for all placeholders. You can always use less cards by deleting placeholders or add more cards by adding new areas under the `grid-template-areas`. + +### Adding popups on the right-side + +All cards on the right-side are configured in `advanced-dash/popup/popup.yaml`. + +We preconfigured multiple popups for different types of devices. In `popup.yaml` you only have to complete the information in the variables part. The `light 1`, `mediaplayer 1`, `livingroom` parts in the code refer to the options you have configuered in your `input_select`. Make sure they are spelled the same. ([see documentation on `state-switch`](https://github.com/thomasloven/lovelace-state-switch)) + +!!! note "Important!" + + All device entities need its own popup config! + +!!! warning "Warning" + + Delete all entries you don't use in `popup.yaml`. If not this can fill your dev-console with unwanted errors. + +To switch between popups we need to go back to `advanced-dash/views/main.yaml`. Here we have to add two variables to the cards we want to show a popup off. After adding these variables the cards need to be double_tapped to change popups. + +```yaml +variables: + ulm_input_select_option: light 1 + ulm_input_select: input_select.minimalist_ui_switch +``` + +Eventually the card_light we did configure should be like this: + +```yaml + - view_layout: + grid-area: "card1" + type: "custom:button-card" + template: "card_light" + entity: "light.your_light" + variables: + ulm_card_light_enable_color: true + ulm_card_light_enable_slider: true + ulm_card_light_enable_popup: true + ulm_input_select_option: light 1 + ulm_input_select: input_select.minimalist_ui_switch +``` + +From here you can duplicate the steps for each card. +!!! note "Supported" + + All cards working with official popups and the card_room support these variables. The name is uniform between all supported cards. + +### Setup more views + +We already made a file for a second view: `advanced-dash/views/livingroom.yaml`. You can make as many views as you want by duplicating and alter the views files. + +To make the new view visible you have to add some entry to `advanced-dash/advanced-ui.yaml`. You only have to change the name of the room/view to the new entry. + +??? note "Add view example (click to open)" + + ```yaml + title: "UI Lovelace Minimalist" + theme: "minimalist-desktop" + background: "var(--background-image)" + views: + - type: "custom:grid-layout" + title: "home" + icon: "mdi:home" + path: "0" + layout: + grid-template-columns: "1fr 1fr" + grid-template-rows: "min-content" + grid-template-areas: | + "main popup" + mediaquery: + "(max-width: 1100px), (orientation: portrait)": + grid-template-columns: "100%" + grid-template-areas: "main" + cards: + - !include "views/main.yaml" + - !include "popup/popup.yaml" + + - type: "custom:grid-layout" + title: "Livingroom" + icon: "mdi:sofa" + path: "Livingroom" + layout: + grid-template-columns: "1fr 1fr" + grid-template-rows: "min-content" + grid-template-areas: | + "livingroom popup" + mediaquery: + "(max-width: 1100px), (orientation: portrait)": + grid-template-columns: "100%" + grid-template-areas: "livingroom" + cards: + - !include "views/livingroom.yaml" + - !include "popup/popup.yaml" + + - type: "custom:grid-layout" + title: "New View" + icon: "mdi:flower" + path: "New View" + layout: + grid-template-columns: "1fr 1fr" + grid-template-rows: "min-content" + grid-template-areas: | + "new_view popup" + mediaquery: + "(max-width: 1100px), (orientation: portrait)": + grid-template-columns: "100%" + grid-template-areas: "newview" + cards: + - !include "views/newview.yaml" + - !include "popup/popup.yaml" + ``` + +You can also show room views as a popup. To configure this add a `!include` entry in the popup.yaml file. As example we configured `livingroom` already. Make sure this is also an option in your `input_select`. + +```yaml +# Add livingroom popup to popup.yaml +livingroom: !include "../views/livingroom.yaml" +``` + +Also add the two variables to the corresponding card_room: + +```yaml +variables: + ulm_input_select_option: livingroom + ulm_input_select: input_select.minimalist_ui_switch +``` diff --git a/mkdocs.yml b/mkdocs.yml index 481839af0..68372bbd8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -17,6 +17,7 @@ nav: - Configuration: "setup/configuration.md" - Customizing: "setup/customizing.md" - Custom cards: "setup/custom_cards.md" + - Advanced Dashboard: "setup/advanced_dash.md" - "... | usage/**/*.md" - Development: - Card Style Guide: "development/card_style_guide.md" From 839981372ab47af0ad0579afd0df66383b0e1eca Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Tue, 7 Jun 2022 20:36:12 +0200 Subject: [PATCH 10/13] Change name to adaptive --- .../ui_lovelace_minimalist/base.py | 6 +- .../ui_lovelace_minimalist/configure.py | 10 +- .../ui_lovelace_minimalist/const.py | 6 +- .../ui_lovelace_minimalist/load_dashboard.py | 12 +- .../adaptive-ui.yaml} | 0 .../popup/popup.yaml | 0 .../views/livingroom.yaml | 0 .../views/main.yaml | 2 +- .../translations/cs.json | 12 +- .../translations/de.json | 12 +- .../translations/en.json | 12 +- .../translations/it.json | 12 +- .../translations/nl.json | 12 +- .../translations/pl.json | 12 +- .../translations/ru.json | 12 +- .../translations/sk.json | 12 +- ...hboard.png => hacs_adaptive_dashboard.png} | Bin .../{advanced_dash.md => adaptive_dash.md} | 188 +++++++++++------- mkdocs.yml | 2 +- 19 files changed, 181 insertions(+), 141 deletions(-) rename custom_components/ui_lovelace_minimalist/lovelace/{advanced-dash/advanced-ui.yaml => adaptive-dash/adaptive-ui.yaml} (100%) rename custom_components/ui_lovelace_minimalist/lovelace/{advanced-dash => adaptive-dash}/popup/popup.yaml (100%) rename custom_components/ui_lovelace_minimalist/lovelace/{advanced-dash => adaptive-dash}/views/livingroom.yaml (100%) rename custom_components/ui_lovelace_minimalist/lovelace/{advanced-dash => adaptive-dash}/views/main.yaml (97%) rename docs/assets/img/setup/{hacs_advanced_dashboard.png => hacs_adaptive_dashboard.png} (100%) rename docs/setup/{advanced_dash.md => adaptive_dash.md} (61%) diff --git a/custom_components/ui_lovelace_minimalist/base.py b/custom_components/ui_lovelace_minimalist/base.py index a58f2ed15..f80263a8c 100644 --- a/custom_components/ui_lovelace_minimalist/base.py +++ b/custom_components/ui_lovelace_minimalist/base.py @@ -26,9 +26,9 @@ class UlmConfiguration: sidepanel_enabled: bool = DEFAULT_SIDEPANEL_ENABLED sidepanel_icon: str = DEFAULT_SIDEPANEL_ICON sidepanel_title: str = DEFAULT_SIDEPANEL_TITLE - advanced_ui_enabled: bool = DEFAULT_SIDEPANEL_ENABLED - advanced_ui_icon: str = DEFAULT_SIDEPANEL_ICON - advanced_ui_title: str = DEFAULT_SIDEPANEL_TITLE + adaptive_ui_enabled: bool = DEFAULT_SIDEPANEL_ENABLED + adaptive_ui_icon: str = DEFAULT_SIDEPANEL_ICON + adaptive_ui_title: str = DEFAULT_SIDEPANEL_TITLE theme_path: str = DEFAULT_THEME_PATH theme: str = DEFAULT_THEME plugin_path: str = "www/community/" diff --git a/custom_components/ui_lovelace_minimalist/configure.py b/custom_components/ui_lovelace_minimalist/configure.py index e7f83ccaa..1d58fd0c0 100644 --- a/custom_components/ui_lovelace_minimalist/configure.py +++ b/custom_components/ui_lovelace_minimalist/configure.py @@ -66,16 +66,16 @@ def configure_cards(hass: HomeAssistant, ulm: UlmBase): ), hass.config.path(f"{DOMAIN}/dashboard/ui-lovelace.yaml"), ) - # Copy advanced dashboard if not exists and is selected as option - if ulm.configuration.advanced_ui_enabled: + # Copy adaptive dashboard if not exists and is selected as option + if ulm.configuration.adaptive_ui_enabled: if not os.path.exists( - hass.config.path(f"{DOMAIN}/dashboard/advanced-dash") + hass.config.path(f"{DOMAIN}/dashboard/adaptive-dash") ): shutil.copytree( hass.config.path( - f"custom_components/{DOMAIN}/lovelace/advanced-dash" + f"custom_components/{DOMAIN}/lovelace/adaptive-dash" ), - hass.config.path(f"{DOMAIN}/dashboard/advanced-dash"), + hass.config.path(f"{DOMAIN}/dashboard/adaptive-dash"), ) # Copy chosen language file over to config dir shutil.copy2( diff --git a/custom_components/ui_lovelace_minimalist/const.py b/custom_components/ui_lovelace_minimalist/const.py index b08414763..7f2a0ba6b 100644 --- a/custom_components/ui_lovelace_minimalist/const.py +++ b/custom_components/ui_lovelace_minimalist/const.py @@ -31,9 +31,9 @@ CONF_SIDEPANEL_ENABLED = "sidepanel_enabled" CONF_SIDEPANEL_TITLE = "sidepanel_title" CONF_SIDEPANEL_ICON = "sidepanel_icon" -CONF_SIDEPANEL_ADV_ENABLED = "advanced_ui_enabled" -CONF_SIDEPANEL_ADV_TITLE = "advanced_ui_title" -CONF_SIDEPANEL_ADV_ICON = "advanced_ui_icon" +CONF_SIDEPANEL_ADV_ENABLED = "adaptive_ui_enabled" +CONF_SIDEPANEL_ADV_TITLE = "adaptive_ui_title" +CONF_SIDEPANEL_ADV_ICON = "adaptive_ui_icon" CONF_THEME = "theme" CONF_THEME_PATH = "theme_path" CONF_THEME_OPTIONS = [ diff --git a/custom_components/ui_lovelace_minimalist/load_dashboard.py b/custom_components/ui_lovelace_minimalist/load_dashboard.py index 860bf60b1..ce50ac188 100644 --- a/custom_components/ui_lovelace_minimalist/load_dashboard.py +++ b/custom_components/ui_lovelace_minimalist/load_dashboard.py @@ -27,12 +27,12 @@ def load_dashboard(hass: HomeAssistant, ulm: UlmBase): "require_admin": False, } - adv_dashboard_url = "advanced-dash" + adv_dashboard_url = "adaptive-dash" adv_dashboard_config = { "mode": "yaml", - "icon": ulm.configuration.advanced_ui_icon, - "title": ulm.configuration.advanced_ui_title, - "filename": "ui_lovelace_minimalist/dashboard/advanced-dash/advanced-ui.yaml", + "icon": ulm.configuration.adaptive_ui_icon, + "title": ulm.configuration.adaptive_ui_title, + "filename": "ui_lovelace_minimalist/dashboard/adaptive-dash/adaptive-ui.yaml", "show_in_sidebar": True, "require_admin": False, } @@ -48,7 +48,7 @@ def load_dashboard(hass: HomeAssistant, ulm: UlmBase): if dashboard_url in hass.data["lovelace"]["dashboards"]: async_remove_panel(hass, "ui-lovelace-minimalist") - if ulm.configuration.advanced_ui_enabled: + if ulm.configuration.adaptive_ui_enabled: hass.data["lovelace"]["dashboards"][adv_dashboard_url] = LovelaceYAML( hass, adv_dashboard_url, adv_dashboard_config ) @@ -56,4 +56,4 @@ def load_dashboard(hass: HomeAssistant, ulm: UlmBase): _register_panel(hass, adv_dashboard_url, "yaml", adv_dashboard_config, True) else: if adv_dashboard_url in hass.data["lovelace"]["dashboards"]: - async_remove_panel(hass, "advanced-dash") + async_remove_panel(hass, "adaptive-dash") diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/advanced-ui.yaml b/custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/adaptive-ui.yaml similarity index 100% rename from custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/advanced-ui.yaml rename to custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/adaptive-ui.yaml diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/popup/popup.yaml b/custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/popup/popup.yaml similarity index 100% rename from custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/popup/popup.yaml rename to custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/popup/popup.yaml diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/livingroom.yaml b/custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/views/livingroom.yaml similarity index 100% rename from custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/livingroom.yaml rename to custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/views/livingroom.yaml diff --git a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/main.yaml b/custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/views/main.yaml similarity index 97% rename from custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/main.yaml rename to custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/views/main.yaml index 90c789b47..597280765 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/advanced-dash/views/main.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/views/main.yaml @@ -31,7 +31,7 @@ cards: grid-area: "text" type: "custom:button-card" template: "card_title" - name: "This is the advanced
dashboard provided by
UI Minimalist" + name: "This is the adaptive
dashboard provided by
UI Minimalist" label: "Find instructions to add
cards on the wiki" - view_layout: diff --git a/custom_components/ui_lovelace_minimalist/translations/cs.json b/custom_components/ui_lovelace_minimalist/translations/cs.json index 136ec8c1a..3d262d4aa 100644 --- a/custom_components/ui_lovelace_minimalist/translations/cs.json +++ b/custom_components/ui_lovelace_minimalist/translations/cs.json @@ -10,9 +10,9 @@ "sidepanel_enabled": "Zobrazit v postranním panelu", "sidepanel_icon": "Ikona v postranním panel", "sidepanel_title": "Název v postranním panelu", - "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_ui_title": "Advanced panel title", - "advanced_ui_icon": "Advanced panel icon", + "adaptive_ui_enabled": "Enable adaptive Dashboard with popup splitview", + "adaptive_ui_title": "adaptive panel title", + "adaptive_ui_icon": "adaptive panel icon", "theme": "Motiv", "include_other_cards": "Do zdrojů zahrnout vlastní karty, na kterých závisí tato integrace." } @@ -33,9 +33,9 @@ "sidepanel_enabled": "Zobrazit v postranním panelu", "sidepanel_icon": "Ikona v postranním panel", "sidepanel_title": "Název v postranním panelu", - "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_ui_title": "Advanced panel title", - "advanced_ui_icon": "Advanced panel icon", + "adaptive_ui_enabled": "Enable adaptive Dashboard with popup splitview", + "adaptive_ui_title": "adaptive panel title", + "adaptive_ui_icon": "adaptive panel icon", "theme": "Motiv", "include_other_cards": "Do zdrojů zahrnout vlastní karty, na kterých závisí tato integrace." } diff --git a/custom_components/ui_lovelace_minimalist/translations/de.json b/custom_components/ui_lovelace_minimalist/translations/de.json index 55c759f86..fb585175b 100644 --- a/custom_components/ui_lovelace_minimalist/translations/de.json +++ b/custom_components/ui_lovelace_minimalist/translations/de.json @@ -10,9 +10,9 @@ "sidepanel_enabled": "Erstellung eines Eintrages in der Seitenleiste aktivieren.", "sidepanel_icon": "Icon Seitenleiste", "sidepanel_title": "Titel Seitenleiste", - "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_ui_title": "Advanced panel title", - "advanced_ui_icon": "Advanced panel icon", + "adaptive_ui_enabled": "Enable adaptive Dashboard with popup splitview", + "adaptive_ui_title": "adaptive panel title", + "adaptive_ui_icon": "adaptive panel icon", "theme": "Thema", "include_other_cards": "Individuelle Karten, die für die Nutzung benötigt werden, ebenfalls laden." } @@ -33,9 +33,9 @@ "sidepanel_enabled": "Erstellung eines Eintrages in der Seitenleiste aktivieren.", "sidepanel_icon": "Icon Seitenleiste", "sidepanel_title": "Titel Seitenleiste", - "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_ui_title": "Advanced panel title", - "advanced_ui_icon": "Advanced panel icon", + "adaptive_ui_enabled": "Enable adaptive Dashboard with popup splitview", + "adaptive_ui_title": "adaptive panel title", + "adaptive_ui_icon": "adaptive panel icon", "theme": "Thema", "include_other_cards": "Individuelle Karten, die für die Nutzung benötigt werden, ebenfalls laden." } diff --git a/custom_components/ui_lovelace_minimalist/translations/en.json b/custom_components/ui_lovelace_minimalist/translations/en.json index a9b22cee7..5ba492ed3 100644 --- a/custom_components/ui_lovelace_minimalist/translations/en.json +++ b/custom_components/ui_lovelace_minimalist/translations/en.json @@ -10,9 +10,9 @@ "sidepanel_enabled": "Enable creation of a Dashboard entry in the Side panel.", "sidepanel_icon": "Side panel icon", "sidepanel_title": "Side panel title", - "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_ui_title": "Advanced panel title", - "advanced_ui_icon": "Advanced panel icon", + "adaptive_ui_enabled": "Enable adaptive Dashboard with popup splitview", + "adaptive_ui_title": "adaptive panel title", + "adaptive_ui_icon": "adaptive panel icon", "theme": "Theme", "include_other_cards": "Include custom card resources it's depending on." } @@ -33,9 +33,9 @@ "sidepanel_enabled": "Enable creation of a Dashboard entry in the Side panel.", "sidepanel_icon": "Side panel icon", "sidepanel_title": "Side panel title", - "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_ui_title": "Advanced panel title", - "advanced_ui_icon": "Advanced panel icon", + "adaptive_ui_enabled": "Enable adaptive Dashboard with popup splitview", + "adaptive_ui_title": "adaptive panel title", + "adaptive_ui_icon": "adaptive panel icon", "theme": "Theme", "include_other_cards": "Include custom card resources it's depending on." } diff --git a/custom_components/ui_lovelace_minimalist/translations/it.json b/custom_components/ui_lovelace_minimalist/translations/it.json index f90b2ab7c..569950531 100644 --- a/custom_components/ui_lovelace_minimalist/translations/it.json +++ b/custom_components/ui_lovelace_minimalist/translations/it.json @@ -10,9 +10,9 @@ "sidepanel_enabled": "Abilita la creazione di una nuova Dashboard nel Pannello Laterale.", "sidepanel_icon": "Icona Pannello Laterale", "sidepanel_title": "Titolo Pannello Laterale", - "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_ui_title": "Advanced panel title", - "advanced_ui_icon": "Advanced panel icon", + "adaptive_ui_enabled": "Enable adaptive Dashboard with popup splitview", + "adaptive_ui_title": "adaptive panel title", + "adaptive_ui_icon": "adaptive panel icon", "theme": "Tema", "include_other_cards": "Inlcudere le risorse da cui dipendono le card personalizzate." } @@ -33,9 +33,9 @@ "sidepanel_enabled": "Abilita la creazione di una nuova Dashboard nel Pannello Laterale.", "sidepanel_icon": "Icona Pannello Laterale", "sidepanel_title": "Titolo Pannello Laterale", - "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_ui_title": "Advanced panel title", - "advanced_ui_icon": "Advanced panel icon", + "adaptive_ui_enabled": "Enable adaptive Dashboard with popup splitview", + "adaptive_ui_title": "adaptive panel title", + "adaptive_ui_icon": "adaptive panel icon", "theme": "Tema", "include_other_cards": "Inlcudere le risorse da cui dipendono le card personalizzate." } diff --git a/custom_components/ui_lovelace_minimalist/translations/nl.json b/custom_components/ui_lovelace_minimalist/translations/nl.json index ce9f852ea..0749a56c0 100644 --- a/custom_components/ui_lovelace_minimalist/translations/nl.json +++ b/custom_components/ui_lovelace_minimalist/translations/nl.json @@ -10,9 +10,9 @@ "sidepanel_enabled": "Een Dashboard aan de zijbalk toevoegen", "sidepanel_icon": "Dashboard icon", "sidepanel_title": "Dashboard titel", - "advanced_ui_enabled": "Een advanced Dashboard aan de zijbalk toevoegen", - "advanced_ui_title": "Advanced dashboard titel", - "advanced_ui_icon": "Advanced dashboard icon", + "adaptive_ui_enabled": "Een adaptive Dashboard aan de zijbalk toevoegen", + "adaptive_ui_title": "adaptive dashboard titel", + "adaptive_ui_icon": "adaptive dashboard icon", "theme": "Thema", "include_other_cards": "'Frontend' repositories toevoegen die nodig zijn" } @@ -33,9 +33,9 @@ "sidepanel_enabled": "Een Dashboard aan de zijbalk toevoegen", "sidepanel_icon": "Dashboard icon", "sidepanel_title": "Dashboard titel", - "advanced_ui_enabled": "Een advanced Dashboard aan de zijbalk toevoegen", - "advanced_ui_title": "Advanced dashboard titel", - "advanced_ui_icon": "Advanced dashboard icon", + "adaptive_ui_enabled": "Een adaptive Dashboard aan de zijbalk toevoegen", + "adaptive_ui_title": "adaptive dashboard titel", + "adaptive_ui_icon": "adaptive dashboard icon", "theme": "Thema", "include_other_cards": "'Frontend' repositories toevoegen die nodig zijn" } diff --git a/custom_components/ui_lovelace_minimalist/translations/pl.json b/custom_components/ui_lovelace_minimalist/translations/pl.json index ce872c8b5..b52209f32 100644 --- a/custom_components/ui_lovelace_minimalist/translations/pl.json +++ b/custom_components/ui_lovelace_minimalist/translations/pl.json @@ -10,9 +10,9 @@ "sidepanel_enabled": "Utwórz nowy Dashboard w panelu bocznym.", "sidepanel_icon": "Ikona w panelu bocznym", "sidepanel_title": "Tytuł w panelu bocznym", - "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_ui_title": "Advanced panel title", - "advanced_ui_icon": "Advanced panel icon", + "adaptive_ui_enabled": "Enable adaptive Dashboard with popup splitview", + "adaptive_ui_title": "adaptive panel title", + "adaptive_ui_icon": "adaptive panel icon", "theme": "Motyw", "include_other_cards": "Dołącz zasoby wymagane przez niestandardowe karty." } @@ -33,9 +33,9 @@ "sidepanel_enabled": "Utwórz nowy Dashboard w panelu bocznym.", "sidepanel_icon": "Ikona w panelu bocznym", "sidepanel_title": "Tytuł w panelu bocznym", - "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_ui_title": "Advanced panel title", - "advanced_ui_icon": "Advanced panel icon", + "adaptive_ui_enabled": "Enable adaptive Dashboard with popup splitview", + "adaptive_ui_title": "adaptive panel title", + "adaptive_ui_icon": "adaptive panel icon", "theme": "Motyw", "include_other_cards": "Dołącz zasoby wymagane przez niestandardowe karty." } diff --git a/custom_components/ui_lovelace_minimalist/translations/ru.json b/custom_components/ui_lovelace_minimalist/translations/ru.json index a3fd04042..adcaef333 100644 --- a/custom_components/ui_lovelace_minimalist/translations/ru.json +++ b/custom_components/ui_lovelace_minimalist/translations/ru.json @@ -10,9 +10,9 @@ "sidepanel_enabled": "Создайте новую Панель инструментов на боковой панели.", "sidepanel_icon": "Значок боковой панели", "sidepanel_title": "Название боковой панели", - "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_ui_title": "Advanced panel title", - "advanced_ui_icon": "Advanced panel icon", + "adaptive_ui_enabled": "Enable adaptive Dashboard with popup splitview", + "adaptive_ui_title": "adaptive panel title", + "adaptive_ui_icon": "adaptive panel icon", "theme": "Тема", "include_other_cards": "Включите ресурсы, необходимые для пользовательских карт." } @@ -33,9 +33,9 @@ "sidepanel_enabled": "Создайте новую Панель инструментов на боковой панели.", "sidepanel_icon": "Значок боковой панели", "sidepanel_title": "Название боковой панели", - "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_ui_title": "Advanced panel title", - "advanced_ui_icon": "Advanced panel icon", + "adaptive_ui_enabled": "Enable adaptive Dashboard with popup splitview", + "adaptive_ui_title": "adaptive panel title", + "adaptive_ui_icon": "adaptive panel icon", "theme": "Тема", "include_other_cards": "Включите ресурсы, необходимые для пользовательских карт." } diff --git a/custom_components/ui_lovelace_minimalist/translations/sk.json b/custom_components/ui_lovelace_minimalist/translations/sk.json index 77a9c9d48..d6371463c 100644 --- a/custom_components/ui_lovelace_minimalist/translations/sk.json +++ b/custom_components/ui_lovelace_minimalist/translations/sk.json @@ -10,9 +10,9 @@ "sidepanel_enabled": "Zobraziť v postrannom paneli", "sidepanel_icon": "Ikona v postrannom paneli", "sidepanel_title": "Názov v postrannom paneli", - "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_ui_title": "Advanced panel title", - "advanced_ui_icon": "Advanced panel icon", + "adaptive_ui_enabled": "Enable adaptive Dashboard with popup splitview", + "adaptive_ui_title": "adaptive panel title", + "adaptive_ui_icon": "adaptive panel icon", "theme": "Téma", "include_other_cards": "Do zdrojov zahrnúť vlastné karty potrebné pre túto integráciu." } @@ -33,9 +33,9 @@ "sidepanel_enabled": "Zobraziť v postrannom paneli", "sidepanel_icon": "Ikona v postrannom paneli", "sidepanel_title": "Názov v postrannom paneli", - "advanced_ui_enabled": "Enable advanced Dashboard with popup splitview", - "advanced_ui_title": "Advanced panel title", - "advanced_ui_icon": "Advanced panel icon", + "adaptive_ui_enabled": "Enable adaptive Dashboard with popup splitview", + "adaptive_ui_title": "adaptive panel title", + "adaptive_ui_icon": "adaptive panel icon", "theme": "Téma", "include_other_cards": "Do zdrojov zahrnúť vlastné karty potrebné pre túto integráciu." } diff --git a/docs/assets/img/setup/hacs_advanced_dashboard.png b/docs/assets/img/setup/hacs_adaptive_dashboard.png similarity index 100% rename from docs/assets/img/setup/hacs_advanced_dashboard.png rename to docs/assets/img/setup/hacs_adaptive_dashboard.png diff --git a/docs/setup/advanced_dash.md b/docs/setup/adaptive_dash.md similarity index 61% rename from docs/setup/advanced_dash.md rename to docs/setup/adaptive_dash.md index 7455ee127..97e9de4ed 100644 --- a/docs/setup/advanced_dash.md +++ b/docs/setup/adaptive_dash.md @@ -1,12 +1,12 @@ --- -title: Advanced Dashboard +title: Adaptive Dashboard hide: - toc --- ###### insert image/gif here -## Add advanced Dashboard +## Add Adaptive Dashboard To get full use of your Minimalist themed HA you need to setup some more custom_components (see requirements below).
This dashboard automatically changes based on the device/screen size your are using. You can also alter the cards showing on the right-side by double-tapping a card. (Steps to configure this are described below) @@ -20,6 +20,9 @@ This dashboard make extensive use of `state-switch` and `layout-card`. These are | [`layout-card`](https://github.com/thomasloven/lovelace-layout-card) | | [`state-switch`](https://github.com/thomasloven/lovelace-state-switch) | +!!! warning "Warning" + For now the `state-switch` works only with version `v1.9.3` or below! + You need also configure an `input_select` with options for each popup_card and view you have configured. This `input_select` controls the cards showing on the right-side of the screen when in fullscreen mode. !!! note "Popups" @@ -48,9 +51,9 @@ input_select: ## Setup -To enable the advanced dashboard you need to select the right option in the integration configuration menu. +To enable the adaptive dashboard you need to select the right option in the integration configuration menu. -![hacs_advanced_dashboard](../assets/img/setup/hacs_advanced_dashboard.png){ width="300" } +![hacs_adaptive_dashboard](../assets/img/setup/hacs_adaptive_dashboard.png){ width="300" } Once setup you should see another dashboard in your sidebar. This dashboard is filled with `card_title` template cards as placeholders. @@ -62,8 +65,8 @@ config ├── custom_cards └── dashboard └── ui-lovelace.yaml - └── advanced-dash - └── advanced-ui.yaml + └── adaptive-dash + └── adaptive-ui.yaml └── popup └── popup.yaml └── views @@ -73,7 +76,7 @@ config ## Customizing -The best place to start adding your personal cards is in `advanced-dash/views/main.yaml`. +The best place to start adding your personal cards is in `adaptive-dash/views/main.yaml`. !!! tip "Grid-Layout" @@ -119,19 +122,56 @@ Do this for all placeholders. You can always use less cards by deleting placehol ### Adding popups on the right-side -All cards on the right-side are configured in `advanced-dash/popup/popup.yaml`. +All cards on the right-side are configured in `adaptive-dash/popup/popup.yaml`. We preconfigured multiple popups for different types of devices. In `popup.yaml` you only have to complete the information in the variables part. The `light 1`, `mediaplayer 1`, `livingroom` parts in the code refer to the options you have configuered in your `input_select`. Make sure they are spelled the same. ([see documentation on `state-switch`](https://github.com/thomasloven/lovelace-state-switch)) +Follow this part to add a card to an option of your `input_select`: +To add a light popup to your first light card you just have to add the corresponding entity: + +```yaml +type: custom:state-switch +view_layout: + grid-area: popup + show: + mediaquery: "(min-width: 1100px)" +entity: input_select.minimalist_ui # put your input_select here +default: default +transition: slide-down +transition_time: 500 +states: + ## Lights + light 1: + type: "custom:button-card" + template: "popup_light_brightness" + variables: + ulm_popup_light_entity: "" +``` + +You can also add any other card by copying its yaml code in without the hypen `(-)` + +```yaml +states: + ## Lights + light 1: + type: "custom:button-card" + template: "popup_light_brightness" + variables: + ulm_popup_light_entity: "" + card 1: + type: "custom:button-card" + template: "" +``` + !!! note "Important!" - All device entities need its own popup config! + All options(devices) need its own config in `popup.yaml`! !!! warning "Warning" Delete all entries you don't use in `popup.yaml`. If not this can fill your dev-console with unwanted errors. -To switch between popups we need to go back to `advanced-dash/views/main.yaml`. Here we have to add two variables to the cards we want to show a popup off. After adding these variables the cards need to be double_tapped to change popups. +To switch between popups we need to go back to `adaptive-dash/views/main.yaml`. Here we have to add two variables to the cards we want to show a popup off. After adding these variables the cards need to be double_tapped to change popups. ```yaml variables: @@ -139,10 +179,10 @@ variables: ulm_input_select: input_select.minimalist_ui_switch ``` -Eventually the card_light we did configure should be like this: +Eventually the `card_light` we did configure should be like this: ```yaml - - view_layout: +- view_layout: grid-area: "card1" type: "custom:button-card" template: "card_light" @@ -162,68 +202,68 @@ From here you can duplicate the steps for each card. ### Setup more views -We already made a file for a second view: `advanced-dash/views/livingroom.yaml`. You can make as many views as you want by duplicating and alter the views files. - -To make the new view visible you have to add some entry to `advanced-dash/advanced-ui.yaml`. You only have to change the name of the room/view to the new entry. - -??? note "Add view example (click to open)" - - ```yaml - title: "UI Lovelace Minimalist" - theme: "minimalist-desktop" - background: "var(--background-image)" - views: - - type: "custom:grid-layout" - title: "home" - icon: "mdi:home" - path: "0" - layout: - grid-template-columns: "1fr 1fr" - grid-template-rows: "min-content" - grid-template-areas: | - "main popup" - mediaquery: - "(max-width: 1100px), (orientation: portrait)": - grid-template-columns: "100%" - grid-template-areas: "main" - cards: - - !include "views/main.yaml" - - !include "popup/popup.yaml" - - - type: "custom:grid-layout" - title: "Livingroom" - icon: "mdi:sofa" - path: "Livingroom" - layout: - grid-template-columns: "1fr 1fr" - grid-template-rows: "min-content" - grid-template-areas: | - "livingroom popup" - mediaquery: - "(max-width: 1100px), (orientation: portrait)": - grid-template-columns: "100%" - grid-template-areas: "livingroom" - cards: - - !include "views/livingroom.yaml" - - !include "popup/popup.yaml" - - - type: "custom:grid-layout" - title: "New View" - icon: "mdi:flower" - path: "New View" - layout: - grid-template-columns: "1fr 1fr" - grid-template-rows: "min-content" - grid-template-areas: | - "new_view popup" - mediaquery: - "(max-width: 1100px), (orientation: portrait)": - grid-template-columns: "100%" - grid-template-areas: "newview" - cards: - - !include "views/newview.yaml" - - !include "popup/popup.yaml" - ``` +We already made a file for a second view: `adaptive-dash/views/livingroom.yaml`. You can make as many views as you want by duplicating and alter the views files. + +To make the new view visible you have to add some entry to `adaptive-dash/adaptive-ui.yaml`. You only have to change the name of the room/view to the new entry. + +??? note "Add an extra view example (click to open)" + + ```yaml + title: "UI Lovelace Minimalist" + theme: "minimalist-desktop" + background: "var(--background-image)" + views: + - type: "custom:grid-layout" + title: "home" + icon: "mdi:home" + path: "0" + layout: + grid-template-columns: "1fr 1fr" + grid-template-rows: "min-content" + grid-template-areas: | + "main popup" + mediaquery: + "(max-width: 1100px), (orientation: portrait)": + grid-template-columns: "100%" + grid-template-areas: "main" + cards: + - !include "views/main.yaml" + - !include "popup/popup.yaml" + + - type: "custom:grid-layout" + title: "Livingroom" + icon: "mdi:sofa" + path: "Livingroom" + layout: + grid-template-columns: "1fr 1fr" + grid-template-rows: "min-content" + grid-template-areas: | + "livingroom popup" + mediaquery: + "(max-width: 1100px), (orientation: portrait)": + grid-template-columns: "100%" + grid-template-areas: "livingroom" + cards: + - !include "views/livingroom.yaml" + - !include "popup/popup.yaml" + + - type: "custom:grid-layout" + title: "New View" + icon: "mdi:flower" + path: "New View" + layout: + grid-template-columns: "1fr 1fr" + grid-template-rows: "min-content" + grid-template-areas: | + "new_view popup" + mediaquery: + "(max-width: 1100px), (orientation: portrait)": + grid-template-columns: "100%" + grid-template-areas: "newview" + cards: + - !include "views/newview.yaml" + - !include "popup/popup.yaml" + ``` You can also show room views as a popup. To configure this add a `!include` entry in the popup.yaml file. As example we configured `livingroom` already. Make sure this is also an option in your `input_select`. diff --git a/mkdocs.yml b/mkdocs.yml index 68372bbd8..7f7b7250d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -17,7 +17,7 @@ nav: - Configuration: "setup/configuration.md" - Customizing: "setup/customizing.md" - Custom cards: "setup/custom_cards.md" - - Advanced Dashboard: "setup/advanced_dash.md" + - Adaptive Dashboard: "setup/adaptive_dash.md" - "... | usage/**/*.md" - Development: - Card Style Guide: "development/card_style_guide.md" From 331817c6360e25905b1bbbcd8c1d6f1c7171af89 Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Tue, 14 Jun 2022 17:04:13 +0200 Subject: [PATCH 11/13] Make more user-friendly --- .../lovelace/adaptive-dash/popup/popup.yaml | 299 +++++++++--------- .../img/setup/minimalist_adaptive_dash.gif | Bin 0 -> 5205367 bytes docs/setup/adaptive_dash.md | 2 +- 3 files changed, 154 insertions(+), 147 deletions(-) create mode 100644 docs/assets/img/setup/minimalist_adaptive_dash.gif diff --git a/custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/popup/popup.yaml b/custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/popup/popup.yaml index d14d3b36a..ed6320fac 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/popup/popup.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/popup/popup.yaml @@ -3,160 +3,167 @@ type: "custom:state-switch" view_layout: grid-area: "popup" show: + # only show when screen-width is larger than 1100px mediaquery: "(min-width: 1100px)" +# add your input_select entity: default: "default" transition: "slide-down" transition_time: 500 +# options set in the input_select states: # Devices ## Lights - light 1: - type: "custom:button-card" - template: "popup_light_brightness" - variables: - ulm_popup_light_entity: - light 2: - type: "custom:button-card" - template: "popup_light_brightness" - variables: - ulm_popup_light_entity: - light 3: - type: "custom:button-card" - template: "popup_light_brightness" - variables: - ulm_popup_light_entity: - light 4: - type: "custom:button-card" - template: "popup_light_brightness" - variables: - ulm_popup_light_entity: - light 5: - type: "custom:button-card" - template: "popup_light_brightness" - variables: - ulm_popup_light_entity: - light 6: - type: "custom:button-card" - template: "popup_light_brightness" - variables: - ulm_popup_light_entity: - light 7: - type: "custom:button-card" - template: "popup_light_brightness" - variables: - ulm_popup_light_entity: - light 8: - type: "custom:button-card" - template: "popup_light_brightness" - variables: - ulm_popup_light_entity: - light 9: - type: "custom:button-card" - template: "popup_light_brightness" - variables: - ulm_popup_light_entity: - light 10: - type: "custom:button-card" - template: "popup_light_brightness" - variables: - ulm_popup_light_entity: - - ## Mediaplayers - mediaplayer 1: - type: "custom:button-card" - template: "popup_media_player_infos" - variables: - ulm_popup_media_player_entity: - mediaplayer 2: - type: "custom:button-card" - template: "popup_media_player_infos" - variables: - ulm_popup_media_player_entity: - mediaplayer 3: - type: "custom:button-card" - template: "popup_media_player_infos" - variables: - ulm_popup_media_player_entity: - mediaplayer 4: - type: "custom:button-card" - template: "popup_media_player_infos" - variables: - ulm_popup_media_player_entity: - mediaplayer 5: - type: "custom:button-card" - template: "popup_media_player_infos" - variables: - ulm_popup_media_player_entity: - - ## Thermostats - climate 1: - type: "custom:button-card" - template: "popup_thermostat_temperature" - variables: - ulm_popup_thermostat_entity: - climate 2: - type: "custom:button-card" - template: "popup_thermostat_temperature" - variables: - ulm_popup_thermostat_entity: - climate 3: - type: "custom:button-card" - template: "popup_thermostat_temperature" - variables: - ulm_popup_thermostat_entity: - climate 4: - type: "custom:button-card" - template: "popup_thermostat_temperature" - variables: - ulm_popup_thermostat_entity: - climate 5: - type: "custom:button-card" - template: "popup_thermostat_temperature" - variables: - ulm_popup_thermostat_entity: - - ## Power - power 1: - type: "custom:button-card" - template: "popup_power_outlet_stats" - variables: - ulm_popup_power_outlet_entity: - ulm_popup_power_outlet_sensor1: - ulm_popup_power_outlet_sensor2: - ulm_popup_power_outlet_graph_sensor: - power 2: - type: "custom:button-card" - template: "popup_power_outlet_stats" - variables: - ulm_popup_power_outlet_entity: - ulm_popup_power_outlet_sensor1: - ulm_popup_power_outlet_sensor2: - ulm_popup_power_outlet_graph_sensor: - power 3: - type: "custom:button-card" - template: "popup_power_outlet_stats" - variables: - ulm_popup_power_outlet_entity: - ulm_popup_power_outlet_sensor1: - ulm_popup_power_outlet_sensor2: - ulm_popup_power_outlet_graph_sensor: - power 4: - type: "custom:button-card" - template: "popup_power_outlet_stats" - variables: - ulm_popup_power_outlet_entity: - ulm_popup_power_outlet_sensor1: - ulm_popup_power_outlet_sensor2: - ulm_popup_power_outlet_graph_sensor: - power 5: - type: "custom:button-card" - template: "popup_power_outlet_stats" - variables: - ulm_popup_power_outlet_entity: - ulm_popup_power_outlet_sensor1: - ulm_popup_power_outlet_sensor2: - ulm_popup_power_outlet_graph_sensor: + # light 1: + # type: "custom:button-card" + # template: "popup_light_brightness" + # variables: + # ulm_popup_light_entity: + # light 2: + # type: "custom:button-card" + # template: "popup_light_brightness" + # variables: + # ulm_popup_light_entity: + # light 3: + # type: "custom:button-card" + # template: "popup_light_brightness" + # variables: + # ulm_popup_light_entity: + # light 4: + # type: "custom:button-card" + # template: "popup_light_brightness" + # variables: + # ulm_popup_light_entity: + # light 5: + # type: "custom:button-card" + # template: "popup_light_brightness" + # variables: + # ulm_popup_light_entity: + # light 6: + # type: "custom:button-card" + # template: "popup_light_brightness" + # variables: + # ulm_popup_light_entity: + # light 7: + # type: "custom:button-card" + # template: "popup_light_brightness" + # variables: + # ulm_popup_light_entity: + # light 8: + # type: "custom:button-card" + # template: "popup_light_brightness" + # variables: + # ulm_popup_light_entity: + # light 9: + # type: "custom:button-card" + # template: "popup_light_brightness" + # variables: + # ulm_popup_light_entity: + # light 10: + # type: "custom:button-card" + # template: "popup_light_brightness" + # variables: + # ulm_popup_light_entity: + # + ### Mediaplayers + # mediaplayer 1: + # type: "custom:button-card" + # template: "popup_media_player_infos" + # variables: + # ulm_popup_media_player_entity: + # mediaplayer 2: + # type: "custom:button-card" + # template: "popup_media_player_infos" + # variables: + # ulm_popup_media_player_entity: + # mediaplayer 3: + # type: "custom:button-card" + # template: "popup_media_player_infos" + # variables: + # ulm_popup_media_player_entity: + # mediaplayer 4: + # type: "custom:button-card" + # template: "popup_media_player_infos" + # variables: + # ulm_popup_media_player_entity: + # mediaplayer 5: + # type: "custom:button-card" + # template: "popup_media_player_infos" + # variables: + # ulm_popup_media_player_entity: + # + ### Thermostats + # climate 1: + # type: "custom:button-card" + # template: "popup_thermostat_temperature" + # variables: + # ulm_popup_thermostat_entity: + # climate 2: + # type: "custom:button-card" + # template: "popup_thermostat_temperature" + # variables: + # ulm_popup_thermostat_entity: + # climate 3: + # type: "custom:button-card" + # template: "popup_thermostat_temperature" + # variables: + # ulm_popup_thermostat_entity: + # climate 4: + # type: "custom:button-card" + # template: "popup_thermostat_temperature" + # variables: + # ulm_popup_thermostat_entity: + # climate 5: + # type: "custom:button-card" + # template: "popup_thermostat_temperature" + # variables: + # ulm_popup_thermostat_entity: + # + ### Power + # power 1: + # type: "custom:button-card" + # template: "popup_power_outlet_stats" + # variables: + # ulm_popup_power_outlet_entity: + # ulm_popup_power_outlet_sensor1: + # ulm_popup_power_outlet_sensor2: + # ulm_popup_power_outlet_graph_sensor: + # power 2: + # type: "custom:button-card" + # template: "popup_power_outlet_stats" + # variables: + # ulm_popup_power_outlet_entity: + # ulm_popup_power_outlet_sensor1: + # ulm_popup_power_outlet_sensor2: + # ulm_popup_power_outlet_graph_sensor: + # power 3: + # type: "custom:button-card" + # template: "popup_power_outlet_stats" + # variables: + # ulm_popup_power_outlet_entity: + # ulm_popup_power_outlet_sensor1: + # ulm_popup_power_outlet_sensor2: + # ulm_popup_power_outlet_graph_sensor: + # power 4: + # type: "custom:button-card" + # template: "popup_power_outlet_stats" + # variables: + # ulm_popup_power_outlet_entity: + # ulm_popup_power_outlet_sensor1: + # ulm_popup_power_outlet_sensor2: + # ulm_popup_power_outlet_graph_sensor: + # power 5: + # type: "custom:button-card" + # template: "popup_power_outlet_stats" + # variables: + # ulm_popup_power_outlet_entity: + # ulm_popup_power_outlet_sensor1: + # ulm_popup_power_outlet_sensor2: + # ulm_popup_power_outlet_graph_sensor: ## Rooms livingroom: !include "../views/livingroom.yaml" + # bedroom: !include "../views/bedroom.yaml" + # bathroom: !include "../views/bathroom.yaml" + # garage: !include "../views/garage.yaml" + # lights: !include "../views/lights.yaml" diff --git a/docs/assets/img/setup/minimalist_adaptive_dash.gif b/docs/assets/img/setup/minimalist_adaptive_dash.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef4a728eb3a983377ff576002b2aa035bc5c8f71 GIT binary patch literal 5205367 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[)Xc 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≻MDk_)#m3&Zety>JbG7Y#E=j(Awx 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±?M_Rlh(eQW$7f;1%@!Mb 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�?KT$-n~- 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