some icon refactoring

This commit is contained in:
Johannes Braun
2022-12-13 09:06:36 +01:00
parent 6825b29ced
commit e6c64c369d
2 changed files with 18 additions and 102 deletions

View File

@@ -175,93 +175,7 @@ media_content_type_mapping = {
'playlist': 'alert-circle-outline'
}
def map_to_mdi_name(ha_type, state=None, device_class="_", cardType=None):
if ha_type == "weather":
return weather_mapping[state] if state in weather_mapping else "alert-circle-outline"
elif ha_type in ["button", "navigate", "input_button", "input_select"]:
return "gesture-tap-button"
elif ha_type == "scene":
return "palette"
elif ha_type == "script":
return "script-text"
elif ha_type == "switch":
return "light-switch"
elif ha_type == "automation":
return "robot"
elif ha_type in ["number", "input_number"]:
return "ray-vertex"
elif ha_type == "light":
return "lightbulb"
elif ha_type == "fan":
return "fan"
elif ha_type == "person":
return "account"
elif ha_type == "vacuum":
return "robot-vacuum"
elif ha_type == "input_boolean":
return "check-circle-outline" if state == "on" else "close-circle-outline"
elif ha_type == "cover":
if device_class is None:
device_class = "window"
if state == "closed":
return cover_mapping[device_class][1] if device_class in cover_mapping else "alert-circle-outline"
else:
return cover_mapping[device_class][0] if device_class in cover_mapping else "alert-circle-outline"
elif ha_type == "lock":
return "lock-open" if state == "unlocked" else "lock"
elif ha_type == "sensor":
return sensor_mapping[device_class] if device_class in sensor_mapping else "alert-circle-outline"
elif ha_type == "binary_sensor":
if state == "on":
if device_class in sensor_mapping_on:
return sensor_mapping_on[device_class]
else:
return "checkbox-marked-circle"
else:
if device_class in sensor_mapping_off:
return sensor_mapping_off[device_class]
else:
return "radiobox-blank"
elif ha_type == "alarm-arm-fail":
return "progress-alert"
elif ha_type == "alarm_control_panel":
if state == "disarmed":
return "shield-off"
if state == "armed_home":
return "shield-home"
if state == "armed_away":
return "shield-lock"
if state == "armed_night":
return "weather-night"
if state == "armed_vacation":
return "shield-airplane"
if state in ["arming", "pending"]:
return "shield"
if state == "triggered":
return "bell-ring"
elif ha_type == "climate":
if state in ["auto", "heat_cool"]:
return "calendar-sync"
if state == "heat":
return "fire"
if state == "off":
return "power"
if state == "cool":
return "snowflake"
if state == "dry":
return "water-percent"
if state == "fan_only":
return "fan"
elif ha_type == "sun":
if state == "above_horizon":
return "weather-sunset-up"
if state == "below_horizon":
return "weather-sunset-down"
else:
return "alert-circle-outline"
def get_icon(ha_type, state=None, device_class=None, overwrite=None):
def get_icon(ha_type, overwrite=None):
if overwrite is not None:
if type(overwrite) is str:
return get_icon_char(overwrite)
@@ -269,7 +183,14 @@ def get_icon(ha_type, state=None, device_class=None, overwrite=None):
for overwrite_state, overwrite_icon in overwrite.items():
if overwrite_state == state:
return get_icon_char(overwrite_icon)
return get_icon_char(map_to_mdi_name(ha_type, state, device_class))
result_icon = "alert-circle-outline"
if ha_type == "script":
result_icon = "script-text"
elif ha_type == "alarm-arm-fail":
result_icon = "progress-alert"
return get_icon_char(result_icon)
def get_action_icon(ha_type, action, device_class=None, overwrite=None):
if overwrite is not None:
@@ -287,7 +208,7 @@ def get_action_icon(ha_type, action, device_class=None, overwrite=None):
actionicon = "alert-circle-outline"
return get_icon_char(actionicon)
def get_icon_ha(entity_id, overwrite=None):
def get_icon_ha(entity_id, overwrite=None, stateOverwrite=None):
if overwrite is not None:
if type(overwrite) is str:
return get_icon_char(overwrite)
@@ -301,7 +222,7 @@ def get_icon_ha(entity_id, overwrite=None):
ha_type = entity_id.split(".")[0]
if (apis.ha_api.entity_exists(entity_id)):
entity = apis.ha_api.get_entity(entity_id)
state = entity.state
state = entity.state if stateOverwrite is None else stateOverwrite
# icons only based on state
if ha_type in simple_type_mapping:
result_icon = simple_type_mapping[ha_type]
@@ -346,9 +267,4 @@ def get_icon_ha(entity_id, overwrite=None):
if entity.attributes.media_content_type in media_content_type_mapping:
result_icon = media_content_type_mapping[entity.attributes.media_content_type]
# TODO: get rid of this one
elif ha_type == "alarm-arm-fail":
result_icon = "progress-alert"
else:
result_icon = "alert-circle-outline"
return get_icon_char(result_icon)

