FHEM Forum

FHEM => Frontends => FHEMWEB => Thema gestartet von: Happy Fhem User am 04 Mai 2014, 11:09:59

Titel: Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: Happy Fhem User am 04 Mai 2014, 11:09:59
Weil ich gerade Oberflächen-Spielereien mache, bin ich darüber gestolpert, dass sich die Groups nicht innerhalb einer Zeile sortieren lassen. Mittels dem Attribut "column" in der Fhemweb-Instanz kann man schön die Gruppen nacheinander sortieren, aber halt nicht in der selben "Zeile".

Hier der Patch gegen die frische FHEMWEB aus dem SVN der diese Sortierung mit berücksichtigt:


--- 01_FHEMWEB.pm 2014-05-04 11:00:13.990874429 +0200
+++ patched/01_FHEMWEB.pm 2014-05-04 11:02:13.437675801 +0200
@@ -1232,7 +1232,7 @@
     FW_pO "<td><table class=\"column tblcol_$col\">" if($maxc != -1);

     # iterate over the distinct groups 
-    foreach my $g (sort keys %group) {
+    foreach my $g (sort { ($maxc==-1)?($a cmp $b):( ($columns->{$a}?$columns->{$a}:99) <=> ($columns->{$b}?$columns->{$b}:99) ) } keys %group) {

       next if($maxc != -1 && (!$columns->{$g} || $columns->{$g} != $col));



Wäre schön, wenn dieser den Weg in die offizielle Version findet ;-)
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: mi.ke am 04 Mai 2014, 23:28:50
mal ne Frage dazu . . . .

Ich habs in meine 01_FHEMWEB.pm eingebaut. Und es wird auch sortiert.
Allerdings nicht nach Reihenfolge, sondern . . . eher willkürlich...

Vielleicht hab ich's ja auch falsch verstanden...

attr web column Raumname:gruppe1,Gruppe2,Gruppe3,Gruppe1
ergibt vor dem Patch:
      Gruppe1 
      Gruppe2
      Gruppe3
      gruppe1

Nach dem Patch:
attr web column Raumname:Gruppe1,Gruppe2,Gruppe3,gruppe1
ist die Ausgabe durcheinander.....


Ich hatte gehofft, das die Änderung folgendes bewirken würde.
attr web column Raumname:gruppe1,Gruppe2,Gruppe3,Gruppe1
Ausgabe:
          gruppe1
          Gruppe2
          Gruppe3
          Gruppe1

Cheers

Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: rudolfkoenig am 05 Mai 2014, 16:38:05
Ich warte dann solange, bis hier Klarheit herrscht :)
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: Happy Fhem User am 06 Mai 2014, 19:51:43
Mea Culpa, das brauchte doch ein paar Zeilen mehr. Die Sub-Routine "FW_parseColumns" muss geändert werden und leider ändert sich auch das Rückgabe-Format der Funktion (von Hash of Integer zu Hash of Array[0..1] of Integer). Ein Grep nach der Funktion hat keine weiteren Fundstellen bei mir im Sourcecode gefunden - bei mir wird sie also nur lokal in der 01_FHEMWEB genutzt.

Hier der zumindestens bei mir funktionierende Patch:


--- 01_FHEMWEB.pm 2014-05-04 11:00:13.990874429 +0200
+++ patched/01_FHEMWEB.pm 2014-05-06 19:44:29.250754096 +0200
@@ -1232,9 +1232,9 @@
     FW_pO "<td><table class=\"column tblcol_$col\">" if($maxc != -1);

     # iterate over the distinct groups 
-    foreach my $g (sort keys %group) {
+    foreach my $g (sort { ($maxc==-1)?($a cmp $b):( ($columns->{$a}?$columns->{$a}->[0]:99) <=> ($columns->{$b}?$columns->{$b}->[0]:99) ) } keys %group) {

-      next if($maxc != -1 && (!$columns->{$g} || $columns->{$g} != $col));
+      next if($maxc != -1 && (!$columns->{$g} or $columns->{$g}->[1] != $col));

       #################
       # Check if there is a device of this type in the room
@@ -1325,8 +1325,9 @@
     next if($room ne $FW_room);
     $colNo = 1;
     foreach my $groups (split(/\|/,$groupcolumn)) {
+      my $lineNo=1;
       foreach my $group (split(",",$groups)) {
-        $columns{$group} = $colNo;
+        $columns{$group} = [$lineNo,$colNo];
       }
       $colNo++;
     }
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: KernSani am 26 Februar 2015, 23:00:00
Hi,

ist zwar alt aber immernoch aktuell... Ich habe den patch gerade ausprobiert (01_FHEMWEB.pm 8058 2015-02-21 19:55:09Z rudolfkoenig ) funktioniert mit einer kleinen Anpassung in der Sub FW_ParseColumns:

   foreach my $groups (split(/\|/,$groupcolumn)) {
+   my $lineNo=1;
      foreach my $group (split(",",$groups)) {
        $group =~ s/%20/ /g; # Forum #33612
-        $columns{$group} = $colNo;
+ $columns{$group} = [$lineNo,$colNo];
+ $lineNo++;
      }
      $colNo++;
    }


Noch lieber wäre mir allerdings eine sortGroups attribut :-)

Grüße,

Oli
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: Andi291 am 02 März 2015, 20:11:20
Hallo zusammen,

habe den Patch auch übernommen. Funktioniert im Prinzip, ABER:

1. Räume mit Leerzeichen werden nicht erkannt (der Workaround mit "Flur.EG" funktioniert leider nicht).
2. Auch Gruppen mit Sonderzeichen werden einfach nicht übernommen. Auch hier helfen keine Wildcards.

Ich habe schon selbst einige Versuche unternommen, kriege das Problem aber nicht gelöst. Kann mir bitte jemand helfen?

Zweite Frage: Hat der Patch Chancen, eingecheckt zu werden?
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: Loredo am 21 März 2015, 19:53:48
Hi,


inzwischen hat Rudi ja bereits einen Patch für die Nutzung von Leerzeichen in Gruppennamen eingecheckt (einfach Leerzeichen durch %20 ersetzen).
Wie sieht es mit diesem Patch aus, könnten wir den leicht angepasst nun übernehmen, damit auch die Reihenfolge stimmt?




Gruß
Julian
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: rudolfkoenig am 22 März 2015, 13:06:41
Hab den Patch getestet und eingecheckt.
Weiterhin in der Doku erwaeht, dass man mit diesem Attribut die Gruppen auch dann sortieren kann, wenn man nur eine Spalte hat.
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: FunkOdyssey am 22 März 2015, 14:05:43
Danke für dieses Feature.
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: KernSani am 22 März 2015, 21:07:29
Vielen Dank.

Nun wäre es noch schön, wenn auch Leerzeichen in Raumnamen verwendet werden könnten. %20 scheint da keinen Effekt zu haben.

Danke,

Oli
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: Loredo am 22 März 2015, 23:25:43
Danke, Rudi!


@KernSani: Wir sprechen hier ja von der Sortierung der Gruppen durch das Attribut "column" und dort funktioniert %20 für Leerzeichen. Räume sind ein ganz anderes Thema, dafür ist das Attribut sortRooms da. Dort funktionieren keine Leerzeichen. Soweit ich mich erinnere machen Leerzeichen aber auch woanders immer mal Ärger. Glaube deshalb gilt noch immer die Empfehlung keine Leerzeichen in Räumen zu verwenden.
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: KernSani am 23 März 2015, 06:25:02
Hi Julian,
ich weiss, das Leerzeichen böae sind, aber Kind, Brunnen usw... Ich meine hier konkret die Verwendung von rooms mit Leerzeichen innerhalb des column attributs. 
SortRooms funktioniert wunderbar mit regex (KG.',EG.',OG.',DG.' sortiert mir meine Räume wunderbar). Sowas in der Art wäre für column auch cool.
Grüße,
Oli
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: rudolfkoenig am 23 März 2015, 10:09:58
Danke fuer den Hinweis auf regexp in sortRooms, habs ganz vergessen, aber jetzt dokumentiert.
Da Regexp fuer column aufwendiger waere, habe ich hier nur %20 durch das Leerzeichen ersetzt, und dokumentiert.
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: Andi291 am 23 März 2015, 11:02:21
Guten Morgen,

danke fürs Einbauen des %20.

Könnten Sie bitte den o.g. Patch auch übernehmen? Ist bei mir seit ein paar Wochen im Einsatz (ohne Probleme). Auch die aktuelle Version in Verbindung mit dem o.g. Patch scheint sauber zu funktionieren.

Wäre eine nette Hilfe :-P

Danke!!
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: KernSani am 24 März 2015, 22:29:56
Danke Rudi,
%20 funktioniert jetzt auch wunderbar in Räumen. Damit kann ich zumindest auf dem WaF-Web was machen ;-)
Richtig glücklich wäre ich aber glaube ich erst, wenn es ein sortGroups-Attribut gäbe (nach dem Motto: Licht und Rollladen kommen in jedem Raum ganz oben, danach der ganze Rest)

Grüße,

Oli
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: rudolfkoenig am 24 März 2015, 22:38:52
Was koennte man mit sortGroup machen, was mit column nicht geht?
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: KernSani am 24 März 2015, 22:49:37
Ich würde es nur einmal pro FHEMWEB-Instanz pflegen (nicht für jeden Raum) und es würden die sortierten Gruppen zuerst kommen, dann alle anderen. So hätte ich die wichtigen Sachen oben und die übrigen trotzdem im Zugriff.
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: Xcoder am 20 August 2016, 14:00:43
Hallo,

Habe bemerkt, dass wenn das column Attribut gesetzt ist, nur noch die Gruppen angezeigt werden, die auch im column Attribut aufgeführt sind. Habe mir gerade einen Wolf gesucht, weil ein neues Gerät in einem Raum nicht aufgetaucht ist.

Gruss, Xcoder
Titel: Antw:Patch 01_FHEMWEB: sort groups by column spec
Beitrag von: KernSani am 20 August 2016, 14:12:52
Ja, wäre schön, wenn man mit RegExp o.ä. arbeiten könnte group1,group2,.*würde erst die sortierten Gruppen, dann alle anderen bringen