Bug bei Icons in FHEMWEB

Begonnen von Markus M., 27 Februar 2016, 01:23:03

Vorheriges Thema - Nächstes Thema

Markus M.

Mit ist gerade aufgefallen dass es einen unschönen Bug bei der Anzeige von Icons gibt.

Für STATE Werte werden bekanntlich die Standard Icons gesetzt, sobald sie den Namen des Werts haben.
Wenn ein Icon allerdings den Namen eines Devices oder sogar eines Moduls hat, werden sämtliche Text-Werte in STATE mit diesem Icon überschrieben.

Kann sich das viellicht mal jemand ansehen, der sich in FHEMWEB zurechtfindet?
Die Ersetzung sollte nur bei einem Match von Icon-Name auf den Wert stattfinden.

Gruss, Markus
Aktuell weder Smarthome noch FHEM vorhanden

rudolfkoenig

ZitatDie Ersetzung sollte nur bei einem Match von Icon-Name auf den Wert stattfinden.
Wo ist das denn spezifiziert?
Ich habe die "Iconfindung" zwar irgendwo schon dokumentiert, weiss aber nicht mehr wo, deswegen hier nochmal, direkt aus 01_FHEMWEB.pm, ich meine es ist auch so verstaendlich. Gilt nur dann, falls der Benutzer es nicht explizit mit devStateIcon spezifiziert hat:

  $icon = FW_iconName("$name.$state")   if(!$icon);           # lamp.Aus.png
  $icon = FW_iconName("$name.$rstate")  if(!$icon);           # lamp.on.png
  $icon = FW_iconName($name)            if(!$icon);           # lamp.png
  $icon = FW_iconName("$model.$state")  if(!$icon && $model); # fs20st.off.png
  $icon = FW_iconName($model)           if(!$icon && $model); # fs20st.png
  $icon = FW_iconName("$type.$state")   if(!$icon);           # FS20.Aus.png
  $icon = FW_iconName("$type.$rstate")  if(!$icon);           # FS20.on.png
  $icon = FW_iconName($type)            if(!$icon);           # FS20.png
  $icon = FW_iconName($state)           if(!$icon);           # Aus.png
  $icon = FW_iconName($rstate)          if(!$icon);           # on.png

Markus M.

Zitat von: rudolfkoenig am 27 Februar 2016, 15:37:15
Wo ist das denn spezifiziert?
Ich habe die "Iconfindung" zwar irgendwo schon dokumentiert, weiss aber nicht mehr wo, deswegen hier nochmal, direkt aus 01_FHEMWEB.pm, ich meine es ist auch so verstaendlich. Gilt nur dann, falls der Benutzer es nicht explizit mit devStateIcon spezifiziert hat:

Danke für die Stelle!
Ich bin nur drüber gestolpert als ich mir ein paar Icons gebaut habe und plötzlich alles damit zugepflastert war.
Finde ich in der aktuellen Version allerdings unschön, weil teilweise die State Information durch das Icon verborgen wird und ich zusätzlich noch ein ungültiges Icon definieren müsste, obwohl ich mir bereits explizit Gedanken über das stateFormat gemacht habe.

Was hältst du stattdessen hiervon?
  $icon = FW_iconName("$name.$state")   if(!$icon);           # lamp.Aus.png
  $icon = FW_iconName("$name.$rstate")  if(!$icon);           # lamp.on.png
  $icon = FW_iconName("$model.$state")  if(!$icon && $model); # fs20st.off.png
  $icon = FW_iconName("$type.$state")   if(!$icon);           # FS20.Aus.png
  $icon = FW_iconName("$type.$rstate")  if(!$icon);           # FS20.on.png
  $icon = FW_iconName($state)           if(!$icon);           # Aus.png
  $icon = FW_iconName($rstate)          if(!$icon);           # on.png
  if(!AttrVal($name, "stateFormat", undef)) {
    $icon = FW_iconName($name)            if(!$icon);         # lamp.png
    $icon = FW_iconName($model)           if(!$icon && $model); # fs20st.png
    $icon = FW_iconName($type)            if(!$icon);         # FS20.png
  }


Gruss, Markus
Aktuell weder Smarthome noch FHEM vorhanden

rudolfkoenig

ZitatWas hältst du stattdessen hiervon?
Wenig. Wenn du keine Icons willst, musst du devStateIcon mit .* und einem ungueltigen Icon definieren.