[CommandRef][Bug] Konflikt zwischen Module Statistics und BOTVAC

Begonnen von Christoph Morrison, 18 Februar 2021, 13:19:00

Vorheriges Thema - Nächstes Thema

Christoph Morrison

Hallo zusammen,

in der Commandref funktioniert der Anker #statistics nicht korrekt, denn es gibt zwei A-Elemente mit name-Attribut "statistics":
BOTVAC: https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/70_BOTVAC.pm#L2911
Statistics: https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/98_statistics.pm#L1172 bzw. https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/98_statistics.pm#L1339

Man landet aktuell bei BOTVAC, wenn man oben im Inhaltsmenü statistics auswählt.

statistics hat hier IMHO Vorrang. @vuffiraa - magst du das bei dir beheben?

vuffiraa

FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Christoph Morrison


vuffiraa

Zitat von: Christoph Morrison am 18 Februar 2021, 13:36:56
Betrifft aber auch nur die englische CRef, nb.

Ich weiß auch warum, für mein Modul existiert nur eine englische Doku  ;)
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

rudolfkoenig

Ich empfehle Anker der Form  <a name="bla"> gegen <a name="MODULNAMEbla"> auszutauschen, damit das eindeutig wird.
fhemweb.js sucht bereits nach Anker dieser "neuen" Form, um die Hilfe fuer ein Attribut in der FHEMWEB-Detailansicht anzuzeigen.
Jetzt bleibt nur alle Module durchzugehen, und die Anker umzustellen.

Christoph Morrison

Wäre das nicht ne gute Gelegenheit um mal in Richtung id zu gehen? name ist in HTML5 ja nicht mehr valide.
Dann könnte man auch gleich sowas wie modulename.subsection in Kleinbuchstaben oder so vorgeben.

vuffiraa

So, das Problem sollte behoben sein. Der Link https://fhem.de/commandref.html#statistics zeigt jetzt auf das Hilfsmodul.

Was mir gestern bei der Lösungssuche aufgefallen war, dass ich auf die Schnelle keine Dokumentation zu dem Ankerpunkten finden konnte. Mein erster Gedanke war DevelopmentModuleIntro im Wiki. Dort wurden dann noch Guidelines zur Dokumentation erwähnt, aber auf beiden Seiten steht nix zu den Ankerpunkten.

Als Entwickler bin ich dann natürlich der Strategie "Die Wahrheit steht im Code" gefolgt und habe die Anzeige der Hilfe im Modul debugged. Dort stand dann, dass ich noch das alte Format verwendet hatte:
      var mtype = $("#content > #workbench a[name]").attr("name"), aTag;
      if(mtype) {
        var mv = (""+mtype+val).replace(/[^a-z0-9_]/ig,'_');
        aTag = $("#content > #workbench").find("a[name="+mv+"]");
      }
      if(!$(aTag).length) { // old style syntax without type
        var v = (val).replace(/[^a-z0-9_]/ig,'_');
        aTag = $("#content > #workbench").find("a[name="+v+"]");
      }
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

rudolfkoenig

ZitatWäre das nicht ne gute Gelegenheit um mal in Richtung id zu gehen? name ist in HTML5 ja nicht mehr valide.
Danke fuer den Hinweis, war mir nicht bewusst.

Die Umstellung ist leider nicht so einfach, aber ich habe schon mal eine erste Version versucht.
Erweitern musste ich fhemweb_modular.js, commandref_modular.pl, commandref_static.pl, und als Testkandidaten die drei MQTT2*.pm Dateien.
Bin gespannt, ob/was ich uebersehen habe.

Neuer Syntax (wird zusaetzlich zu den bisherigen akzeptiert):
<a id="MQTT2_DEVICE">
<a id="MQTT2_DEVICE-define">
<a id="MQTT2_DEVICE-attr">
<a id="MQTT2_DEVICE-attr-setList">
fhemweb.js sucht bei set/get nach id="MODUL-set-XXX" bzw. id="MODUL-get-XXX"

ZitatDann könnte man auch gleich sowas wie modulename.subsection in Kleinbuchstaben oder so vorgeben.
Das habe ich nicht verstanden.

Christoph Morrison

Zitat von: rudolfkoenig am 23 Februar 2021, 22:50:22
Das habe ich nicht verstanden.

Im Prinzip sowas wie du jetzt gemacht hast, $Device.$subsection, aber $Device-$subsection ist genauso gut.