mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-21 23:14:25 +01:00
Fixed Callbacks for customized items
This commit is contained in:
@@ -367,14 +367,7 @@ class NsPanelLovelaceUI:
|
|||||||
pos = pos/100
|
pos = pos/100
|
||||||
self.api.get_entity(entity_id).call_service("volume_set", volume_level=pos)
|
self.api.get_entity(entity_id).call_service("volume_set", volume_level=pos)
|
||||||
|
|
||||||
def get_all_configured_items(self, pages):
|
def filter_dict_from_item_list(self, items):
|
||||||
items = []
|
|
||||||
for page in pages:
|
|
||||||
if "item" in page:
|
|
||||||
items.append(page["item"])
|
|
||||||
if "items" in page:
|
|
||||||
items.extend(page["items"])
|
|
||||||
|
|
||||||
# remove all dicts from list
|
# remove all dicts from list
|
||||||
cleaned_list = []
|
cleaned_list = []
|
||||||
for item in items:
|
for item in items:
|
||||||
@@ -383,9 +376,17 @@ class NsPanelLovelaceUI:
|
|||||||
cleaned_list.append(next(iter(item)))
|
cleaned_list.append(next(iter(item)))
|
||||||
else:
|
else:
|
||||||
cleaned_list.append(item)
|
cleaned_list.append(item)
|
||||||
|
|
||||||
return cleaned_list
|
return cleaned_list
|
||||||
|
|
||||||
|
def get_all_configured_items(self, pages):
|
||||||
|
items = []
|
||||||
|
for page in pages:
|
||||||
|
if "item" in page:
|
||||||
|
items.append(page["item"])
|
||||||
|
if "items" in page:
|
||||||
|
items.extend(page["items"])
|
||||||
|
return self.filter_dict_from_item_list(items)
|
||||||
|
|
||||||
def check_items(self):
|
def check_items(self):
|
||||||
items = self.get_all_configured_items(self.config["pages"])
|
items = self.get_all_configured_items(self.config["pages"])
|
||||||
|
|
||||||
@@ -401,10 +402,7 @@ class NsPanelLovelaceUI:
|
|||||||
|
|
||||||
def register_callbacks(self):
|
def register_callbacks(self):
|
||||||
items = self.get_all_configured_items(self.config["pages"])
|
items = self.get_all_configured_items(self.config["pages"])
|
||||||
|
|
||||||
for item in items:
|
for item in items:
|
||||||
if not self.api.entity_exists(item):
|
|
||||||
continue
|
|
||||||
self.api.log("Enable state callback for %s", item, level="DEBUG")
|
self.api.log("Enable state callback for %s", item, level="DEBUG")
|
||||||
self.api.handle = self.api.listen_state(self.state_change_callback, entity_id=item, attribute="all")
|
self.api.handle = self.api.listen_state(self.state_change_callback, entity_id=item, attribute="all")
|
||||||
|
|
||||||
@@ -417,11 +415,13 @@ class NsPanelLovelaceUI:
|
|||||||
|
|
||||||
if page_type in ["cardEntities", "cardGrid"]:
|
if page_type in ["cardEntities", "cardGrid"]:
|
||||||
items = current_page_config["items"]
|
items = current_page_config["items"]
|
||||||
if entity in items:
|
items_filtered = self.filter_dict_from_item_list(items)
|
||||||
|
if entity in items_filtered:
|
||||||
self.api.log(f"State change on current page for {entity}", level="DEBUG")
|
self.api.log(f"State change on current page for {entity}", level="DEBUG")
|
||||||
# send update of the page
|
# send update of the page
|
||||||
command = self.generate_entities_page(items)
|
command = self.generate_entities_page(items)
|
||||||
self.send_mqtt_msg(command)
|
self.send_mqtt_msg(command)
|
||||||
|
# send detail pages in case they are open
|
||||||
if(entity.startswith("cover")):
|
if(entity.startswith("cover")):
|
||||||
self.generate_detail_page("popupShutter", entity)
|
self.generate_detail_page("popupShutter", entity)
|
||||||
if(entity.startswith("light")):
|
if(entity.startswith("light")):
|
||||||
|
|||||||
Reference in New Issue
Block a user