update readingsGroup: sortierbarkeit

Begonnen von justme1968, 12 Dezember 2016, 18:24:39

Vorheriges Thema - Nächstes Thema

justme1968

ich habe eben den ersten teil eines updates eingecheckt mit dem es möglich ist eine readingsGroup sortierbar zu machen. das update enthält folgende neue möglichkeiten:

  • neues attribut sortColumn

    • wenn es auf -1 gesetzt ist wird nicht automatisch sortiert sondern erst nach einem klick auf einen spalten header.
    • wenn es auf einen wert >= 0 gesetzt ist wird die readingsGroup direkt automatisch nach dieser spalte sortiert, die spalte nach der sortiert wird lässt sich mit klick auf den spalten header ändern.
  • neues schlüsselwort <tfoot>
    alles zeilen nach diesem schlüsselwort zählen als tabellen footer und werden nicht mit sortiert. das ist z.b. für summen zeilen am ende einer tabelle sinnvoll.
    achtung: das schlüsselwort sollte für sich alleine stehen und nicht mitten in einer readings liste.

was aktuell (noch) nicht geht bzw. noch kommt:

  • bestimmte spalten vom sortieren ausschliessen
  • automatisch neu sortieren nach longpoll update geht inzwischen
  • automatisch neu berechnen nach dem sortieren
  • das neu einfärben des zeilen hintergrundes

unten ist ein beispiel mit dem man testen kann. und an dem man die aktuellen einschränkungen sieht.

gruss
  andre

define t1 dummy
attr t1 room rg
attr t1 setList state:slider,-10,1,30
attr t1 webCmd state
define t2 dummy
attr t2 room rg
attr t2 setList state:slider,-10,1,30
attr t2 webCmd statedefine t3 dummy
attr t3 room rg
attr t3 setList state:slider,-10,1,30
attr t3 webCmd state

define rg readingsGroup <>,<value>,<sum>,<min>,<max>,<avg>\
t\d:+NAME,state,$sum(1..$ROW:2),$min(1..$ROW:2),$max(1..$ROW:2),$avg(1..$ROW:2)\
<tfoot>\
<hr>\
rg:<>,$scalar,$sum(:3)@SUM,$min(:2)@MIN,$max(:2)@MAX,$avg(:2)@AVG\
<hr>\
t1:<t1,t2,t3>,state,state@t2,state@t3,$sum($ROW:2..4)@SUM,$count(/\d/)(2..$ROW-4:2)\

attr rg nonames 1
attr rg room rg
attr rg style style='text-align:center'
attr rg sortColumn -1
attr rg valueFormat { 'avg' => '%.2f', 'AVG' => '%.2f' }
attr rg valuePrefix { 'rg.scalar' => '#', 'rg.SUM' =>'&Sigma;; ', 'rg.MIN' =>'Min: ', 'rg.MAX' =>'Max: ', 'rg.AVG' =>'&empty;; ', 'rg.count' => '#: ' }
attr rg valueSuffix { state => '&deg;;C' }

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

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

justme1968

#1
update: ab heute morgen sollte das automatische neu sortieren nach einem longpoll update funktionieren.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

ToKa

Wow, super vielen Dank für die Erweiterung!
Hatte schon den ganzen Abend nach sowas im Forum und Wiki gesucht...
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

BooStar

#3
Hallo zusammen,

ich bin noch relativ neu in Fhem und von daher erstmal vielen Dank für diese sehr umfangreiche Software. Nun zu meinem Problem, welches hier glaube ich ganz gut reinpasst...
Ich hole mir via HTTPMOD die Hochwasser Zeiten der Hamburger Elbe:


