patch zum sortieren der raum links

Begonnen von justme1968, 27 Dezember 2013, 13:46:56

Vorheriges Thema - Nächstes Thema

justme1968

anbei ein kleiner patch der es erlaubt die links zu den räumen auf der linken seite zu sortieren.

attr WEB sortRooms DG OG EG Keller

sortRooms gibt die reihenfolge der räume vor, alles was nicht in der liste auftaucht wird wie gehabt alphabetisch sortiert und nach den in der liste definierten eingefügt.

noch schöner wäre es wenn man räumen (und gruppen) auch attribute verpassen könnte. dann könnte man dort auch mit sortby arbeiten und z.b. auch einen alias vergeben der dann angezeigt wird und so z.b. auch einrücken.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Loredo

Super!  :-*


Bin dafür das ins SVN zu übernehmen.
Natürlich wäre etwas analog zu sortby nochmal deutlich schöner  ;)
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

hexenmeister

Ich schliesse mich an, super Sache!
Dann könnte ich endlich die lästigen Nummers aus den Room-Namen wegwerfen.  8)
Mit dem Attribut an Räumen wäre das natürlich sauberer, wenn es denn diese Objekte gäbe...

rudolfkoenig


justme1968

danke für das schnelle einchecken.

in dem patch oben fehlt noch eine zeile damit es auch für mehr als 9 räume funktioniert.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Loredo

Lässt sich das auch noch auf die Gruppen erweitern?
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

rudolfkoenig


hexenmeister

Funktioniert gut, danke!

Gibt es eigentlich eine Regel für Listen, ob diese Space- oer Komma-separiert werden?


hexenmeister

Was mir jetzt noch aufgefallen ist: Wenn im Raumnamen Klammer verwendet werden (runde oder eckige, geschweifte jedoch nicht), dann wird dieser Raum immer unten einsortiert, mit oder ohne sortRooms.

justme1968

#9
das liegt daran das zum suchen eine regex verwendet wird. wenn du in der liste die klammer durch einen . ersetzt sollte es gehen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

hexenmeister


Martin Fischer

hallo andre,

vorweg: sehr gute idee. das fehlte schon lange und scheinbar ist da keiner drauf gekommen ;-)

ich habe das heute mal getestet. da ich zur zeit (schon seit längerem) sowohl privat als auch beruflich sehr stark eingebunden bin, finde ich keine zeit das ggf. selber zu ändern. daher hier mal ein feedback, bzw. eine anregung:

als ich das attribut zum testen gesetzt hatte, mussten ich feststellen, dass es bei mir nicht so funktioniert wie es gedacht ist. das liegt daran, das alle meine räume leerzeichen enthalten. also z.b. "DG Speicher", "EG Esszimmer", "EG Wohnzimmer", "KG Keller 1", "KG "Keller 2", "OG Wohnzimmer", "OG Flur", etc. um nur mal ein paar räume aufzuzählen (ings. > 20 räume, bzw. zonen wie z.b. "GR Hof", "GR Garten", usw).

anfangs hatte ich das attribut so verstanden, das ein "DG OG EG KG" usw. auf obige räume "greifen" müsste.

ein kurzer blick in den quellcode erklärt warum das nicht funktioniert:
my ($index) = grep { $arr->[$_] =~ /^$v$/ } 0..$#$arr;

ein vorschlag von mir:
my ($index) = grep { $v =~ /^$arr->[$_]/ } 0..$#$arr;
würde dafür sorgen, dass das regexp aus "sortRooms" (anders) greift. man hätte somit neben deinem beispiel "DG OG EG KG" auch nach "A S Haus DG OG EG KG" sortieren zu lassen. somit würden alle räume die mit "A", wie "AUTOCREATE" oder "AlarmControlUnit" und räume die mit "S" wie "Server" gefolgt von "Haus" und dann alle räume die mit "DG", "OG", "EG, "KG" gefolgt von der standardsortierung (%FW_rooms) gelistet werden.

