Skip to content

Commit bea6c25

Browse files
authored
Dynamic icons
1 parent 3ea32b0 commit bea6c25

1 file changed

Lines changed: 20 additions & 1 deletion

File tree

custom_components/makerspaceapi/sensor.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ class ProductSensor(MakerSpaceEntity, SensorEntity):
5454

5555
_attr_state_class = SensorStateClass.MEASUREMENT
5656
_attr_native_unit_of_measurement = "items"
57-
_attr_icon = "mdi:package-variant"
5857

5958
def __init__(
6059
self, coordinator: MakerSpaceCoordinator, entry: ConfigEntry, ean: str
@@ -74,6 +73,19 @@ def name(self) -> str:
7473
p = self._product()
7574
return p["name"] if p else f"Product {self._ean}"
7675

76+
@property
77+
def icon(self) -> str:
78+
p = self._product()
79+
if not p:
80+
return "mdi:help"
81+
if p["category"].lower() in ("drinks", "drink", "getränke", "getränk", "beer", "bier"):
82+
return "mdi:cup" if p["stock"] > 0 else "mdi:cup-off"
83+
if p["category"].lower() in ("snacks", "snack", "food", "essen"):
84+
return "mdi:peanut" if p["stock"] > 0 else "mdi:peanut-off"
85+
if p["category"].lower() in ("sweets", "candy", "süßigkeiten"):
86+
return "mdi:candy" if p["stock"] > 0 else "mdi:candy-off"
87+
return "mdi:package-variant" if p["stock"] > 0 else "mdi:package-variant-remove"
88+
7789
@property
7890
def native_value(self) -> int | None:
7991
p = self._product()
@@ -126,6 +138,13 @@ def name(self) -> str:
126138
t = self._target()
127139
return t["name"] if t else f"Target {self._slug}"
128140

141+
@property
142+
def icon(self) -> str:
143+
t = self._target()
144+
if not t:
145+
return "mdi:cash-sync"
146+
return "mdi:cash" if t["balance"] > 0 else "mdi:cash-off"
147+
129148
@property
130149
def native_value(self) -> float | None:
131150
t = self._target()

0 commit comments

Comments
 (0)