FHEM Forum

FHEM => Frontends => FHEMWEB => Thema gestartet von: MarcelK am 03 Februar 2016, 15:57:06

Titel: [PATCH] Dynamische Titel für FHEMWEB
Beitrag von: MarcelK am 03 Februar 2016, 15:57:06
Wenn ich was an FHEM bastle dann tendiere ich dazu viele Tabs gleichzeitig aufzumachen, nur hab ich dann das Problem dass alle immer gleich heissen und ich nix mehr finde:

(http://forum.fhem.de/index.php?action=dlattach;topic=48668.0;attach=45606;image)

Meine Idee ist hier ein minimal-invasiver Patch, der die bei FHEM gebräuchliche "Dinge in geschweiften Klammern sind Code" Maxime auf das globale Title Attribut erweitert:


   my $t = AttrVal("global", "title", "Home, Sweet Home");
+  if ($t =~ m/^{.*}$/s) {
+    $t = eval $t;
+  }


Dann kann ich das Attribut z.B. auf "{WebTitle()}" setzen und folgene Funktion in die 99_MyUtils pflanzen:


use vars qw($FW_detail);
use vars qw($FW_room);
use vars qw(%FW_webArgs);

sub WebTitle()
{
  my $t = "";

  if ($FW_detail) {
    $t = "Detail: $FW_detail";
  } elsif ($FW_room) {
    $t = "Room: $FW_room";
  } elsif (defined $FW_webArgs{cmd}) {
    if ($FW_webArgs{cmd} =~ m/style edit (.*)/s) {
      $t = "Edit: $1";
    } elsif ($FW_webArgs{cmd} =~ m/style save (.*)/s) {
      $t = "Saved: $1";
    } elsif ($FW_webArgs{cmd} =~ m/style list.*/s) {
      $t = "File list";
    } elsif ($FW_webArgs{cmd} =~ m/style eventMonitor.*/s) {
      $t = "Event monitor";
    } else {
      $t = $FW_webArgs{cmd};
    }
  } elsif (defined $FW_webArgs{file}) {
    $t = "Log: $FW_webArgs{file}";
  } elsif (%FW_webArgs && ((keys %FW_webArgs)[0] =~ m#dashboard/(.*)#s)) {
    $t = $1;
  } else {
    $t = "Home";
  }
  return $t;
}


Ergebnis:
(http://forum.fhem.de/index.php?action=dlattach;topic=48668.0;attach=45608;image)

Kommentare dazu? Falls angenommen kann ich das so auch gerne in der CommandRef bzw. im Wiki dokumentieren.

Besten Gruß, Marcel

Edit: WebTitle(): Besserer Support für log files
Edit: WebTitle(): Perl warning und shutdown restart Problem beseitigt
Edit: WebTitle(): "Event monitor" hinzugefügt
Titel: Antw:[PATCH] Dynamische Titel für FHEMWEB
Beitrag von: rudolfkoenig am 03 Februar 2016, 17:40:01
Habs uebernommen, kurz getestet, dokumentiert und eingecheckt.
Bei der Aenderung habe ich ein FHEMWEB eigenes title spendiert, was vor dem global Vorrang hat.
Titel: Antw:[PATCH] Dynamische Titel für FHEMWEB
Beitrag von: MarcelK am 03 Februar 2016, 20:41:15
Wow, prompter Service, vielen lieben Dank!
Titel: Antw:[PATCH] Dynamische Titel für FHEMWEB
Beitrag von: Markus M. am 03 Februar 2016, 22:46:30
Funktioniert, finde ich sehr sinnvoll.
Danke!
Titel: Antw:[PATCH] Dynamische Titel für FHEMWEB
Beitrag von: Icinger am 04 Februar 2016, 11:25:52
Funktioniert grundsätzlich super, finde ich auch sehr toll, ABER:

Die 99_myUtils wird scheinbar zu früh eingebunden, kann das sein?
Bei einem shutdown restart wird die dann deaktiviert:
2016.02.04 11:18:08 0: Server shutdown
2016.02.04 11:18:10 1: reload: Error:Modul 99_myUtils deactivated:
Global symbol "$FW_detail" requires explicit package name at ./FHEM/99_myUtils.pm line 45.
Global symbol "$FW_detail" requires explicit package name at ./FHEM/99_myUtils.pm line 46.
Global symbol "$FW_room" requires explicit package name at ./FHEM/99_myUtils.pm line 47.
Global symbol "$FW_room" requires explicit package name at ./FHEM/99_myUtils.pm line 48.

2016.02.04 11:18:10 1: Including fhem.cfg
Subroutine myUtils_Initialize redefined at ./FHEM/99_myUtils.pm line 34, <$fh> line 9.
2016.02.04 11:18:10 1: reload: Error:Modul 99_myUtils deactivated:
Global symbol "$FW_detail" requires explicit package name at ./FHEM/99_myUtils.pm line 45, <$fh> line 9.
Global symbol "$FW_detail" requires explicit package name at ./FHEM/99_myUtils.pm line 46, <$fh> line 9.
Global symbol "$FW_room" requires explicit package name at ./FHEM/99_myUtils.pm line 47, <$fh> line 9.
Global symbol "$FW_room" requires explicit package name at ./FHEM/99_myUtils.pm line 48, <$fh> line 9.

2016.02.04 11:18:10 3: telnetPort: port 7072 opened
2016.02.04 11:18:10 3: WEB: port 8083 opened
2016.02.04 11:18:10 3: WEBphone: port 8084 opened
2016.02.04 11:18:10 3: WEBtablet: port 8085 opened
2016.02.04 11:18:11 2: eventTypes: loaded 5023 events from ./log/eventTypes.txt
2016.02.04 11:18:11 1: HMLAN_Parse: HM1 new condition disconnected
2016.02.04 11:18:11 3: Opening HM1 device 192.168.1.17:1000


Sobald ich nach dem Restart einmal auf "Edit files...." gehe und 99_myUtils.pm" öffne und wieder speichere, läufts ohne Probleme durch.

Irgendjemand ne Idee, wie man das umgehen kann?

lg, Stefan
Titel: Antw:[PATCH] Dynamische Titel für FHEMWEB
Beitrag von: MarcelK am 04 Februar 2016, 15:40:55
Zitat von: Icinger am 04 Februar 2016, 11:25:52
Funktioniert grundsätzlich super, finde ich auch sehr toll, ABER:

Die 99_myUtils wird scheinbar zu früh eingebunden, kann das sein?
Bei einem shutdown restart wird die dann deaktiviert:
Ah tatsächlich. Weiß nicht ob's da noch ne bessere Lösung gibt, aber ich schalte "strict" jetzt in meinem Beispiel oben vor der Funktion aus, das behebt das Problem hier. Hab gleichzeitig auch noch ein paar Warnings beseitigt.

Gruß Marcel
Titel: Antw:[PATCH] Dynamische Titel für FHEMWEB
Beitrag von: justme1968 am 04 Februar 2016, 18:21:19
use vars qw($FW_detail);
use vars qw($FW_room);

sollte helfen.

gruss
  andre
Titel: Antw:[PATCH] Dynamische Titel für FHEMWEB
Beitrag von: MarcelK am 04 Februar 2016, 19:53:56
Zitat von: justme1968 am 04 Februar 2016, 18:21:19
use vars qw($FW_detail);
use vars qw($FW_room);

sollte helfen.
Ah, das gefällt mir viel besser, danke. Code angepasst.

Gruß Marcel
Titel: Antw:[PATCH] Dynamische Titel für FHEMWEB
Beitrag von: dirkbalzer am 04 Februar 2016, 21:01:30
Ah super genau sowas habe ich noch gesucht!
Bei mir gibt es nach dem Neustart allerdings immer noch eine Warnung in der Logdatei:
2016.02.04 20:53:32 1: PERL WARNING: Use of uninitialized value in pattern match (m//) at ./FHEM/99_myUtils.pm line 81.

Die Zeile 81 meiner 99_myUtils entspricht dieser aus dem Script im ersten Post:
  } elsif (((keys %FW_webArgs)[0]) =~ m#dashboard/(.*)#s) {
Titel: Antw:[PATCH] Dynamische Titel für FHEMWEB
Beitrag von: MarcelK am 04 Februar 2016, 21:16:25
Zitat von: dirkbalzer am 04 Februar 2016, 21:01:30
Ah super genau sowas habe ich noch gesucht!
Bei mir gibt es nach dem Neustart allerdings immer noch eine Warnung in der Logdatei:
Danke, ich hab den Code aktualisiert.

Gruß Marcel
Titel: Antw:[PATCH] Dynamische Titel für FHEMWEB
Beitrag von: Markus am 05 März 2016, 16:46:17
Danke hab es geklaut 8)

Gruß Markus
Titel: Antw:[PATCH] Dynamische Titel für FHEMWEB
Beitrag von: P-terrible am 06 August 2017, 21:27:16
Ganz ohne 99_MyUtils funktioniert auch

attr WEB title { if ($FW_detail) { $FW_detail } else { $FW_room } }
Titel: Antw:[PATCH] Dynamische Titel für FHEMWEB
Beitrag von: Fixel2012 am 06 August 2017, 21:46:39
Zitat von: P-terrible am 06 August 2017, 21:27:16
Ganz ohne 99_MyUtils funktioniert auch

attr WEB title { if ($FW_detail) { $FW_detail } else { $FW_room } }

Nette Sache. Nachteil ist allerdings, dass der Event Monitor Beispielsweise nicht angezeigt wird. Das ist in dem 99_MyUtils Code im Gegensatz der Fall.
Titel: Antw:[PATCH] Dynamische Titel für FHEMWEB
Beitrag von: nicor2k am 02 Oktober 2017, 11:19:59
Moin!

Ich habe den Code aus Antwort 11 mal ergänzt und eine kleine Kurz-Anleitung dazu geschrieben:
https://www.computerhilfen.de/info/fhem-raum-name-infos-im-browser-titel-zeigen-statt-home-sweet-home.html

Mit diesem Wert für den Title wird entweder der Name des Raumes angezeigt oder das Device - oder Alternative wieder "Home, Sweet Home":

{ if($FW_room) { "FHEM: $FW_room" } elsif($FW_detail) { "FHEM: $FW_detail" } else { "Home, Sweet Home" } }

Das lässt sich jetzt natürlich noch mit weiteren elsifs erweitern, wenn man noch mehr Variablen aus dem ersten Post hier übernehmen und abfragen möchte!
Titel: Antw:[PATCH] Dynamische Titel für FHEMWEB
Beitrag von: justme1968 am 02 Oktober 2017, 13:08:23
wäre das im wiki nicht besser aufgehoben als auf einer 'fremden' webseite?

gruss
  andre