define getTide HTTPMOD none 43200 #12h
attr getTide userattr get01JSON get01Name get01Poll:0,1 get01PollDelay get01PollDelay:0,1 get02JSON get02Name get02Poll:0,1 getHeader1 getHeader2 getURL
attr getTide get01JSON Hamburg
attr getTide get01Name Hamburg
attr getTide get01Poll 1
attr getTide get02JSON Geesthacht
attr getTide get02Name Geesthacht
attr getTide get02Poll 1
attr getTide getHeader1 Content-Type: application/json
attr getTide getHeader2 Accept: */*
attr getTide getURL http://192.168.10.2:8083/fhem/usr/tides.json
attr getTide room Readings


Leider bekomme ich die Werte nicht anständig sortiert vorgesetzt und muss sie deshalb von FHEM sortieren lassen, meine ReadingsGroup für die Zeiten sehen so aus:
define HW_Hamburg readingsGroup <HW_Hamburg>\
getTide:Hamburg.*
attr HW_Hamburg nonames 1
attr HW_Hamburg notime 1
attr HW_Hamburg room Readings
attr HW_Hamburg sortColumn 0

und die Tabelle so (die Tabelle hat nur eine Spalte):
HW_Hamburg
Mi. 2016-12-14 - 11:31 NW (0.2m)
Mi. 2016-12-14 - 23:52 NW (0.2m)
Mi. 2016-12-14 - 04:12 HW (4.1m)
Mi. 2016-12-14 - 16:34 HW (4.1m)


Dank dem neuen sortColumn kann ich die Werte nun manuell sortieren wie ich sie eingentlich auch sehen will:
HW_Hamburg
Mi. 2016-12-14 - 04:12 HW (4.1m)
Mi. 2016-12-14 - 11:31 NW (0.2m)
Mi. 2016-12-14 - 16:34 HW (4.1m)
Mi. 2016-12-14 - 23:52 NW (0.2m)


Meine Frage ist jetzt, wie bekomme ich es hin, dass die Tabelle immer so sortiert ist, also auch nach einen Refresh, Neustart, oder Logpoll durch FHEM?
"attr HW_Hamburg sortColumn -1"  oder "sortby" haben hier leider keinen Effekt.

Vielen Dank und schönen Gruß

BooStar

justme1968

sortColumn nicht auf -1 setzen sondern auf die nummer der spalte nach der sortiert werden soll.

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

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

BooStar

#5
Hi,
es ist egal ob ich -1,0, oder 1 setze, nach einem Refresh ist die Tabelle immer unsortiert.
//edit: Achja... ein Update habe ich heute gemacht...

justme1968

bitte ändere mal im file .../www/pgm2/fhemweb_readingsGroup.js in zeile 21 die 10 in eine 500 oder 1000 und schau ob es dann geht. browser cache löschen nicht vergessen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

BooStar

Jau... cool.. mit 500 klappts... DANKE! kann man die Sortierreihnfolge auch umkehren?

justme1968

in der eingecheckten version noch nicht. mit dem nächsten update vermutlich schon. es kann aber sein das sie die spalten nummern dann noch mal ändern.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

BooStar

OK, Danke für die Rückmeldung.. ich werde das hier weiter beobachten.
Aber sag mal.. ist setCloum die einzige Möglichkeit eine ReadingsGroup zu sortieren? was mach denn sortby ?
Hintergrund meiner Frage ist, das ich eigentlich nur die Tabelle angezeigt haben möchte, der kleine "Sortierpfeil (▾)" ist eigentlich nicht nötig, oder kann man den gar irgendwie ausblenden ?





justme1968

sortby ist generell dazu da im fhemweb die geräte in der raum ansicht zu sortieren. readingsGroup kann da attribut auch verwenden um die zeilen nach den device namen zu sortieren. diese device namen müssen hinterher nicht mehr in der readingsGroup sichtbar sein. diese sortierung ist statisch.

mit sortFn kann man nach reading namen sortieren wenn ein device viele ähnlich aufgebaute readings hat wie z.b. das nmap oder ubiquity modul. diese sortierung ist ebenfalls statisch.

sortColumn sortiert nach readings werten. diese sortierung ist dynamisch und kann sich ändern wenn sich readings ändern.

das ausblenden der pfeile kommt noch.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

BooStar

Klasse...
Zitatdas ausblenden der pfeile kommt noch.
Wenn dann noch irgendwann die Sortierreihnfolge kommt, habe ich meine Lösung, Danke!

justme1968

ab morgen kannst du die Sortierreihenfolge umdrehen wenn die die spalte im sortColumn attribut mit einem negativen vorzeichen angibst. achtung: die zählweise hat sich geändert und beginnt jetzt bei 1.

die pfeile kannst du jetzt schon ausblenden in dem du in css file deines styles das hier einfügst:
table.sorttable span#sorttable_sortrevind, span#sorttable_sortfwdind { display: none; }

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

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

BooStar

vielen Dank! Funktioniert alles wie es soll....

mi.ke

Hallo Andre.

Bei der Sortierung nach Spalten (sortColumn) scheint es bei 1-stelligen Zahlenwerten zu Problemen zu kommen.

Folgendes Konstrukt:

Attributes:
sortColumn 2
valueFormat {moisture => "%.0f %%"}


Hier scheint nach der ersten Stelle sortiert zu werden, da aber die führende Null fehlt, wird folgendermaßen sortiert:

0
1
11
79
8
9



Gibt es da einen Trick der Abhilfe schafft?
Gruß und Danke
mi.ke
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

Reinerlein

Hi Andre,

die Möglichkeit klingt super, auch wenn ich sie jetzt erst entdeckt habe :)

Könntest du Analog zu "<tfoot>" noch ein "<thead>" ermöglichen, ab dessen Vorkommen überhaupt erst sortiert wird?
Bei meinen Readingsgroups gibt es fast immer einen Header mit trennender Linie darunter (genauso wie einen Footer mit Linie abgetrennt). Damit kann ich das auch direkt auf Oberflächen wie TabletUI einbinden, und habe eine nette Optik (zumindest für mich) :).

Ich habe das mal versucht, aber es wird immer die obere Trennlinie mit sortiert :)

Außerdem wird vor dem Pfeil immer umgebrochen, sodass der Pfeil unter dem Titelwort steht. Kann ich das mit einem Style anpassen?

Danke schon mal...

Grüße
Reiner

Reinerlein

Hi Andre,

was mir noch aufgefallen ist:
Wenn ich nach einer Spalte sortiert habe, werden die im Fußbereich stehenden Summen nicht per longpoll aktualisiert.
Nach einem Seiten-Reload wird die Summe wieder korrekt angezeigt.

Da scheint etwas mit den Longpoll-FeldIDs schief zu gehen, wenn die dargestellte Reihenfolge wegen der Sortierung verändert wurde...
Das habe ich aber noch nicht weiter untersucht, sondern nur bemerkt. Vielleicht kannst du es ja nachstellen :)

Grüße
Reiner

mi.ke

Zitat von: mi.ke am 04 Mai 2017, 11:19:52
Bei der Sortierung nach Spalten (sortColumn) scheint es bei 1-stelligen Zahlenwerten zu Problemen zu kommen.

Ich denke, hab 'ne Lösung in Perl gefunden, aber für einen Patch-Vorschlag reicht mein Perl nicht aus.

IST:

@Test=(1..20);
sort(@Test));


SOLL:

@Test=(1..20);
sort{$a<=>$b}(@Test));


@justme1968
Bin ich da auf dem richtigen Weg?
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

mi.ke

so, hatte mit einem anderen Readings die Erkenntnis, das es funktioniert.

sobald aber die Einheiten drangehängt werden, sortiert es wieder nicht richtig.
valueFormat {moisture => "%.0f %%"}

Ohne valueFormat einwandfrei
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

justme1968

#19
sorry für die späte antwort...

@Reinerlein: <thead> wird automatisch über das headerRows attribut gesteuert.

das problem mit dem nicht aktualisieren kann ich nicht reproduzieren. mein standard test beispiel ganz oben aus dem ersten post zeigt das problem nicht. kannst du mal damit testen bzw. ein beispiel posten bei dem es passiert?

@mi.ke: das sortieren passiert komplett auf javascript seite im browser. d.h. auf perl seite etwas zu ändern hilft nichts. der sorttable javascript code versucht den spalten typ anhand des ersten zeichens zu erkennen. das ist leider nicht 100% sicher und scheint gerade bei denen daten schief zu gehen. im prinzip kann man den daten typ einer spalte auch von aussen fest vorgeben. das geht aber aus der readingsGroup nicht.

man kann aber über ein 'missbrauchtes' valueColumns attribut für dieses reading { "sorttable_customkey='$NUM'"} einen workaround bauen. damit wird einer tabellen zelle direkt der numerische teil des readings als key zugeordnet.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Reinerlein

Hi Andre,

hmm, das mit der fehlenden Longpoll-Aktualisierung konnte ich jetzt auch nicht mehr nachstellen... sorry dafür... war wahrscheinlich eine komische Konstellation...

Aber zum Header: wenn ich das Attribut "headerRows" auf 2 setze (Eine Textzeile und ein <hr> als Kopf), dann erhalte ich sofort beim Aufruf der Seite die Fehlermeldung aus dem Screenshot 1.
Wenn ich dort eine 1 eintrage, sortiert er das <hr> wieder mit.

Hier mal das Define des Devices:

defmod heizung_Sammler_Stellventile readingsGroup <Name>,<Modus>,<Wunschtemperatur>,<Ventilstellung> <hr> type=HeatingThermostat:mode,desiredTemperature,valveposition <tfoot> <hr> heizung_Sammler_Stellventile:<Max.&nbsp;;Ventilstellung>,<>,<>,$max(:3)@ventilmax
attr heizung_Sammler_Stellventile userattr event-on-change-reading
attr heizung_Sammler_Stellventile alias Heizung Stellventile
attr heizung_Sammler_Stellventile alwaysTrigger 2
attr heizung_Sammler_Stellventile group 1. Grundsätzliches
attr heizung_Sammler_Stellventile nameStyle style="font-weight: bold;; text-align: left;;"
attr heizung_Sammler_Stellventile room Heizung
attr heizung_Sammler_Stellventile sortColumn 4
attr heizung_Sammler_Stellventile valueFormat { 'desiredTemperature.on' => "on", 'desiredTemperature.off' => "off", 'desiredTemperature.comfort' => "comfort", 'desiredTemperature.boost' => "boost", 'desiredTemperature.eco' => "eco", desiredTemperature => "%.1f °C", valveposition => "%i %%", ventilmax => "%i %%" }
attr heizung_Sammler_Stellventile valueStyle { desiredTemperature => 'style="text-align:right"', valveposition => 'style="text-align:right"', ventilmax => 'style="text-align:right"' }


Was mir noch aufgefallen ist: Die Sortierung ist nicht deterministisch, bedeutet, dass bei jedem Aktualisieren eines Devices mittels longpoll die Liste u.U. anders sortiert wird, wenn die Einträge der sortcolumn gleich sind.
Folgende Situation:
- Alle meine Heizungsventile sind geschlossen, ich zeige meine ReadingsGroup an, und sortiere absteigend nach der Ventilstellung. Da alle Werte 0% enthalten, wird nach dem Namen der Devices absteigend sortiert -> Super
- Jetzt drücke ich bei einem Thermostat auf Boost, damit ein Eintrag auf 80% wechselt. Nach der Aktualisierung mittels longpoll steht der Eintrag mit den 80% jetzt oben, der Rest der Liste mit den 0% wird jetzt hinter den 80% aufsteigend nach Name sortiert (Screenshot 2) -> Auch Super
- Wenn ich jetzt den Boostmodus wieder abschalte, wird irgendwie gar nicht mehr sortiert, und die Reihenfolge ist beliebig, und wechselt nach jedem longpoll-Aktualisieren eine Devices auch noch (Screenshot 3). Da ist ab jetzt also ständig Bewegung drin, da jedes Geräte ja alle 5 Minuten aktualisiert wird.

Außerdem wäre für mich eine Umkehrung des Pfeil-Icons passender. Momentan ist der Pfeil nach oben, wenn absteigend sortiert wird. Intuitiv wäre doch die dünne Spitze der kleine Zahlenwert, und die breite Kante der große Zahlenwert bei der Sortierung, oder? Aber das ist vielleicht auch einfach Geschmackssache :)

Grüße
Reiner

mi.ke

Zitat von: Reinerlein am 14 Mai 2017, 13:03:06
Außerdem wäre für mich eine Umkehrung des Pfeil-Icons passender. Momentan ist der Pfeil nach oben, wenn absteigend sortiert wird. Intuitiv wäre doch die dünne Spitze der kleine Zahlenwert, und die breite Kante der große Zahlenwert bei der Sortierung, oder? Aber das ist vielleicht auch einfach Geschmackssache :)


Definitiv Geschmackssache :)
Ich finde die Pfeilrichtung so wie z.Z. verwendet genau richtig.


Zitat von: justme1968 am 13 Mai 2017, 22:17:58

man kann aber über ein 'missbrauchtes' valueColumns attribut für dieses reading { "sorttable_customkey='$NUM'"} einen workaround bauen. damit wird einer tabellen zelle direkt der numerische teil des readings als key zugeordnet.


Damit funktioniert die Sortierung auch mit dem valueFormat und den Einheiten wie erwartet.
Klasse, dank Dir.

FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

stefan-dd

Kann man auch eine Sortierung versteckt fest vorgeben?
Ich möchte die Räume nach meiner Vorgabe sortieren. Entweder über ein Reading was nicht mit dargestellt wird, oder kann man die Reihenfolge fest vorgeben?
In der 1. Spalte habe ich die Räume stehen, die jetzt Alphabetisch sortiert werden. Das gefällt mir aber nicht.

HomeAuto_User

Hallo,

ich habe mal die Funktion ausgetestet mit "sortColumn Spalte" und erhalte sorttable.js line 203:
TypeError: table.tHead is null


Woran liegt dies? FHEM ist aktuell.

MfG
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

MadMax-FHEM

#24
Hallo,

gleiches Problem (fhem Update gestern).

Allerdings (wie hier: https://forum.fhem.de/index.php/topic,69858.0.html) nur wenn ich in den Raum "Everything" gehe.

Rufe ich einen Raum auf wo die readingsGroup und noch ein zwei andere Dinge drin sind funktioniert es ohne Fehler.

Bin gestern über die Möglichkeit zu sortieren gestolpert: TOLL!! DANKE!!

Ich habe eine readingsGroup wo ich mir die Batteriewechsel anzeige und da wäre es toll, wenn das nach Datum ginge :)

Zunächst hatte ich meine readingsGroup wie folgt definiert:

define rgLastBateryChange readingsGroup NAME=dmLastBatteryChange:.*

Allerdings habe ich dann den "Sortierungspfeil" beim ersten Datum.
Optisch unschön und die Zeile wurde dann nicht mit sortiert...
...doppelt unschön.

Daher habe ich erweitert auf:

define rgLastBateryChange readingsGroup <Gerät>,<>,<Datum> NAME=dmLastBatteryChange:.*
Also mit Headline.

Zuvor war es optisch unschön aber ohne genannten Fehler...
...jetzt war es optisch so wie gewollt aber eben mit dem genannten Fehler.

Ich habe mir mal die Stelle angeschaut (Zeile 203) und eigentlich wird ja etwas weiter oben geprüft, ob thead === undefined ist.
Hätte erwartet, dass dort dann entsprechend rausgesprungen wird?

Allerdings ist 'thead' bei mir eben nicht 'undefined' sondern eben 'null' (hab im Debugger geschaut)...

Hier ein list der readingsGroup:


Internals:
   DEF        <Gerät>,<>,<Datum> NAME=dmLastBatteryChange:.*
   NAME       rgLastBatteryChange
   NR         159
   NTFY_ORDER 50-rgLastBatteryChange
   STATE      Initialized
   TYPE       readingsGroup
   mayBeVisible 1
   CONTENT:
     dmLastBatteryChange 1
   CONTENT2:
   DEVICES:
     ARRAY(0x51345b0)
     ARRAY(0x471abb8)
   fhem:
     lastDefChange 51
     last_update 1509447859.39155
   helper:
     DEF
     mapping    $READING
     positions:
       dmLastBatteryChange.Heizkoerperthermostat_EssZi 1:1
       dmLastBatteryChange.Heizkoerperthermostat_FabiZi 1:2
       dmLastBatteryChange.Heizkoerperthermostat_Kueche 1:3
       dmLastBatteryChange.Heizkoerperthermostat_SchlaZi 1:4
       dmLastBatteryChange.Heizkoerperthermostat_WoZi 1:5
       dmLastBatteryChange.Wandthermostat_Bad 1:6
       dmLastBatteryChange.Wandthermostat_EssZi 1:7
       dmLastBatteryChange.Wandthermostat_FabiZi 1:8
       dmLastBatteryChange.Wandthermostat_Kueche 1:9
       dmLastBatteryChange.Wandthermostat_SchlaZi 1:10
       dmLastBatteryChange.Wandthermostat_WC 1:11
       dmLastBatteryChange.Wandthermostat_WoZi 1:12
     values:
       formated:
         undef
         ARRAY(0x50879e0)
         ARRAY(0x3d43de8)
         ARRAY(0x5149330)
         ARRAY(0x4cf6c98)
         ARRAY(0x51417a8)
         ARRAY(0x52bc500)
         ARRAY(0x50c1818)
         ARRAY(0x5166d98)
         ARRAY(0x4f049c8)
         ARRAY(0x52bd100)
         ARRAY(0x510f958)
         ARRAY(0x51071c0)
       orig:
         undef
         ARRAY(0x5135968)
         ARRAY(0x5181e98)
         ARRAY(0x435e610)
         ARRAY(0x52bb0c8)
         ARRAY(0x4ef98f0)
         ARRAY(0x51360a0)
         ARRAY(0x514b578)
         ARRAY(0x4ff96f0)
         ARRAY(0x52bcfb0)
         ARRAY(0x5334e10)
         ARRAY(0x4c9fa50)
         ARRAY(0x508d970)
       prefixsuffix:
         undef
         ARRAY(0x4d66928)
         ARRAY(0x5135998)
         ARRAY(0x4ef9398)
         ARRAY(0x5081af0)
         ARRAY(0x45fbef0)
         ARRAY(0x510ecb8)
         ARRAY(0x4a8f270)
         ARRAY(0x52bb170)
         ARRAY(0x5164c08)
         ARRAY(0x46d9310)
         ARRAY(0x514ba40)
         ARRAY(0x3ff6558)
Attributes:
   alias      Übersicht Batteriewechsel
   mapping    $READING
   nolinks    1
   room       Overview,Overview Battery
   sortColumn 3
   sortby     09


Wenn ich die Zeile drüber von Prüfung 'thead === undefined' auf 'thead === null' ändere habe ich (natürlich) den Fehler nicht aber welche anderen Auswirkungen das hat weiß ich nat. nicht...


//      if( table.tHead === undefined ) {
      if( table.tHead === null ) {
        console.log( 'doSort: table has no heading' );
        return;
      }


EDIT: Browser Firefox 56.0 (64-bit) auf Ubuntu 14.04 LTS 64Bit

EDIT3: Tritt auch bei meinem Android-Phone mit Chrome auf (also auch "nur", wenn ich auf die "Everything" Seite gehe. Die Batterie-Übersichtsseite [dort zeige ich nur 2 readingsGroup an eine davon mit dem sortColum] geht auch hier ohne Fehler)

EDIT2: noch ein list des Dummy


Internals:
   NAME       dmLastBatteryChange
   NR         161
   STATE      ???
   TYPE       dummy
   READINGS:
     2017-06-18 21:09:49   Heizkoerperthermostat_EssZi Battery changed:
     2017-07-08 12:36:35   Heizkoerperthermostat_FabiZi Battery changed:
     2017-08-31 22:59:44   Heizkoerperthermostat_Kueche Battery changed:
     2017-01-18 01:23:19   Heizkoerperthermostat_SchlaZi Battery changed:
     2016-11-14 00:55:22   Heizkoerperthermostat_WoZi Battery changed:
     2017-08-14 07:38:04   Wandthermostat_Bad Battery changed:
     2017-05-06 23:30:38   Wandthermostat_EssZi Battery changed:
     2017-05-03 07:28:45   Wandthermostat_FabiZi Battery changed:
     2017-03-19 11:55:00   Wandthermostat_Kueche Battery changed:
     2017-04-22 06:51:20   Wandthermostat_SchlaZi Battery changed:
     2017-03-19 11:56:34   Wandthermostat_WC Battery changed:
     2017-04-14 09:11:26   Wandthermostat_WoZi Battery changed:
Attributes:
   event-on-change-reading .*


Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

sd

Hallo,
tolle Funktionalität, aber wenn ich die Readingsgroup in das Dashboard einbinde, kommt folgender Fehler:

sorttable.js line 203:
TypeError: table.tHead is null

Hat jemand eine Idee?
Gruß
Steffen

BaronThoran

Moin,

Zitat von: sd am 04 November 2018, 20:24:34
sorttable.js line 203:
TypeError: table.tHead is null

ich habe das gleiche Problem. Wenn ich die Tabelle in einem seperaten Raum habe läuft alles, binde ich die Tabelle in einem Raum mit anderen Sachen ein bekomme ich diese Fehlermeldung.

mi.ke

Hallo Andrè

Zitat von: justme1968 am 13 Mai 2017, 22:17:58
man kann aber über ein 'missbrauchtes' valueColumns attribut für dieses reading { "sorttable_customkey='$NUM'"} einen workaround bauen. damit wird einer tabellen zelle direkt der numerische teil des readings als key zugeordnet.

Zitat von: mi.ke am 14 Mai 2017, 19:10:45
Damit funktioniert die Sortierung auch mit dem valueFormat und den Einheiten wie erwartet.
Klasse, dank Dir.

Zitat von: sd am 04 November 2018, 20:24:34
sorttable.js line 203:
TypeError: table.tHead is null
Den Fehler hab ich auch, allerdings nicht immer.

Was allerdings immer auftritt, sind Perl-Warnings im LOG.
Hier mal mit attr global stacktrace 1
2019.02.04 00:08:19 1: PERL WARNING: Use of uninitialized value $NUM in concatenation (.) or string at (eval 62718) line 1.
2019.02.04 00:08:19 1: stacktrace:
2019.02.04 00:08:19 1:     main::__ANON__                      called by (eval 62718) (1)
2019.02.04 00:08:19 1:     (eval)                              called by ./FHEM/33_readingsGroup.pm (357)
2019.02.04 00:08:19 1:     main::lookup2                       called by ./FHEM/33_readingsGroup.pm (875)
2019.02.04 00:08:19 1:     main::readingsGroup_2html           called by ./FHEM/33_readingsGroup.pm (1209)
2019.02.04 00:08:19 1:     main::readingsGroup_detailFn        called by ./FHEM/01_FHEMWEB.pm (3169)
2019.02.04 00:08:19 1:     main::FW_devState                   called by ./FHEM/01_FHEMWEB.pm (1727)
2019.02.04 00:08:19 1:     main::FW_makeDeviceLine             called by ./FHEM/01_FHEMWEB.pm (1892)
2019.02.04 00:08:19 1:     main::FW_showRoom                   called by ./FHEM/01_FHEMWEB.pm (1083)
2019.02.04 00:08:19 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (535)
2019.02.04 00:08:19 1:     main::FW_Read                       called by fhem.pl (3610)
2019.02.04 00:08:19 1:     main::CallFn                        called by fhem.pl (727)


Gab es bei readingsGroup eigentlich ein Update in der Richtung.
Ich hab im trunk zwar nichts gefunden, aber ich wollte trotzdem mal fragen.

Falls nicht, könntest Du in einer freien Minute bitte noch mal schauen.
Die Funktion in readingsGroup ist ja eigentlich genial.

thx'n'greetz

mi.ke
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

FunkOdyssey

Ich meine, dass der JavaScript-Fehler nur erscheint, wenn zeitgleich ein Plot angezeigt wird.

mi.ke

Zitat von: FunkOdyssey am 04 Februar 2019, 07:17:33
Ich meine, dass der JavaScript-Fehler nur erscheint, wenn zeitgleich ein Plot angezeigt wird.

Nein (zumindest bei meinen Installationen).

Gerade getestet, ich habe einen Raum ohne Plots, aber mit 3 ReadingGroups.
2 davon sind sortierbar.
JavaScript-Fehler kam trotzdem, inkl. der LOG-Einträge.
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

juemuc

Hallo justme1968,

siehts Du eine Möglichkeit auch mehrer Spalten zu sortieren?
Siehe auch hier https://forum.fhem.de/index.php/topic,112008.msg1063006.html#msg1063006

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

fhemfreund

Verwende auch die Sort-Funktion. Dabei habe ich 2 Punkte, die auch schon vorher angesprochen wurden:

Zitat von: stefan-dd am 13 Oktober 2017, 22:38:26
Kann man auch eine Sortierung versteckt fest vorgeben?
...

Zitat von: justme1968 am 12 Dezember 2016, 18:24:39
...
das neu einfärben des zeilen hintergrundes
...

gruss
  andre

Weiss jemand, ob das jetzt möglich, bzw. implementiert ist?

Andreas

uwirt

Das würde mich auch wundernehmen. Kann man den Sortierpfeil verschwinden lassen?
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart

juemuc

Zitat von: uwirt am 29 Dezember 2020, 11:02:46
Das würde mich auch wundernehmen. Kann man den Sortierpfeil verschwinden lassen?

ja das geht. Müsste hier irgendwo im Forum oder Wiki stehen. Ich finde es leider nicht auf die schnelle.

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

ph1959de

#34
Zitat von: juemuc am 29 Dezember 2020, 15:39:01
ja das geht. Müsste hier irgendwo im Forum oder Wiki stehen. Ich finde es leider nicht auf die schnelle.

---> hier

Update: Link korrigiert
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

mi.ke

Zitat von: ph1959de am 29 Dezember 2020, 16:05:43
---> hier

Kannst Du bitte nochmal den Link posten?
Der oben ist leer

Dank Dir
mi.ke
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

ToKa

Als Workaround für die Einfärbung der Zeilen:

table.sortable tbody tr:nth-child(even) td {
    background-color: #DDDDDD;
}

table.sortable tbody tr:nth-child(odd) td {
    background-color: #EEEEEE;
}


in der .css Eures Styles eintragen. Die Farben könnt Ihr natürlich entsprechend anpassen. Kleiner Nachteil, die Einfärbung beim "hover" über den Zeilen geht nicht mehr.

Viele Grüße
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight