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 ;-)
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
Ich warte dann solange, bis hier Klarheit herrscht :)
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++;
}
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
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?
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
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.
Danke für dieses Feature.
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
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.
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
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.
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!!
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
Was koennte man mit sortGroup machen, was mit column nicht geht?
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.
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
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