View File

@@ -104,9 +104,9 @@ class LuiPagesGen(object):
apis.ha_api.error(f"Skipping Weather Update, entity {we_name} not found")
return
icon_cur = get_icon("weather", state=we.state)
icon_cur = get_icon_ha(we_name)
state["tMainIcon"] = we.state
text_cur = convert_temperature(we.attributes.temperature, unit)
text_cur = convert_temperature(we.attributes.temperature, unit)
forecastSkip = self._config._config_screensaver.raw_config.get(f"forecastSkip")+1
# check if the difference between the first 2 forecast items is less than 24h
@@ -131,7 +131,7 @@ class LuiPagesGen(object):
up = up.strftime('%H:%M')
else:
up = up.strftime('%a')
icon = get_icon("weather", state=we.attributes.forecast[fid]['condition'])
icon = get_icon_ha(we_name, stateOverwrite=we.attributes.forecast[fid]['condition'])
if i == 1:
state["tF1Icon"] = we.attributes.forecast[fid]['condition']
elif i == 2:
@@ -151,7 +151,7 @@ class LuiPagesGen(object):
name = wOF.get("name")
entity = apis.ha_api.get_entity(wOF.get("entity"))
up = name if name is not None else entity.attributes.friendly_name
icon = get_icon("sensor", state=entity.state, device_class=entity.attributes.get("device_class", ""), overwrite=icon)
icon = get_icon_ha(wOF.get("entity"), overwrite=icon)
if "color" in wOF:
if theme is None:
theme = {}
@@ -185,7 +185,7 @@ class LuiPagesGen(object):
icon = statusIcon.get("icon")
entity = apis.ha_api.get_entity(statusIcon.get("entity"))
entityType = statusIcon.get("entity").split(".")[0]
icon = get_icon(entityType, state=entity.state, device_class=entity.attributes.get("device_class", ""), overwrite=icon)
icon = get_icon_ha(statusIcon.get("entity"), overwrite=icon)
color = self.get_entity_color(entity, ha_type=entityType, overwrite=statusIcon.get("color", None))
status_res += f"~{icon}~{color}"
@@ -429,7 +429,7 @@ class LuiPagesGen(object):
if overwrite_supported_modes is not None:
hvac_modes = overwrite_supported_modes
for mode in hvac_modes:
icon_id = get_icon("climate", state=mode)
icon_id = get_icon_ha(item, stateOverwrite=mode)
color_on = 64512
if mode in ["auto", "heat_cool"]:
color_on = 1024
@@ -714,7 +714,7 @@ class LuiPagesGen(object):
entity = apis.ha_api.get_entity(entity_id)
entityType = "cover"
device_class = entity.attributes.get("device_class", "window")
icon_id = get_icon(entityType, state=entity.state, device_class=device_class)
icon_id = get_icon_ha(entity_id)
pos = entity.attributes.get("current_position")
if pos is None: