mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-21 06:54:24 +01:00
implement subpages
This commit is contained in:
@@ -261,9 +261,9 @@ nspanel-1:
|
||||
panelRecvTopic: "tele/tasmota_your_mqtt_topic/RESULT"
|
||||
panelSendTopic: "cmnd/tasmota_your_mqtt_topic/CustomSend"
|
||||
updateMode: "auto-notify"
|
||||
timeoutScreensaver: 20
|
||||
#brightnessScreensaver: 10
|
||||
brightnessScreensaver:
|
||||
sleepTimeout: 20
|
||||
#sleepBrightness: 10
|
||||
sleepBrightness:
|
||||
- time: "7:00:00"
|
||||
value: 10
|
||||
- time: "23:00:00"
|
||||
|
||||
@@ -6,9 +6,9 @@ nspanel-1:
|
||||
panelRecvTopic: "tele/tasmota_your_mqtt_topic/RESULT"
|
||||
panelSendTopic: "cmnd/tasmota_your_mqtt_topic/CustomSend"
|
||||
updateMode: "auto-notify"
|
||||
timeoutScreensaver: 20
|
||||
#brightnessScreensaver: 10
|
||||
brightnessScreensaver:
|
||||
sleepTimeout: 20
|
||||
#sleepBrightness: 10
|
||||
sleepBrightness:
|
||||
- time: "7:00:00"
|
||||
value: 10
|
||||
- time: "23:00:00"
|
||||
|
||||
@@ -94,6 +94,7 @@ class LuiBackendConfig(object):
|
||||
self._config = {}
|
||||
self._config_cards = []
|
||||
self._config_screensaver = None
|
||||
self._config_hidden_cards = []
|
||||
|
||||
self.load(config_in)
|
||||
|
||||
@@ -109,7 +110,7 @@ class LuiBackendConfig(object):
|
||||
self._config_cards.append(Card(card, pos))
|
||||
pos = pos + 1
|
||||
# parse screensaver
|
||||
screensaver = Card(self.get("screensaver"))
|
||||
self._config_screensaver = Card(self.get("screensaver"))
|
||||
|
||||
# parsed hidden pages that can be accessed through navigate
|
||||
for card in self.get("hiddenCards"):
|
||||
|
||||
@@ -142,7 +142,7 @@ class LuiController(object):
|
||||
self._pages_gen.generate_screensaver_page()
|
||||
return
|
||||
|
||||
if button_type == "bExit":
|
||||
if button_type in ["bExit", "bUp"]:
|
||||
self._pages_gen.render_card(self._current_card)
|
||||
|
||||
if button_type == "bNext":
|
||||
@@ -181,8 +181,7 @@ class LuiController(object):
|
||||
if button_type == "button":
|
||||
if entity_id.startswith('navigate'):
|
||||
# internal for navigation to nested pages
|
||||
self._current_card = self._config.searchCard(entity_id)
|
||||
self._pages_gen.render_card(self._current_card)
|
||||
self._pages_gen.render_card(self._config.searchCard(entity_id))
|
||||
elif entity_id.startswith('scene'):
|
||||
self._ha_api.get_entity(entity_id).call_service("turn_on")
|
||||
elif entity_id.startswith('script'):
|
||||
|
||||
@@ -110,11 +110,11 @@ class LuiPagesGen(object):
|
||||
if entityType == "delete":
|
||||
return f"~{entityType}~~~~~"
|
||||
if entityType == "navigate":
|
||||
page_search_res = self._config.searchPage(entityId)
|
||||
page_search_res = self._config.searchCard(entityId)
|
||||
if page_search_res is not None:
|
||||
name = page_search_res.title
|
||||
text = get_translation(self._locale,"PRESS")
|
||||
icon_id = get_icon_id(icon) if icon is not None else get_icon_id(page_data.get("icon", "gesture-tap-button"))
|
||||
icon_id = get_icon_id(icon) if icon is not None else get_icon_id("gesture-tap-button")
|
||||
return f"~button~{entityId}~{icon_id}~17299~{name}~{text}"
|
||||
else:
|
||||
return f"~text~{entityId}~{get_icon_id('alert-circle-outline')}~17299~page not found~"
|
||||
@@ -162,8 +162,7 @@ class LuiPagesGen(object):
|
||||
max_v = entity.attributes.get("max", 100)
|
||||
return f"~number~{entityId}~{icon_id}~17299~{name}~{entity.state}|{min_v}|{max_v}"
|
||||
|
||||
def generate_entities_page(self, heading, items):
|
||||
navigation = ""
|
||||
def generate_entities_page(self, navigation, heading, items):
|
||||
command = f"entityUpd~{heading}~{navigation}"
|
||||
# Get items and construct cmd string
|
||||
for item in items:
|
||||
@@ -172,7 +171,7 @@ class LuiPagesGen(object):
|
||||
|
||||
|
||||
|
||||
def generate_thermo_page(self, entity):
|
||||
def generate_thermo_page(self, navigation, entity):
|
||||
item = entity.entityId
|
||||
if not self._ha_api.entity_exists(item):
|
||||
command = f"entityUpd~{item}~Not found~220~220~Not found~150~300~5"
|
||||
@@ -230,7 +229,7 @@ class LuiPagesGen(object):
|
||||
command = f"entityUpd~{heading}~~{item}~{current_temp}~{dest_temp}~{status}~{min_temp}~{max_temp}~{step_temp}{icon_res}"
|
||||
self._send_mqtt_msg(command)
|
||||
|
||||
def generate_media_page(self, entity):
|
||||
def generate_media_page(self, navigation, entity):
|
||||
item = entity.entityId
|
||||
if not self._ha_api.entity_exists(item):
|
||||
command = f"entityUpd~|{item}|Not found|{get_icon_id('alert-circle-outline')}|Please check your|apps.yaml in AppDaemon|50|{get_icon_id('alert-circle-outline')}"
|
||||
@@ -264,7 +263,7 @@ class LuiPagesGen(object):
|
||||
command = f"entityUpd~|{heading}||{item}|{icon}|{title}|{author}|{volume}|{iconplaypause}|{source}|{speakerlist[:200]}|{onoffbutton}"
|
||||
self._send_mqtt_msg(command)
|
||||
|
||||
def generate_alarm_page(self, entity):
|
||||
def generate_alarm_page(self, navigation, entity):
|
||||
item = entity.entityId
|
||||
if not self._ha_api.entity_exists(item):
|
||||
command = f"entityUpd~{item}~Not found~Not found~Check your~Check your~apps.~apps.~yaml~yaml~0~~0"
|
||||
@@ -327,18 +326,21 @@ class LuiPagesGen(object):
|
||||
|
||||
def render_card(self, card, send_page_type=True):
|
||||
LOGGER.info(f"Started rendering of page {card.pos} with type {card.cardType}")
|
||||
navigation = "1|1"
|
||||
if card.pos is None:
|
||||
navigation = "2|0"
|
||||
# Switch to page
|
||||
if send_page_type:
|
||||
self.page_type(card.cardType)
|
||||
if card.cardType in ["cardEntities", "cardGrid"]:
|
||||
self.generate_entities_page(card.title, card.entities)
|
||||
self.generate_entities_page(navigation, card.title, card.entities)
|
||||
return
|
||||
if card.cardType == "cardThermo":
|
||||
self.generate_thermo_page(card.entity)
|
||||
self.generate_thermo_page(navigation, card.entity)
|
||||
if card.cardType == "cardMedia":
|
||||
self.generate_media_page(card.entity)
|
||||
self.generate_media_page(navigation, card.entity)
|
||||
if card.cardType == "cardAlarm":
|
||||
self.generate_alarm_page(card.entity)
|
||||
self.generate_alarm_page(navigation, card.entity)
|
||||
|
||||
if card.cardType == "screensaver":
|
||||
self.generate_screensaver_page(card)
|
||||
|
||||
Reference in New Issue
Block a user