allerdings bestünde bei obiger änderung noch das problem der sortierung innerhalb des jeweiigen regexp, also z.b. "OG Wohnzimmer", "OG Esszimmer", "OG Flur", etc. würde zwar richtig in der reihenfolge von "A S Haus DG OG EG KG" sortiert werden, aber innerhalb der "OG"-räume eben nicht.

hier müsste man nochmal an den "compare" dran.

meinungen dazu?

viele grüße
martin

p.s.: bitte keine diskussion lostreten ala "räume mit leerzeichen" sind problematisch. ;-)
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

justme1968

wenn du die leerzeichen jeweils mit . angibst sollte es auch in der aktuellen version gehen. also:attr WEB sortRooms DG.Speicher EG.Esszimmer EG.Wohnzimmer

da auch bei der von dir vorgeschlagenen version das problem mit der sortierung innerhalb jeder regexp gibt es glaube ich keinen wirklichen vorteil. wenn man die sortierung genau vorgeben möchte muss die vorgabe eindeutig genug sein. wenn dir die vorgabe auf stockwerk ebene reicht geht aber mit der aktuellen version auch: attr WEB sortRooms DG.* OG.* EG.*natürlich mit dem gleichen fehlenden sortierung auf der zweiten ebene.

die eigentlich 'richtige' und komplette lösung ist meiner meinung nach immer noch attribute auch für räume und gruppen zu haben. dann könnte man wie bei den devices auch ein sortBy verwenden und es würde noch einige andere raum und gruppen abhängigen konfigurationen erlauben.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Martin Fischer

Zitat von: justme1968 am 12 Januar 2014, 18:55:39
attr WEB sortRooms DG.* OG.* EG.*
es geht nicht. zumindest nicht bei mir. du kannst es gerne nachstellen.

Zitat von: justme1968 am 12 Januar 2014, 18:55:39
wenn du die leerzeichen jeweils mit . angibst sollte es auch in der aktuellen version gehen. also:attr WEB sortRooms DG.Speicher EG.Esszimmer EG.Wohnzimmer
das ist mir klar und das habe ich auch nicht in frage gestellt.

ich für meinen teil halte meine "anregung" für praktikabler, da man dann nicht eine auflistung von (in meinem fall) >20 räumen als attribut angeben muss. ABER: eine "gute" und eine "bessere" lösung gibt es in diesem falle nicht und sollte es auch nicht darstellen. wie ich bereits schrieb sollte es ein feedback, bzw. eine anregung sein.

gruß
martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

justme1968

hallo martin,

du hast recht. das geht natürlich nicht. ich hatte noch meine ersten versuche im kopf. da war das in der von dir vorgeschlagenen reihenfolge. ich weiss gar nicht mehr warum ich es dann rumgedreht hatte. ich hab nicht aufpasst..

es sollte also wirklich bessermy ($index) = grep { $v =~ /^$arr->[$_]/ } 0..$#$arr;odermy ($index) = grep { $v =~ /^$arr->[$_]$/ } 0..$#$arr;sein. das erste spart zwei zeichen das zweite wäre glaube ich mehr fhem konform.

die komplette version könnte so aussehen:
sub
FW_roomIdx(\@$)
{
  my ($arr,$v) = @_;
  my ($index) = grep { $v =~ /^$arr->[$_]$/ } 0..$#$arr;

  if( !defined($index) ) {
    $index = 9999;
  } else {
    $index = sprintf( "%03i", $index );
  }

  return "$index-$v";
}

damit wird dann auch innerhalb jeder gruppe die auf den gleichen index sortiert wird automatisch alphabetisch sortiert.

das 'richtig' war weder kritik noch abwertung deines vorschlags. sondern bezog sich auf den anfang des threads ganz oben und den wunsch auch gruppen zu sortieren. das ist inzwischen schon ein paar mal aufgetaucht.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968